The first step toward this goal might be to create an option type that will mark a value as either carrying a value of some type codice_21 (codice_21 can be any type) or carrying no value. The new type will be called codice_23 and values of that type can either contain a value of type codice_21, or be the empty value codice_25. A value codice_26 of type codice_21 which is defined but used in the context of codice_1 will be called codice_29. This is done to avoid confusion by differentiating between cases where a variable carries a defined value and those where it does not.