edit: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;C626515
File: Initializers.Generated.cs
===================================================================
--- $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;C626515  (server)    11/3/2008 10:17 PM
+++ Shelved Change: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;RandomRubyFixes07
@@ -25,6 +25,9 @@
 [assembly: IronRuby.Runtime.RubyLibraryAttribute(typeof(IronRuby.StandardLibrary.FunctionControl.FunctionControlLibraryInitializer))]
 [assembly: IronRuby.Runtime.RubyLibraryAttribute(typeof(IronRuby.StandardLibrary.FileControl.FileControlLibraryInitializer))]
 [assembly: IronRuby.Runtime.RubyLibraryAttribute(typeof(IronRuby.StandardLibrary.BigDecimal.BigDecimalLibraryInitializer))]
+[assembly: IronRuby.Runtime.RubyLibraryAttribute(typeof(IronRuby.StandardLibrary.Iconv.IconvLibraryInitializer))]
+[assembly: IronRuby.Runtime.RubyLibraryAttribute(typeof(IronRuby.StandardLibrary.Clr.ClrLibraryInitializer))]
+[assembly: IronRuby.Runtime.RubyLibraryAttribute(typeof(IronRuby.StandardLibrary.ParseTree.ParseTreeLibraryInitializer))]
 
 namespace IronRuby.Builtins {
     public sealed class BuiltinsLibraryInitializer : IronRuby.Builtins.LibraryInitializer {
@@ -149,6 +152,7 @@
             IronRuby.Builtins.RubyClass def16 = DefineGlobalClass("File", typeof(IronRuby.Builtins.RubyFile), def32, new System.Action<IronRuby.Builtins.RubyModule>(LoadFile_Instance), new System.Action<IronRuby.Builtins.RubyModule>(LoadFile_Class), IronRuby.Builtins.RubyModule.EmptyArray, new System.Delegate[] {
                 new System.Func<IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.RubyIO>(IronRuby.Builtins.RubyFileOps.CreateIO),
                 new System.Func<IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.Builtins.RubyIO>(IronRuby.Builtins.RubyFileOps.CreateIO),
+                new System.Func<IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, System.Int32, IronRuby.Builtins.RubyIO>(IronRuby.Builtins.RubyFileOps.CreateIO),
                 new System.Func<IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Int32, IronRuby.Builtins.RubyIO>(IronRuby.Builtins.RubyFileOps.CreateIO),
                 new System.Func<IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Int32, System.Int32, IronRuby.Builtins.RubyIO>(IronRuby.Builtins.RubyFileOps.CreateIO),
             });
@@ -1226,6 +1230,7 @@
                 new System.Func<IronRuby.Runtime.BlockParam, IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Int32, System.Object>(IronRuby.Builtins.RubyFileOps.Open),
                 new System.Func<IronRuby.Runtime.BlockParam, IronRuby.Builtins.RubyClass, System.Object, System.Int32, System.Object>(IronRuby.Builtins.RubyFileOps.Open),
                 new System.Func<IronRuby.Runtime.BlockParam, IronRuby.Builtins.RubyClass, System.Object, System.Int32, System.Int32, System.Object>(IronRuby.Builtins.RubyFileOps.Open),
+                new System.Func<IronRuby.Runtime.BlockParam, IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, System.Int32, System.Object>(IronRuby.Builtins.RubyFileOps.Open),
             });
             
             module.DefineLibraryMethod("owned?", 0x31, new System.Delegate[] {
@@ -2222,6 +2227,7 @@
                 new System.Func<IronRuby.Runtime.RubyContext, IronRuby.Runtime.BlockParam, IronRuby.Builtins.RubyClass, System.Int32, System.Object>(IronRuby.Builtins.RubyIOOps.Open),
                 new System.Func<IronRuby.Runtime.RubyContext, IronRuby.Runtime.BlockParam, IronRuby.Builtins.RubyClass, System.Int32, IronRuby.Builtins.MutableString, System.Object>(IronRuby.Builtins.RubyIOOps.Open),
                 new System.Func<IronRuby.Runtime.RubyContext, IronRuby.Runtime.BlockParam, IronRuby.Builtins.RubyClass, System.Int32, System.Object, System.Object>(IronRuby.Builtins.RubyIOOps.Open),
+                new System.Func<IronRuby.Runtime.RubyContext, IronRuby.Runtime.BlockParam, IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Int32, System.Object>(IronRuby.Builtins.RubyIOOps.Open),
             });
             
             module.DefineLibraryMethod("read", 0x31, new System.Delegate[] {
@@ -4405,6 +4411,14 @@
                 new System.Func<IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString>(IronRuby.Builtins.MutableStringOps.TrInPlace),
             });
             
