protected override void TranslateToILObject(ILGenerator il, Type obType, bool noValue){
if (noValue && obType.IsValueType && obType != Typeob.Enum){
if (this.temp == null)
this.rootObject.TranslateToILReference(il, obType);
else{
Type tempType = Convert.ToType(this.rootObject.InferType(null));
if (tempType == obType)
il.Emit(OpCodes.Ldloca, this.temp);
else{
il.Emit(OpCodes.Ldloc, this.temp);
Convert.Emit(this, il, tempType, obType);
Convert.EmitLdloca(il, obType);
}
}
}else{
if (this.temp == null || this.rootObject is ThisLiteral)
this.rootObject.TranslateToIL(il, obType);
else{
il.Emit(OpCodes.Ldloc, this.temp);
Type tempType = Convert.ToType(this.rootObject.InferType(null));
Convert.Emit(this, il, tempType, obType);
}
}
}