edit: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;C627822
File: MutableStringOps.cs
===================================================================
--- $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;C627822  (server)    11/4/2008 8:16 AM
+++ Shelved Change: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;RandomRubyFixes08
@@ -2261,7 +2261,9 @@
                     j++; k++;
                 }
             }
-            str.Remove(k, j-k);
+            if (j > k) {
+                str.Remove(k, j - k);
+            }
 
             // if not modified return null
             return j == k ? null : str;
===================================================================
edit: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.BinaryContent.cs;C627822
File: MutableString.BinaryContent.cs
===================================================================
--- $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.BinaryContent.cs;C627822  (server)    11/4/2008 10:57 AM
+++ Shelved Change: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.BinaryContent.cs;RandomRubyFixes08
@@ -228,6 +228,7 @@
             }
 
             public override GenericRegex/*!*/ ToRegularExpression(RubyRegexOptions options) {
+                // TODO: Fix BinaryRegex and use instead
                 return new StringRegex(ToString(), options);
             }
 
===================================================================
edit: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyObject.Meta.cs;C625707
File: RubyObject.Meta.cs
===================================================================
--- $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyObject.Meta.cs;C625707  (server)    11/4/2008 2:19 PM
+++ Shelved Change: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyObject.Meta.cs;RandomRubyFixes08
@@ -26,13 +26,13 @@
         }
 
         internal class Meta : MetaObject {
-            public Meta(Expression/*!*/ expression, Restrictions/*!*/ restrictions, RubyObject/*!*/ value)
+            public Meta(Expression/*!*/ expression, Restrictions/*!*/ restrictions, IRubyObject/*!*/ value)
                 : base(expression, restrictions, value) {
                 ContractUtils.RequiresNotNull(value, "value");
             }
 
             public override MetaObject/*!*/ BindGetMember(GetMemberBinder/*!*/ binder) {
-                var self = (RubyObject)Value;
+                var self = (IRubyObject)Value;
                 return RubyGetMemberBinder.TryBind(self.Class.Context, binder, this) ?? binder.FallbackGetMember(this);
             }
 
===================================================================
edit: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Compiler/ReflectionCache.Generated.cs;C622329
File: ReflectionCache.Generated.cs
===================================================================
--- $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Compiler/ReflectionCache.Generated.cs;C622329  (server)    11/4/2008 2:25 PM
+++ Shelved Change: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Compiler/ReflectionCache.Generated.cs;RandomRubyFixes08
@@ -19,23 +19,17 @@
 
 namespace IronRuby.Compiler {
     internal static partial class Methods {
-        private static MethodInfo _SerializeObject, _HookupEvent, _CreateDelegateFromProc, _CreateDelegateFromMethod, _X, _UpdateProfileTicks, _CreateRfcForMethod, _BlockRetry, _MethodRetry, _EvalRetry, _BlockBreak, _MethodBreak, _EvalBreak, _MethodNext, _EvalNext, _MethodRedo, _EvalRedo, _BlockReturn, _EvalReturn, 
-        _BlockYield, _MethodYield, _EvalYield, _MethodProcCall, _CanRescue, _IsRetrySingleton, _PropagateRetrySingleton, _GetRetrySingleton, _GetCurrentMatchSuffix, _MatchLastInputLine, _MatchString, _CreateRegexB, _CreateRegexU, _CreateRegexE, _CreateRegexM, _CreateRegexBM, _CreateRegexUM, _CreateRegexEM, _CreateRegexMB, _CreateRegexMU, 
-        _CreateRegexME, _CreateRegexMM, _CreateRegexN, _CreateMutableStringB, _CreateMutableStringU, _CreateMutableStringE, _CreateMutableStringM, _CreateMutableStringBM, _CreateMutableStringUM, _CreateMutableStringEM, _CreateMutableStringMB, _CreateMutableStringMU, _CreateMutableStringME, _CreateMutableStringMM, _CreateMutableStringN, _CreateSymbolB, _CreateSymbolU, _CreateSymbolE, _CreateSymbolM, _CreateSymbolBM, 
-        _CreateSymbolUM, _CreateSymbolEM, _CreateSymbolMB, _CreateSymbolMU, _CreateSymbolME, _CreateSymbolMM, _CreateSymbolN, _CreateEncoding, _IsTrue, _IsFalse, _GetCurrentException, _SetCurrentExceptionAndStackTrace, _SetCurrentException, _CompareException, _CompareSplattedExceptions, _CompareDefaultException, _MakeWrongNumberOfArgumentsError, _MakeTopLevelSuperException, _MakeMissingSuperException, _MakeInvalidArgumentTypesError, 
-        _IsSuperCallTarget, _CreateInclusiveRange, _CreateExclusiveRange, _ToProcValidator, _ToStringValidator, _ToSValidator, _ToSymbolValidator, _ConvertSymbolIdToSymbol, _ConvertFixnumToSymbol, _ConvertMutableStringToSymbol, _ToRegexValidator, _ToArrayValidator, _ToFixnumValidator, _CreateTypeConversionError, _ConvertBignumToFixnum, _CheckVersionAndRuntime, _GetInstanceVariable, _IsDefinedInstanceVariable, _SetInstanceVariable, _GetObjectClassVariable, 
-        _GetClassVariable, _TryGetObjectClassVariable, _TryGetClassVariable, _IsDefinedObjectClassVariable, _IsDefinedClassVariable, _SetObjectClassVariable, _SetClassVariable, _GetInstanceData, _DeserializeObject, _IsProcConverterTarget, _CreateBfcForYield, _CreateBfcForMethodProcCall, _CreateBfcForProcCall, _CreateBfcForLibraryMethod, _LeaveProcConverter, _CreateMainTopLevelScope, _CreateTopLevelScope, _CreateWrappedTopLevelScope, _CreateModuleEvalScope, _CreateModuleScope, 
-        _CreateMethodScope, _CreateBlockScope, _TraceMethodCall, _TraceBlockCall, _PrintInteractiveResult, _GetLocalVariable, _SetLocalVariable, _GetContextFromScope, _GetContextFromMethod, _GetContextFromBlockParam, _GetContextFromProc, _GetEmptyScope, _DefineBlock, _InitializeBlock, _Yield0, _Yield1, _Yield2, _Yield3, _Yield4, _YieldN, 
-        _YieldSplat0, _YieldSplat1, _YieldSplat2, _YieldSplat3, _YieldSplat4, _YieldSplatN, _YieldSplatNRhs, _DefineMethod, _MethodDefined, _AliasMethod, _UndefineMethod, _IsDefinedMethod, _DefineGlobalModule, _DefineNestedModule, _DefineModule, _ConvertNamespaceToModule, _DefineSingletonClass, _DefineGlobalClass, _DefineNestedClass, _DefineClass, 
-        _GetGlobalConstant, _GetUnqualifiedConstant, _GetQualifiedConstant, _IsDefinedGlobalConstant, _IsDefinedUnqualifiedConstant, _IsDefinedQualifiedConstant, _SetGlobalConstant, _SetUnqualifiedConstant, _SetQualifiedConstant, _MakeArray0, _MakeArray1, _MakeArray2, _MakeArray3, _MakeArray4, _MakeArray5, _MakeArrayN, _MakeHash0, _MakeHash, _SplatAppend, _Splat, 
-        _SplatPair, _Unsplat, _GetArrayItem, _GetArraySuffix, _GetGlobalVariable, _IsDefinedGlobalVariable, _SetGlobalVariable, _AliasGlobalVariable, _GetCurrentMatchGroup, _GetCurrentMatchData, _GetCurrentMatchLastGroup, _GetCurrentMatchPrefix;
+        private static MethodInfo _CreateRfcForMethod, _BlockRetry, _MethodRetry, _EvalRetry, _BlockBreak, _MethodBreak, _EvalBreak, _MethodNext, _EvalNext, _MethodRedo, _EvalRedo, _BlockReturn, _EvalReturn, _BlockYield, _MethodYield, _EvalYield, _MethodProcCall, _CanRescue, _IsRetrySingleton, 
+        _PropagateRetrySingleton, _GetRetrySingleton, _UpdateProfileTicks, _IsProcConverterTarget, _CreateBfcForYield, _CreateBfcForMethodProcCall, _CreateBfcForProcCall, _CreateBfcForLibraryMethod, _LeaveProcConverter, _CreateRegexE, _CreateRegexM, _CreateRegexBM, _CreateRegexUM, _CreateRegexEM, _CreateRegexMB, _CreateRegexMU, _CreateRegexME, _CreateRegexMM, _CreateRegexN, _CreateMutableStringB, 
+        _CreateMutableStringU, _CreateMutableStringE, _CreateMutableStringM, _CreateMutableStringBM, _CreateMutableStringUM, _CreateMutableStringEM, _CreateMutableStringMB, _CreateMutableStringMU, _CreateMutableStringME, _CreateMutableStringMM, _CreateMutableStringN, _CreateSymbolB, _CreateSymbolU, _CreateSymbolE, _CreateSymbolM, _CreateSymbolBM, _CreateSymbolUM, _CreateSymbolEM, _CreateSymbolMB, _CreateSymbolMU, 
+        _CreateSymbolME, _CreateSymbolMM, _CreateSymbolN, _CreateEncoding, _IsTrue, _IsFalse, _GetCurrentException, _SetCurrentExceptionAndStackTrace, _SetCurrentException, _CompareException, _CompareSplattedExceptions, _CompareDefaultException, _MakeWrongNumberOfArgumentsError, _MakeTopLevelSuperException, _MakeMissingSuperException, _MakeInvalidArgumentTypesError, _IsSuperCallTarget, _CreateInclusiveRange, _CreateExclusiveRange, _GetMetaObject, 
+        _ToProcValidator, _ToStringValidator, _ToSValidator, _ToSymbolValidator, _ConvertSymbolIdToSymbol, _ConvertFixnumToSymbol, _ConvertMutableStringToSymbol, _ToRegexValidator, _ToArrayValidator, _ToFixnumValidator, _CreateTypeConversionError, _ConvertBignumToFixnum, _GetInstanceVariable, _IsDefinedInstanceVariable, _SetInstanceVariable, _GetObjectClassVariable, _GetClassVariable, _TryGetObjectClassVariable, _TryGetClassVariable, _IsDefinedObjectClassVariable, 
+        _IsDefinedClassVariable, _SetObjectClassVariable, _SetClassVariable, _GetInstanceData, _DeserializeObject, _SerializeObject, _HookupEvent, _CreateDelegateFromProc, _CreateDelegateFromMethod, _X, _CreateMainTopLevelScope, _CreateTopLevelScope, _CreateWrappedTopLevelScope, _CreateModuleEvalScope, _CreateModuleScope, _CreateMethodScope, _CreateBlockScope, _TraceMethodCall, _TraceBlockCall, _PrintInteractiveResult, 
+        _GetLocalVariable, _SetLocalVariable, _GetContextFromScope, _GetContextFromMethod, _GetContextFromBlockParam, _GetContextFromProc, _GetEmptyScope, _DefineBlock, _InitializeBlock, _Yield0, _Yield1, _Yield2, _Yield3, _Yield4, _YieldN, _YieldSplat0, _YieldSplat1, _YieldSplat2, _YieldSplat3, _YieldSplat4, 
+        _YieldSplatN, _YieldSplatNRhs, _DefineMethod, _MethodDefined, _AliasMethod, _UndefineMethod, _IsDefinedMethod, _DefineGlobalModule, _DefineNestedModule, _DefineModule, _ConvertNamespaceToModule, _DefineSingletonClass, _DefineGlobalClass, _DefineNestedClass, _DefineClass, _GetGlobalConstant, _GetUnqualifiedConstant, _GetQualifiedConstant, _IsDefinedGlobalConstant, _IsDefinedUnqualifiedConstant, 
+        _IsDefinedQualifiedConstant, _SetGlobalConstant, _SetUnqualifiedConstant, _SetQualifiedConstant, _MakeArray0, _MakeArray1, _MakeArray2, _MakeArray3, _MakeArray4, _MakeArray5, _MakeArrayN, _MakeHash0, _MakeHash, _SplatAppend, _Splat, _SplatPair, _Unsplat, _GetArrayItem, _GetArraySuffix, _GetGlobalVariable, 
+        _IsDefinedGlobalVariable, _SetGlobalVariable, _AliasGlobalVariable, _GetCurrentMatchGroup, _GetCurrentMatchData, _GetCurrentMatchLastGroup, _GetCurrentMatchPrefix, _GetCurrentMatchSuffix, _MatchLastInputLine, _MatchString, _CreateRegexB, _CreateRegexU;
         
-        public static MethodInfo/*!*/ SerializeObject { get { return _SerializeObject ?? (_SerializeObject = GetMethod(typeof(RubyOps), "SerializeObject")); } }
-        public static MethodInfo/*!*/ HookupEvent { get { return _HookupEvent ?? (_HookupEvent = GetMethod(typeof(RubyOps), "HookupEvent")); } }
-        public static MethodInfo/*!*/ CreateDelegateFromProc { get { return _CreateDelegateFromProc ?? (_CreateDelegateFromProc = GetMethod(typeof(RubyOps), "CreateDelegateFromProc")); } }
-        public static MethodInfo/*!*/ CreateDelegateFromMethod { get { return _CreateDelegateFromMethod ?? (_CreateDelegateFromMethod = GetMethod(typeof(RubyOps), "CreateDelegateFromMethod")); } }
-        public static MethodInfo/*!*/ X { get { return _X ?? (_X = GetMethod(typeof(RubyOps), "X")); } }
-        public static MethodInfo/*!*/ UpdateProfileTicks { get { return _UpdateProfileTicks ?? (_UpdateProfileTicks = GetMethod(typeof(RubyOps), "UpdateProfileTicks")); } }
         public static MethodInfo/*!*/ CreateRfcForMethod { get { return _CreateRfcForMethod ?? (_CreateRfcForMethod = GetMethod(typeof(RubyOps), "CreateRfcForMethod")); } }
         public static MethodInfo/*!*/ BlockRetry { get { return _BlockRetry ?? (_BlockRetry = GetMethod(typeof(RubyOps), "BlockRetry")); } }
         public static MethodInfo/*!*/ MethodRetry { get { return _MethodRetry ?? (_MethodRetry = GetMethod(typeof(RubyOps), "MethodRetry")); } }
@@ -57,11 +51,13 @@
         public static MethodInfo/*!*/ IsRetrySingleton { get { return _IsRetrySingleton ?? (_IsRetrySingleton = GetMethod(typeof(RubyOps), "IsRetrySingleton")); } }
         public static MethodInfo/*!*/ PropagateRetrySingleton { get { return _PropagateRetrySingleton ?? (_PropagateRetrySingleton = GetMethod(typeof(RubyOps), "PropagateRetrySingleton")); } }
         public static MethodInfo/*!*/ GetRetrySingleton { get { return _GetRetrySingleton ?? (_GetRetrySingleton = GetMethod(typeof(RubyOps), "GetRetrySingleton")); } }
-        public static MethodInfo/*!*/ GetCurrentMatchSuffix { get { return _GetCurrentMatchSuffix ?? (_GetCurrentMatchSuffix = GetMethod(typeof(RubyOps), "GetCurrentMatchSuffix")); } }
-        public static MethodInfo/*!*/ MatchLastInputLine { get { return _MatchLastInputLine ?? (_MatchLastInputLine = GetMethod(typeof(RubyOps), "MatchLastInputLine")); } }
-        public static MethodInfo/*!*/ MatchString { get { return _MatchString ?? (_MatchString = GetMethod(typeof(RubyOps), "MatchString")); } }
-        public static MethodInfo/*!*/ CreateRegexB { get { return _CreateRegexB ?? (_CreateRegexB = GetMethod(typeof(RubyOps), "CreateRegexB")); } }
-        public static MethodInfo/*!*/ CreateRegexU { get { return _CreateRegexU ?? (_CreateRegexU = GetMethod(typeof(RubyOps), "CreateRegexU")); } }
+        public static MethodInfo/*!*/ UpdateProfileTicks { get { return _UpdateProfileTicks ?? (_UpdateProfileTicks = GetMethod(typeof(RubyOps), "UpdateProfileTicks")); } }
+        public static MethodInfo/*!*/ IsProcConverterTarget { get { return _IsProcConverterTarget ?? (_IsProcConverterTarget = GetMethod(typeof(RubyOps), "IsProcConverterTarget")); } }
+        public static MethodInfo/*!*/ CreateBfcForYield { get { return _CreateBfcForYield ?? (_CreateBfcForYield = GetMethod(typeof(RubyOps), "CreateBfcForYield")); } }
+        public static MethodInfo/*!*/ CreateBfcForMethodProcCall { get { return _CreateBfcForMethodProcCall ?? (_CreateBfcForMethodProcCall = GetMethod(typeof(RubyOps), "CreateBfcForMethodProcCall")); } }
+        public static MethodInfo/*!*/ CreateBfcForProcCall { get { return _CreateBfcForProcCall ?? (_CreateBfcForProcCall = GetMethod(typeof(RubyOps), "CreateBfcForProcCall")); } }
+        public static MethodInfo/*!*/ CreateBfcForLibraryMethod { get { return _CreateBfcForLibraryMethod ?? (_CreateBfcForLibraryMethod = GetMethod(typeof(RubyOps), "CreateBfcForLibraryMethod")); } }
+        public static MethodInfo/*!*/ LeaveProcConverter { get { return _LeaveProcConverter ?? (_LeaveProcConverter = GetMethod(typeof(RubyOps), "LeaveProcConverter")); } }
         public static MethodInfo/*!*/ CreateRegexE { get { return _CreateRegexE ?? (_CreateRegexE = GetMethod(typeof(RubyOps), "CreateRegexE")); } }
         public static MethodInfo/*!*/ CreateRegexM { get { return _CreateRegexM ?? (_CreateRegexM = GetMethod(typeof(RubyOps), "CreateRegexM")); } }
         public static MethodInfo/*!*/ CreateRegexBM { get { return _CreateRegexBM ?? (_CreateRegexBM = GetMethod(typeof(RubyOps), "CreateRegexBM")); } }
@@ -112,6 +108,7 @@
         public static MethodInfo/*!*/ IsSuperCallTarget { get { return _IsSuperCallTarget ?? (_IsSuperCallTarget = GetMethod(typeof(RubyOps), "IsSuperCallTarget")); } }
         public static MethodInfo/*!*/ CreateInclusiveRange { get { return _CreateInclusiveRange ?? (_CreateInclusiveRange = GetMethod(typeof(RubyOps), "CreateInclusiveRange")); } }
         public static MethodInfo/*!*/ CreateExclusiveRange { get { return _CreateExclusiveRange ?? (_CreateExclusiveRange = GetMethod(typeof(RubyOps), "CreateExclusiveRange")); } }
+        public static MethodInfo/*!*/ GetMetaObject { get { return _GetMetaObject ?? (_GetMetaObject = GetMethod(typeof(RubyOps), "GetMetaObject")); } }
         public static MethodInfo/*!*/ ToProcValidator { get { return _ToProcValidator ?? (_ToProcValidator = GetMethod(typeof(RubyOps), "ToProcValidator")); } }
         public static MethodInfo/*!*/ ToStringValidator { get { return _ToStringValidator ?? (_ToStringValidator = GetMethod(typeof(RubyOps), "ToStringValidator")); } }
         public static MethodInfo/*!*/ ToSValidator { get { return _ToSValidator ?? (_ToSValidator = GetMethod(typeof(RubyOps), "ToSValidator")); } }
@@ -124,7 +121,6 @@
         public static MethodInfo/*!*/ ToFixnumValidator { get { return _ToFixnumValidator ?? (_ToFixnumValidator = GetMethod(typeof(RubyOps), "ToFixnumValidator")); } }
         public static MethodInfo/*!*/ CreateTypeConversionError { get { return _CreateTypeConversionError ?? (_CreateTypeConversionError = GetMethod(typeof(RubyOps), "CreateTypeConversionError")); } }
         public static MethodInfo/*!*/ ConvertBignumToFixnum { get { return _ConvertBignumToFixnum ?? (_ConvertBignumToFixnum = GetMethod(typeof(RubyOps), "ConvertBignumToFixnum")); } }
-        public static MethodInfo/*!*/ CheckVersionAndRuntime { get { return _CheckVersionAndRuntime ?? (_CheckVersionAndRuntime = GetMethod(typeof(RubyOps), "CheckVersionAndRuntime")); } }
         public static MethodInfo/*!*/ GetInstanceVariable { get { return _GetInstanceVariable ?? (_GetInstanceVariable = GetMethod(typeof(RubyOps), "GetInstanceVariable")); } }
         public static MethodInfo/*!*/ IsDefinedInstanceVariable { get { return _IsDefinedInstanceVariable ?? (_IsDefinedInstanceVariable = GetMethod(typeof(RubyOps), "IsDefinedInstanceVariable")); } }
         public static MethodInfo/*!*/ SetInstanceVariable { get { return _SetInstanceVariable ?? (_SetInstanceVariable = GetMethod(typeof(RubyOps), "SetInstanceVariable")); } }
@@ -138,12 +134,11 @@
         public static MethodInfo/*!*/ SetClassVariable { get { return _SetClassVariable ?? (_SetClassVariable = GetMethod(typeof(RubyOps), "SetClassVariable")); } }
         public static MethodInfo/*!*/ GetInstanceData { get { return _GetInstanceData ?? (_GetInstanceData = GetMethod(typeof(RubyOps), "GetInstanceData")); } }
         public static MethodInfo/*!*/ DeserializeObject { get { return _DeserializeObject ?? (_DeserializeObject = GetMethod(typeof(RubyOps), "DeserializeObject")); } }
-        public static MethodInfo/*!*/ IsProcConverterTarget { get { return _IsProcConverterTarget ?? (_IsProcConverterTarget = GetMethod(typeof(RubyOps), "IsProcConverterTarget")); } }
-        public static MethodInfo/*!*/ CreateBfcForYield { get { return _CreateBfcForYield ?? (_CreateBfcForYield = GetMethod(typeof(RubyOps), "CreateBfcForYield")); } }
-        public static MethodInfo/*!*/ CreateBfcForMethodProcCall { get { return _CreateBfcForMethodProcCall ?? (_CreateBfcForMethodProcCall = GetMethod(typeof(RubyOps), "CreateBfcForMethodProcCall")); } }
-        public static MethodInfo/*!*/ CreateBfcForProcCall { get { return _CreateBfcForProcCall ?? (_CreateBfcForProcCall = GetMethod(typeof(RubyOps), "CreateBfcForProcCall")); } }
-        public static MethodInfo/*!*/ CreateBfcForLibraryMethod { get { return _CreateBfcForLibraryMethod ?? (_CreateBfcForLibraryMethod = GetMethod(typeof(RubyOps), "CreateBfcForLibraryMethod")); } }
-        public static MethodInfo/*!*/ LeaveProcConverter { get { return _LeaveProcConverter ?? (_LeaveProcConverter = GetMethod(typeof(RubyOps), "LeaveProcConverter")); } }
+        public static MethodInfo/*!*/ SerializeObject { get { return _SerializeObject ?? (_SerializeObject = GetMethod(typeof(RubyOps), "SerializeObject")); } }
+        public static MethodInfo/*!*/ HookupEvent { get { return _HookupEvent ?? (_HookupEvent = GetMethod(typeof(RubyOps), "HookupEvent")); } }
+        public static MethodInfo/*!*/ CreateDelegateFromProc { get { return _CreateDelegateFromProc ?? (_CreateDelegateFromProc = GetMethod(typeof(RubyOps), "CreateDelegateFromProc")); } }
+        public static MethodInfo/*!*/ CreateDelegateFromMethod { get { return _CreateDelegateFromMethod ?? (_CreateDelegateFromMethod = GetMethod(typeof(RubyOps), "CreateDelegateFromMethod")); } }
+        public static MethodInfo/*!*/ X { get { return _X ?? (_X = GetMethod(typeof(RubyOps), "X")); } }
         public static MethodInfo/*!*/ CreateMainTopLevelScope { get { return _CreateMainTopLevelScope ?? (_CreateMainTopLevelScope = GetMethod(typeof(RubyOps), "CreateMainTopLevelScope")); } }
         public static MethodInfo/*!*/ CreateTopLevelScope { get { return _CreateTopLevelScope ?? (_CreateTopLevelScope = GetMethod(typeof(RubyOps), "CreateTopLevelScope")); } }
         public static MethodInfo/*!*/ CreateWrappedTopLevelScope { get { return _CreateWrappedTopLevelScope ?? (_CreateWrappedTopLevelScope = GetMethod(typeof(RubyOps), "CreateWrappedTopLevelScope")); } }
@@ -221,6 +216,11 @@
         public static MethodInfo/*!*/ GetCurrentMatchData { get { return _GetCurrentMatchData ?? (_GetCurrentMatchData = GetMethod(typeof(RubyOps), "GetCurrentMatchData")); } }
         public static MethodInfo/*!*/ GetCurrentMatchLastGroup { get { return _GetCurrentMatchLastGroup ?? (_GetCurrentMatchLastGroup = GetMethod(typeof(RubyOps), "GetCurrentMatchLastGroup")); } }
         public static MethodInfo/*!*/ GetCurrentMatchPrefix { get { return _GetCurrentMatchPrefix ?? (_GetCurrentMatchPrefix = GetMethod(typeof(RubyOps), "GetCurrentMatchPrefix")); } }
+        public static MethodInfo/*!*/ GetCurrentMatchSuffix { get { return _GetCurrentMatchSuffix ?? (_GetCurrentMatchSuffix = GetMethod(typeof(RubyOps), "GetCurrentMatchSuffix")); } }
+        public static MethodInfo/*!*/ MatchLastInputLine { get { return _MatchLastInputLine ?? (_MatchLastInputLine = GetMethod(typeof(RubyOps), "MatchLastInputLine")); } }
+        public static MethodInfo/*!*/ MatchString { get { return _MatchString ?? (_MatchString = GetMethod(typeof(RubyOps), "MatchString")); } }
+        public static MethodInfo/*!*/ CreateRegexB { get { return _CreateRegexB ?? (_CreateRegexB = GetMethod(typeof(RubyOps), "CreateRegexB")); } }
+        public static MethodInfo/*!*/ CreateRegexU { get { return _CreateRegexU ?? (_CreateRegexU = GetMethod(typeof(RubyOps), "CreateRegexU")); } }
         
         public static MethodInfo/*!*/ CreateRegex(string/*!*/ suffix) {
             switch (suffix) {
===================================================================
edit: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Compiler/Generation/RubyTypeBuilder.cs;C576154
File: RubyTypeBuilder.cs
===================================================================
--- $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Compiler/Generation/RubyTypeBuilder.cs;C576154  (server)    11/4/2008 2:20 PM
+++ Shelved Change: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Compiler/Generation/RubyTypeBuilder.cs;RandomRubyFixes08
@@ -14,6 +14,7 @@
  * ***************************************************************************/
 
 using System;
+using System.Dynamic.Binders;
 using System.Reflection;
 using System.Reflection.Emit;
 using System.Runtime.Serialization;
@@ -77,8 +78,7 @@
             Assert.NotNull(re);
             re.ClassField = _classField;
 
-            // TODO: use MetaObjects
-            // DefineDynamicObjectImplementation();
+            DefineDynamicObjectImplementation();
 
             // we need to get the right execution context
 #if OBSOLETE
@@ -277,29 +277,24 @@
 #endif
 
         private void DefineDynamicObjectImplementation() {
-            _tb.AddInterfaceImplementation(typeof(IOldDynamicObject));
+            _tb.AddInterfaceImplementation(typeof(IDynamicObject));
 
-            // MetaObjectBuilder<T>! IOldDynamicObject.GetRule<T>(OldDynamicAction! action, CodeContext! context, object[]! args) where T : class {
-            //   return RubyOps.GetClassRule<T>(action, context, args);
+            // MetaObject! IDynamicObject.GetMetaObject(Expression! parameter) {
+            //   return RubyOps.GetMetaObject(this, parameter);
             // }
 
-            MethodInfo decl = typeof(IOldDynamicObject).GetMethod("GetRule");
+            MethodInfo decl = typeof(IDynamicObject).GetMethod("GetMetaObject");
             MethodBuilder impl = _tb.DefineMethod(
                 decl.Name,
                 decl.Attributes & ~(MethodAttributes.Abstract | MethodAttributes.ReservedMask),
                 decl.ReturnType,
                 ReflectionUtils.GetParameterTypes(decl.GetParameters())
             );
-            GenericTypeParameterBuilder[] types = impl.DefineGenericParameters("T");
-            types[0].SetGenericParameterAttributes(GenericParameterAttributes.ReferenceTypeConstraint);
 
             ILGen il = new ILGen(impl.GetILGenerator());
-
-            MethodInfo mi = typeof(RubyOps).GetMethod("GetClassRule").MakeGenericMethod(types);
+            il.EmitLoadArg(0);
             il.EmitLoadArg(1);
-            il.EmitLoadArg(2);
-            il.EmitLoadArg(3);
-            il.EmitCall(mi);
+            il.EmitCall(Methods.GetMetaObject);
             il.Emit(OpCodes.Ret);
 
             _tb.DefineMethodOverride(impl, decl);
===================================================================
edit: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Compiler/Generation/RubyTypeEmitter.cs;C622329
File: RubyTypeEmitter.cs
===================================================================
--- $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Compiler/Generation/RubyTypeEmitter.cs;C622329  (server)    11/4/2008 2:21 PM
+++ Shelved Change: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Compiler/Generation/RubyTypeEmitter.cs;RandomRubyFixes08
@@ -121,21 +121,21 @@
         }
 
         protected override bool TryGetName(Type clrType, MethodInfo mi, out string name) {
-            name = mi.Name;
+            name = RubyUtils.MangleName(mi.Name);
             return true;
         }
 
         protected override bool TryGetName(Type clrType, EventInfo ei, MethodInfo mi, out string name) {
             // TODO: Determine naming convention?
-            name = ei.Name;
+            name = RubyUtils.MangleName(ei.Name);
             return true;
         }
 
         protected override bool TryGetName(Type clrType, PropertyInfo pi, MethodInfo mi, out string name) {
             if (mi.Name.StartsWith("get_")) {
-                name = pi.Name;
+                name = RubyUtils.MangleName(pi.Name);
             } else if (mi.Name.StartsWith("set_")) {
-                name = pi.Name + "=";
+                name = RubyUtils.MangleName(pi.Name) + "=";
             } else {
                 name = null;
                 return false;
===================================================================
edit: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyOps.cs;C625196
File: RubyOps.cs
===================================================================
--- $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyOps.cs;C625196  (server)    11/4/2008 2:22 PM
+++ Shelved Change: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyOps.cs;RandomRubyFixes08
@@ -17,6 +17,8 @@
 using System.Collections;
 using System.Collections.Generic;
 using System.Diagnostics;
+using System.Dynamic.Binders;
+using System.Linq.Expressions;
 using System.Reflection;
 using System.Runtime.CompilerServices;
 using System.Runtime.Serialization;
@@ -1292,6 +1294,11 @@
             return new Range(scope.RubyContext, begin, end, true);
         }
 
+        [Emitted]
+        public static MetaObject/*!*/ GetMetaObject(IRubyObject/*!*/ obj, Expression/*!*/ parameter) {
+            return new RubyObject.Meta(parameter, Restrictions.Empty, obj);
+        }
+
         #region Dynamic Actions
 
         [Emitted] //ProtocolConversionAction
===================================================================
edit: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/Engine/Emitter.cs;C533798
File: Emitter.cs
===================================================================
--- $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/Engine/Emitter.cs;C533798  (server)    11/4/2008 1:24 PM
+++ Shelved Change: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/Engine/Emitter.cs;RandomRubyFixes08
@@ -152,13 +152,13 @@
                         expectDocumentEnd(); 
                         break;
                     case EmitterState.FIRST_FLOW_SEQUENCE_ITEM: 
-                        expectFirstFlowSequenceItem();
+                        expectFlowSequenceItem(true);
                         break;
                     case EmitterState.FLOW_SEQUENCE_ITEM: 
-                        expectFlowSequenceItem();
+                        expectFlowSequenceItem(false);
                         break;
                     case EmitterState.FIRST_FLOW_MAPPING_KEY: 
-                        expectFirstFlowMappingKey(); 
+                        expectFlowMappingKey(true); 
                         break;
                     case EmitterState.FLOW_MAPPING_SIMPLE_VALUE: 
                         expectFlowMappingSimpleValue();
@@ -167,13 +167,13 @@
                         expectFlowMappingValue();
                         break;
                     case EmitterState.FLOW_MAPPING_KEY: 
-                        expectFlowMappingKey();
+                        expectFlowMappingKey(false);
                         break;
                     case EmitterState.BLOCK_SEQUENCE_ITEM: 
                         expectBlockSequenceItem(false); 
                         break;
-                    case EmitterState.FIRST_BLOCK_MAPPING_KEY: 
-                        expectFirstBlockMappingKey();
+                    case EmitterState.FIRST_BLOCK_MAPPING_KEY:
+                        expectBlockMappingKey(true);
                         break;
                     case EmitterState.BLOCK_MAPPING_SIMPLE_VALUE: 
                         expectBlockMappingSimpleValue();
@@ -968,33 +968,20 @@
             }
         }
 
-        private void expectFirstFlowSequenceItem() {
+        private void expectFlowSequenceItem(bool first) {
             if (_event is SequenceEndEvent) {
                 _indent = _indents.Pop();
                 _flowLevel--;
-                writeIndicator("]", false, false, false);
-                _state = _states.Pop();
-            } else {
-                if (canonical || _column > _bestWidth) {
-                    writeIndent();
-                }
-                _states.Push(EmitterState.FLOW_SEQUENCE_ITEM);
-                expectNode(false, true, false, false);
-            }
-        }
-
-        private void expectFlowSequenceItem() {
-            if (_event is SequenceEndEvent) {
-                _indent = _indents.Pop();
-                _flowLevel--;
-                if (canonical) {
+                if (canonical && !first) {
                     writeIndicator(",", false, false, false);
                     writeIndent();
                 }
                 writeIndicator("]", false, false, false);
                 _state = _states.Pop();
             } else {
-                writeIndicator(",", false, false, false);
+                if (!first) {
+                    writeIndicator(",", false, false, false);
+                }
                 if (canonical || _column > _bestWidth) {
                     writeIndent();
                 }
@@ -1003,27 +990,6 @@
             }
         }
 
-        private void expectFirstFlowMappingKey() {
-            if (_event is MappingEndEvent) {
-                _indent = _indents.Pop();
-                _flowLevel--;
-                writeIndicator("}", false, false, false);
-                _state = _states.Pop();
-            } else {
-                if (canonical || _column > _bestWidth) {
-                    writeIndent();
-                }
-                if (!canonical && checkSimpleKey()) {
-                    _states.Push(EmitterState.FLOW_MAPPING_SIMPLE_VALUE);
-                    expectNode(false, false, true, true);
-                } else {
-                    writeIndicator("?", true, false, false);
-                    _states.Push(EmitterState.FLOW_MAPPING_VALUE);
-                    expectNode(false, false, true, false);
-                }
-            }
-        }
-
         private void expectFlowMappingSimpleValue() {
             writeIndicator(": ", false, true, false);
             _states.Push(EmitterState.FLOW_MAPPING_KEY);
@@ -1039,18 +1005,20 @@
             expectNode(false, false, true, false);
         }
 
-        private void expectFlowMappingKey() {
+        private void expectFlowMappingKey(bool first) {
             if (_event is MappingEndEvent) {
                 _indent = _indents.Pop();
                 _flowLevel--;
-                if (canonical) {
+                if (canonical && !first) {
                     writeIndicator(",", false, false, false);
                     writeIndent();
                 }
                 writeIndicator("}", false, false, false);
                 _state = _states.Pop();
             } else {
-                writeIndicator(",", false, false, false);
+                if (!first) {
+                    writeIndicator(",", false, false, false);
+                }
                 if (canonical || _column > _bestWidth) {
                     writeIndent();
                 }
@@ -1077,10 +1045,6 @@
             }
         }
 
-        private void expectFirstBlockMappingKey() {
-            expectBlockMappingKey(true);
-        }
-
         private void expectBlockMappingSimpleValue() {
             writeIndicator(": ", false, true, false);
             _states.Push(EmitterState.BLOCK_MAPPING_KEY);
===================================================================
edit: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/Engine/Serializer.cs;C613985
File: Serializer.cs
===================================================================
--- $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/Engine/Serializer.cs;C613985  (server)    11/4/2008 1:49 PM
+++ Shelved Change: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/Engine/Serializer.cs;RandomRubyFixes08
@@ -121,13 +121,11 @@
             string tAlias;
             _anchors.TryGetValue(node, out tAlias);
 
-            if (_serializedNodes.ContainsKey(node)) {
-                if (tAlias != null) {
-                    _emitter.Emit(new AliasEvent(tAlias));
-                }
+            if (_serializedNodes.ContainsKey(node) && tAlias != null) {
+                _emitter.Emit(new AliasEvent(tAlias));
             } else {
 
-                _serializedNodes.Add(node, null);
+                _serializedNodes[node] = null;
                 //_resolver.descendResolver(parent, index);
 
                 ScalarNode scalar;
===================================================================
