internal void EmitPoll(AsyncBlockContext context)
 {
     context.IL.MarkLabel(pollLabel);
     context.IL.Emit(OpCodes.Ldarg_0);
     context.IL.Emit(OpCodes.Ldfld, futureField);
     context.IL.EmitCall(OpCodes.Callvirt, futureField.FieldType.GetMethod("PollValue"), 1);
     futureResultVar.EmitStore(context);
     futureResultVar.EmitLoad(context);
     context.IL.Emit(OpCodes.Ldfld, futureResultVar.LocalType.GetField("ready"));
     context.IL.Emit(OpCodes.Brfalse, context.notReady);
     context.IL.Emit(OpCodes.Br, context.resume);
 }
 internal void EmitRestore(AsyncBlockContext context)
 {
     context.IL.Emit(OpCodes.Ldarg_0);
     context.IL.Emit(OpCodes.Ldfld, storageField);
     localRef.EmitStore(context);
 }