public override void Emit(CodeGen g, Type from, Type to) { var l = g.LocalInitedFromStack(from); Type toUnderlying = Helpers.GetNullableUnderlyingType(to); Type fromUnderlying = Helpers.GetNullableUnderlyingType(from); var cond = new Conditional( l.Property("HasValue"), new NewObject( g.TypeMapper.TypeInfo.FindConstructor(to, new Operand[] { new FakeTypedOperand(toUnderlying), }), new Operand[] { new ConversationWrapper(_internalConversation, l.Property("Value"), fromUnderlying, toUnderlying) }), new DefaultValue(to)); //GetImplicit(l.Property("Value"), toUnderlying, false, g.TypeMapper), l, from, toUnderlying cond.EmitGet(g); }