+            module.DefineLibraryMethod("tr_s", 0x29, new System.Delegate[] {
+                new System.Func<IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString>(IronRuby.Builtins.MutableStringOps.TrSqueeze),
+            });
+            
+            module.DefineLibraryMethod("tr_s!", 0x29, new System.Delegate[] {
+                new System.Func<IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString>(IronRuby.Builtins.MutableStringOps.TrSqueezeInPlace),
+            });
+            
             module.DefineLibraryMethod("unpack", 0x29, new System.Delegate[] {
                 new System.Func<IronRuby.Runtime.RubyContext, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.Builtins.RubyArray>(IronRuby.Builtins.MutableStringOps.Unpack),
             });
@@ -7221,3 +7235,97 @@
     }
 }
 
+namespace IronRuby.StandardLibrary.Iconv {
+    public sealed class IconvLibraryInitializer : IronRuby.Builtins.LibraryInitializer {
+        protected override void LoadModules() {
+            IronRuby.Builtins.RubyClass classRef0 = GetClass(typeof(System.Object));
+            
+            
+            DefineGlobalClass("Iconv", typeof(IronRuby.StandardLibrary.Iconv.Iconv), classRef0, new System.Action<IronRuby.Builtins.RubyModule>(LoadIconv_Instance), new System.Action<IronRuby.Builtins.RubyModule>(LoadIconv_Class), IronRuby.Builtins.RubyModule.EmptyArray, new System.Delegate[] {
+                new System.Func<IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.StandardLibrary.Iconv.Iconv>(IronRuby.StandardLibrary.Iconv.Iconv.Create),
+            });
+        }
+        
+        private void LoadIconv_Instance(IronRuby.Builtins.RubyModule/*!*/ module) {
+            
+            module.DefineLibraryMethod("close", 0x9, new System.Delegate[] {
+                new System.Func<IronRuby.StandardLibrary.Iconv.Iconv, IronRuby.Builtins.MutableString>(IronRuby.StandardLibrary.Iconv.Iconv.Close),
+            });
+            
+            module.DefineLibraryMethod("iconv", 0x9, new System.Delegate[] {
+                new System.Func<IronRuby.StandardLibrary.Iconv.Iconv, IronRuby.Builtins.MutableString, System.Int32, System.Int32, IronRuby.Builtins.MutableString>(IronRuby.StandardLibrary.Iconv.Iconv.iconv),
+            });
+            
+            module.DefineLibraryMethod("initialize", 0xa, new System.Delegate[] {
+                new System.Func<IronRuby.StandardLibrary.Iconv.Iconv, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.StandardLibrary.Iconv.Iconv>(IronRuby.StandardLibrary.Iconv.Iconv.Initialize),
+            });
+            
+        }
+        
+        private void LoadIconv_Class(IronRuby.Builtins.RubyModule/*!*/ module) {
+            module.DefineLibraryMethod("charset_map", 0x11, new System.Delegate[] {
+                new System.Func<IronRuby.Builtins.RubyClass, IronRuby.Builtins.Hash>(IronRuby.StandardLibrary.Iconv.Iconv.CharsetMap),
+            });
+            
+            module.DefineLibraryMethod("conv", 0x11, new System.Delegate[] {
+                new System.Func<IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString>(IronRuby.StandardLibrary.Iconv.Iconv.Convert),
+            });
+            
+            module.DefineLibraryMethod("iconv", 0x11, new System.Delegate[] {
+                new System.Func<IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString[], IronRuby.Builtins.MutableString>(IronRuby.StandardLibrary.Iconv.Iconv.iconv),
+            });
+            
+            module.DefineLibraryMethod("open", 0x11, new System.Delegate[] {
+                new System.Func<IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.StandardLibrary.Iconv.Iconv>(IronRuby.StandardLibrary.Iconv.Iconv.Create),
+                new System.Func<IronRuby.Runtime.BlockParam, IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString>(IronRuby.StandardLibrary.Iconv.Iconv.Open),
+            });
+            
+        }
+        
+    }
+}
+
+namespace IronRuby.StandardLibrary.Clr {
+    public sealed class ClrLibraryInitializer : IronRuby.Builtins.LibraryInitializer {
+        protected override void LoadModules() {
+            
+            
+            DefineGlobalModule("Clr", typeof(IronRuby.StandardLibrary.Clr.ClrOps), null, new System.Action<IronRuby.Builtins.RubyModule>(LoadClr_Class), IronRuby.Builtins.RubyModule.EmptyArray);
+        }
+        
+        private void LoadClr_Class(IronRuby.Builtins.RubyModule/*!*/ module) {
+            module.DefineLibraryMethod("profile", 0x11, new System.Delegate[] {
+                new System.Func<IronRuby.Runtime.RubyContext, System.Object, IronRuby.Builtins.Hash>(IronRuby.StandardLibrary.Clr.ClrOps.GetProfile),
+                new System.Func<IronRuby.Runtime.RubyContext, IronRuby.Runtime.BlockParam, System.Object, System.Object>(IronRuby.StandardLibrary.Clr.ClrOps.GetProfile),
+            });
+            
+        }
+        
+    }
+}
+
+namespace IronRuby.StandardLibrary.ParseTree {
+    public sealed class ParseTreeLibraryInitializer : IronRuby.Builtins.LibraryInitializer {
+        protected override void LoadModules() {
+            
+            
+            IronRuby.Builtins.RubyModule def1 = DefineGlobalModule("IronRuby", typeof(IronRuby.StandardLibrary.ParseTree.IronRubyOps), null, null, IronRuby.Builtins.RubyModule.EmptyArray);
+            IronRuby.Builtins.RubyModule def2 = DefineModule("IronRuby::ParseTree", typeof(IronRuby.StandardLibrary.ParseTree.IronRubyOps.ParseTreeOps), new System.Action<IronRuby.Builtins.RubyModule>(LoadIronRuby__ParseTree_Instance), null, IronRuby.Builtins.RubyModule.EmptyArray);
+            def1.SetConstant("ParseTree", def2);
+        }
+        
+        private void LoadIronRuby__ParseTree_Instance(IronRuby.Builtins.RubyModule/*!*/ module) {
+            
+            module.DefineLibraryMethod("parse_tree_for_meth", 0x9, new System.Delegate[] {
+                new System.Func<System.Object, IronRuby.Builtins.RubyModule, System.String, System.Boolean, IronRuby.Builtins.RubyArray>(IronRuby.StandardLibrary.ParseTree.IronRubyOps.ParseTreeOps.CreateParseTreeForMethod),
+            });
+            
+            module.DefineLibraryMethod("parse_tree_for_str", 0x9, new System.Delegate[] {
+                new System.Func<IronRuby.Runtime.RubyScope, System.Object, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, System.Int32, IronRuby.Builtins.RubyArray>(IronRuby.StandardLibrary.ParseTree.IronRubyOps.ParseTreeOps.CreateParseTreeForString),
+            });
+            
+        }
+        
+    }
+}
+
===================================================================
edit: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs;C622329
File: FileOps.cs
===================================================================
--- $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs;C622329  (server)    11/4/2008 6:03 AM
+++ Shelved Change: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs;RandomRubyFixes07
@@ -36,11 +36,18 @@
 
         [RubyConstructor]
         public static RubyIO CreateIO(RubyClass/*!*/ self, MutableString/*!*/ path, MutableString modeString) {
-            return new RubyFile(self.Context, path.ConvertToString(), 
+            return new RubyFile(self.Context, path.ConvertToString(),
                 (modeString != null) ? modeString.ConvertToString() : "r");
         }
 
         [RubyConstructor]
+        public static RubyIO CreateIO(RubyClass/*!*/ self, MutableString/*!*/ path, MutableString modeString, int permissions) {
+            // TODO: make this actually do something with permissions
+            return new RubyFile(self.Context, path.ConvertToString(),
+                (modeString != null) ? modeString.ConvertToString() : "r");
+        }
+
+        [RubyConstructor]
         public static RubyIO CreateIO(RubyClass/*!*/ self, MutableString/*!*/ path, int fileMode) {
             return new RubyFile(self.Context, path.ConvertToString(), (RubyFileMode)fileMode);
         }
@@ -430,6 +437,12 @@
             return RubyIOOps.TryInvokeOpenBlock(self.Context, block, io);
         }
 
