private void CreateHelperFunctions() {
MethodInfo meth;
Label lblClone;
// public static XPathNavigator SyncToNavigator(XPathNavigator, XPathNavigator);
meth = this.module.DefineMethod(
"SyncToNavigator",
typeof(XPathNavigator),
new Type[] {typeof(XPathNavigator), typeof(XPathNavigator)},
new string[] {null, null},
XmlILMethodAttributes.NonUser | XmlILMethodAttributes.Raw);
this.helper.MethodBegin(meth, null, false);
// if (navigatorThis != null && navigatorThis.MoveTo(navigatorThat))
// return navigatorThis;
lblClone = this.helper.DefineLabel();
this.helper.Emit(OpCodes.Ldarg_0);
this.helper.Emit(OpCodes.Brfalse, lblClone);
this.helper.Emit(OpCodes.Ldarg_0);
this.helper.Emit(OpCodes.Ldarg_1);
this.helper.Call(XmlILMethods.NavMoveTo);
this.helper.Emit(OpCodes.Brfalse, lblClone);
this.helper.Emit(OpCodes.Ldarg_0);
this.helper.Emit(OpCodes.Ret);
// LabelClone:
// return navigatorThat.Clone();
this.helper.MarkLabel(lblClone);
this.helper.Emit(OpCodes.Ldarg_1);
this.helper.Call(XmlILMethods.NavClone);
this.helper.MethodEnd();
}