+        [RubyMethod("open", RubyMethodAttributes.PublicSingleton)]
+        public static object Open(BlockParam/*!*/ block, RubyClass/*!*/ self, MutableString/*!*/ path, MutableString/*!*/ mode, int permissions) {
+            RubyIO io = RubyIOOps._CreateIOSharedSite7.Target(RubyIOOps._CreateIOSharedSite7, self.Context, self, path, mode, permissions);
+            return RubyIOOps.TryInvokeOpenBlock(self.Context, block, io);
+        }
+
         [RubyMethod("owned?", RubyMethodAttributes.PublicSingleton)]
         public static bool IsUserOwned(RubyClass/*!*/ self, object path) {
             return RubyStatOps.IsUserOwned(RubyStatOps.Create(self.Context, path));
===================================================================
edit: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/IoOps.cs;C622329
File: IoOps.cs
===================================================================
--- $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/IoOps.cs;C622329  (server)    11/3/2008 10:06 PM
+++ Shelved Change: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/IoOps.cs;RandomRubyFixes07
@@ -109,6 +109,14 @@
         internal readonly static CallSite<Func<CallSite, RubyContext, RubyClass, MutableString, int, int, RubyIO>> _CreateIOSharedSite5 =
             CallSite<Func<CallSite, RubyContext, RubyClass, MutableString, int, int, RubyIO>>.Create(RubySites.InstanceCallAction("new", 3));
 
+        // TCPSocket.open(host, port)
+        internal readonly static CallSite<Func<CallSite, RubyContext, RubyClass, MutableString, int, RubyIO>> _CreateIOSharedSite6 =
+            CallSite<Func<CallSite, RubyContext, RubyClass, MutableString, int, RubyIO>>.Create(RubySites.InstanceCallAction("new", 2));
+
+        // File.open(path, mode, perms)
+        internal readonly static CallSite<Func<CallSite, RubyContext, RubyClass, MutableString, MutableString, int, RubyIO>> _CreateIOSharedSite7 =
+            CallSite<Func<CallSite, RubyContext, RubyClass, MutableString, MutableString, int, RubyIO>>.Create(RubySites.InstanceCallAction("new", 3));
+
         internal static object TryInvokeOpenBlock(RubyContext/*!*/ context, BlockParam/*!*/ block, RubyIO/*!*/ io) {
             if (block == null)
                 return io;
@@ -139,6 +147,12 @@
             return TryInvokeOpenBlock(context, block, io);
         }
 
+        [RubyMethod("open", RubyMethodAttributes.PublicSingleton)]
+        public static object Open(RubyContext/*!*/ context, BlockParam/*!*/ block, RubyClass/*!*/ self, MutableString/*!*/ host, int port) {
+            RubyIO io = _CreateIOSharedSite6.Target(_CreateIOSharedSite6, context, self, host, port);
+            return TryInvokeOpenBlock(context, block, io);
+        }
+
         private static RubyIO OpenFileForRead(RubyContext/*!*/ context, MutableString/*!*/ path) {
             string strPath = path.ConvertToString();
             if (!File.Exists(strPath)) {
===================================================================
edit: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;C622329
File: MutableStringOps.cs
===================================================================
--- $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;C622329  (server)    11/4/2008 8:16 AM
+++ Shelved Change: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;RandomRubyFixes07
@@ -2442,11 +2442,10 @@
         #endregion
 
 
-        #region tr
+        #region tr, tr_s
 
-        [RubyMethod("tr")]
-        public static MutableString/*!*/ Tr(MutableString/*!*/ self, 
-            [DefaultProtocol, NotNull]MutableString/*!*/ from, [DefaultProtocol, NotNull]MutableString/*!*/ to) {
+        private static MutableString/*!*/ TrInternal(MutableString/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ from,
+            [DefaultProtocol, NotNull]MutableString/*!*/ to, bool squeeze) {
 
             MutableString result = self.CreateInstance().TaintBy(self);
             IntervalParser parser = new IntervalParser(from);
@@ -2458,31 +2457,44 @@
             MutableString dest = new IntervalParser(to).ParseSequence();
 
             int lastChar = dest.GetLastChar();
-
+            char? lastTranslated = null;
             for (int i = 0; i < self.Length; i++) {
                 char c = self.GetChar(i);
                 if (bitmap.Get(c)) {
+                    char? thisTranslated = null;
                     int index = source.IndexOf(c);
                     if (index >= dest.Length) {
                         if (lastChar != -1) {
-                            result.Append((char)lastChar);
+                            thisTranslated = (char)lastChar;
                         }
                     } else {
-                        result.Append(dest.GetChar(index));
+                        thisTranslated = dest.GetChar(index);
                     }
+                    if (thisTranslated != null && (!squeeze || lastTranslated == null || lastTranslated.Value != thisTranslated)) {
+                        result.Append(thisTranslated.Value);
+                    }
+                    lastTranslated = thisTranslated;
                 } else {
                     result.Append(c);
+                    lastTranslated = null;
                 }
             }
 
             return result;
         }
 
+        [RubyMethod("tr")]
+        public static MutableString/*!*/ Tr(MutableString/*!*/ self,
+            [DefaultProtocol, NotNull]MutableString/*!*/ from, [DefaultProtocol, NotNull]MutableString/*!*/ to) {
+
+            return TrInternal(self, from, to, false);
+        }
+
         [RubyMethod("tr!")]
         public static MutableString/*!*/ TrInPlace(MutableString/*!*/ self,
             [DefaultProtocol, NotNull]MutableString/*!*/ from, [DefaultProtocol, NotNull]MutableString/*!*/ to) {
 
-            MutableString result = Tr(self, from, to);
+            MutableString result = TrInternal(self, from, to, false);
             if (self.Equals(result)) {
                 return null;
             }
@@ -2492,6 +2504,27 @@
             return self;
         }
 
+        [RubyMethod("tr_s")]
+        public static MutableString/*!*/ TrSqueeze(MutableString/*!*/ self,
+            [DefaultProtocol, NotNull]MutableString/*!*/ from, [DefaultProtocol, NotNull]MutableString/*!*/ to) {
+
+            return TrInternal(self, from, to, true);
+        }
+
+        [RubyMethod("tr_s!")]
+        public static MutableString/*!*/ TrSqueezeInPlace(MutableString/*!*/ self,
+            [DefaultProtocol, NotNull]MutableString/*!*/ from, [DefaultProtocol, NotNull]MutableString/*!*/ to) {
+
+            MutableString result = TrInternal(self, from, to, true);
+            if (self.Equals(result)) {
+                return null;
+            }
+
+            self.Clear();
+            self.Append(result);
+            return self;
+        }
+
         #endregion
 
         
===================================================================
edit: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IListOps.cs;C622329
File: IListOps.cs
===================================================================
--- $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IListOps.cs;C622329  (server)    11/4/2008 9:26 AM
+++ Shelved Change: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IListOps.cs;RandomRubyFixes07
@@ -1061,7 +1061,7 @@
                 if (item is ValueType) {
                     result.Append(RubySites.ToS(context, item));
                 } else if (item == null) {
-                    result.Append("nil");
+                    // append nothing
                 } else {
                     IList listItem = item as IList;
                     if (listItem != null) {
===================================================================
edit: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/CallArguments.cs;C626737
File: CallArguments.cs
===================================================================
--- $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/CallArguments.cs;C626737  (server)    11/3/2008 9:09 PM
+++ Shelved Change: $/Dev10/feature/vsl_dynamic/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/CallArguments.cs;RandomRubyFixes07
@@ -108,7 +108,16 @@
         }
 
         public RubyContext/*!*/ RubyContext {
-            get { return _signature.HasScope ? Scope.RubyContext : (RubyContext)MetaContext.Value; }
+            get {
+                if (_signature.HasScope) {
+                    return Scope.RubyContext;
+                }
+                RubyContext result = (MetaContext.Value as RubyContext);
+                if (result != null) {
+                    return result;
+                }
+                return ((RubyScope)(MetaContext.Value)).RubyContext;
+            }
         }
 
         // RubyScope or RubyContext
===================================================================
edit: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/RubyConstructor.cs;C622329
File: RubyConstructor.cs
===================================================================
--- $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/RubyConstructor.cs;C622329  (server)    11/3/2008 9:22 PM
+++ Shelved Change: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/RubyConstructor.cs;RandomRubyFixes07
@@ -35,11 +35,11 @@
         private readonly static Dictionary<string, Regex> _yamlMultiRegexps = new Dictionary<string, Regex>();                
         private readonly static Regex _regexPattern = new Regex("^/(?<expr>.+)/(?<opts>[eimnosux]*)$", RegexOptions.Compiled);
 
-        private static readonly CallSite<Func<CallSite, CodeContext, RubyModule, object, object, object, object>> _New =
-            CallSite<Func<CallSite, CodeContext, RubyModule, object, object, object, object>>.Create(LibrarySites.InstanceCallAction("new", 3));
+        private static readonly CallSite<Func<CallSite, RubyContext, RubyModule, object, object, object, object>> _New =
+            CallSite<Func<CallSite, RubyContext, RubyModule, object, object, object, object>>.Create(LibrarySites.InstanceCallAction("new", 3));
 
-        private static readonly CallSite<Func<CallSite, CodeContext, object, object, Hash, object>> _YamlInitialize =
-            CallSite<Func<CallSite, CodeContext, object, object, Hash, object>>.Create(LibrarySites.InstanceCallAction("yaml_initialize", 3));
+        private static readonly CallSite<Func<CallSite, RubyContext, object, object, Hash, object>> _YamlInitialize =
+            CallSite<Func<CallSite, RubyContext, object, object, Hash, object>>.Create(LibrarySites.InstanceCallAction("yaml_initialize", 3));
 
         public override YamlConstructor GetYamlConstructor(string key) {
             YamlConstructor result;
@@ -223,7 +223,7 @@
                 RubyMethodInfo method = (module.GetMethod("yaml_initialize") as RubyMethodInfo);
                 if (method != null) {
                     object result = RubyUtils.CreateObject((RubyClass)module);
-                    _YamlInitialize.Target(_YamlInitialize, scope, result, className, values);
+                    _YamlInitialize.Target(_YamlInitialize, scope.RubyContext, result, className, values);
                     return result;
                 } else {
                     return RubyUtils.CreateObject((RubyClass)module, values, true);
@@ -282,7 +282,7 @@
                 RubyModule module;
                 RubyScope scope = ctor.Scope;
                 if (scope.RubyContext.TryGetModule(scope.GlobalScope, "Date", out module)) {
-                    return _New.Target(_New, scope, module, year_ymd, month_ymd, day_ymd);
+                    return _New.Target(_New, scope.RubyContext, module, year_ymd, month_ymd, day_ymd);
                 } else {
                     throw new ConstructorException("Date class not found.");
                 }
===================================================================
