edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/DlrInteropTests.cs;C1013373
File: DlrInteropTests.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/DlrInteropTests.cs;C1013373  (server)    7/21/2009 4:59 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/DlrInteropTests.cs;DebugViews
@@ -789,6 +789,9 @@
 
         public void Dlr_Visibility() {
             Engine.Execute(@"
+class D < Hash
+end
+
 class C
   def public_m
     0
@@ -821,6 +824,11 @@
 end");
             var r2 = MyInvokeMemberBinder.Invoke(c, "private_m");
             Assert(r2 is int && (int)r2 == 3);
+
+            // private initialize method can be called if called via new:
+            var classD = Runtime.Globals.GetVariable("D");
+            var d = Engine.Operations.CreateInstance(classD);
+            Assert(d is Hash);
         }
 
         public void Dlr_Languages() {
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Ruby.csproj;C1013373
File: Ruby.csproj
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Ruby.csproj;C1013373  (server)    7/22/2009 2:54 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Ruby.csproj;DebugViews
@@ -131,6 +131,7 @@
     <Compile Include="Builtins\RubyArray.Subclass.cs" />
     <Compile Include="Builtins\RubyEvent.cs" />
     <Compile Include="Builtins\RubyIO.cs" />
+    <Compile Include="Builtins\RubyObjectDebugView.cs" />
     <Compile Include="Builtins\RubyRegex.Subclass.cs" />
     <Compile Include="Builtins\MutableString.Content.cs">
       <SubType>Code</SubType>
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyClass.cs;C1013373
File: RubyClass.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyClass.cs;C1013373  (server)    7/22/2009 6:50 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyClass.cs;DebugViews
@@ -1153,7 +1153,6 @@
 
         #endregion
 
-
         #region Dynamic operations
 
         /// <summary>
@@ -1288,8 +1287,11 @@
             } else {
                 // TODO: we need more refactoring of RubyMethodGroupInfo.BuildCall to be able to inline this:
                 metaBuilder.Result = Ast.Dynamic(
-                    RubyCallAction.Make(args.RubyContext, "initialize", 
-                        new RubyCallSignature(args.Signature.ArgumentCount, args.Signature.Flags | RubyCallFlags.HasImplicitSelf)
+                    RubyCallAction.Make(args.RubyContext, "initialize",
+                        new RubyCallSignature(
+                            args.Signature.ArgumentCount, 
+                            (args.Signature.Flags & ~RubyCallFlags.IsInteropCall) | RubyCallFlags.HasImplicitSelf
+                        )
                     ),
                     typeof(object),
                     args.GetCallSiteArguments(instanceVariable)
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyModule.cs;C1013373
File: RubyModule.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyModule.cs;C1013373  (server)    7/22/2009 7:23 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyModule.cs;DebugViews
@@ -72,6 +72,7 @@
 #if DEBUG
     [DebuggerDisplay("{DebugName}")]
 #endif
+    [DebuggerTypeProxy(typeof(RubyModule.DebugView))]
     public partial class RubyModule : IDuplicable, IRubyObject {
         [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly")]
         public static readonly RubyModule[]/*!*/ EmptyArray = new RubyModule[0];
@@ -2113,5 +2114,103 @@
         }
 
         #endregion      
+
+        #region Debug View
+
+        // see: RubyObject.DebuggerDisplayValue
+        internal string/*!*/ GetDebuggerDisplayValue(object obj) {
+            return Context.Inspect(obj).ConvertToString();
+        }
+
+        // see: RubyObject.DebuggerDisplayType
+        internal string/*!*/ GetDebuggerDisplayType() {
+            return Name;
+        }
+
+        internal sealed class DebugView {
+            private readonly RubyModule/*!*/ _obj;
+
+            public DebugView(RubyModule/*!*/ obj) {
+                Assert.NotNull(obj);
+                _obj = obj;
+            }
+
+            #region RubyObjectDebugView
+
+            [DebuggerDisplay("{GetModuleName(A),nq}", Name = "{GetClassKind(),nq}", Type = "")]
+            public object A {
+                get { return _obj.ImmediateClass; }
+            }
+
+            [DebuggerDisplay("{B}", Name = "tainted?", Type = "")]
+            public bool B {
+                get { return _obj.IsTainted; }
+                set { _obj.IsTainted = value; }
+            }
+
+            [DebuggerDisplay("{C}", Name = "frozen?", Type = "")]
+            public bool C {
+                get { return _obj.IsFrozen; }
+                set { if (value) { _obj.Freeze(); } }
+            }
+
+            [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
+            public object D {
+                get {
+                    var instanceData = _obj.TryGetInstanceData();
+                    if (instanceData == null) {
+                        return new RubyInstanceData.VariableDebugView[0];
+                    }
+
+                    return instanceData.GetInstanceVariablesDebugView(_obj.ImmediateClass.Context);
+                }
+            }
+
+            private string GetClassKind() {
+                return _obj.ImmediateClass.IsSingletonClass ? "singleton class" : "class";
+            }
+
+            private static string GetModuleName(object module) {
+                var m = (RubyModule)module;
+                return m != null ? m.GetDisplayName(m.Context, false).ToString() : String.Empty;
+            }
+
+            #endregion
+
+            [DebuggerDisplay("{GetModuleName(E),nq}", Name = "super", Type = "")]
+            public object E {
+                get { return _obj.GetSuperClass(); }
+            }
+
+            [DebuggerDisplay("", Name = "mixins", Type = "")]
+            public object F {
+                get { return _obj.GetMixins(); }
+            }
+
+            [DebuggerDisplay("", Name = "instance methods", Type = "")]
+            public object G {
+                get { return GetMethods(RubyMethodAttributes.Instance); }
+            }
+
+            [DebuggerDisplay("", Name = "singleton methods", Type = "")]
+            public object H {
+                get { return GetMethods(RubyMethodAttributes.Singleton); }
+            }
+
+            private Dictionary<string, RubyMemberInfo> GetMethods(RubyMethodAttributes attributes) {
+                // TODO: custom view for methods, sorted
+                var result = new Dictionary<string, RubyMemberInfo>();
+                using (_obj.Context.ClassHierarchyLocker()) {
+                    _obj.ForEachMember(false, attributes | RubyMethodAttributes.VisibilityMask, (name, _, info) => {
+                        result[name] = info;
+                    });
+                }
+                return result;
+            }
+
+            // TODO: class variables
+        }
+
+        #endregion
     }
 }
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyObject.cs;C955994
File: RubyObject.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyObject.cs;C955994  (server)    7/22/2009 2:52 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyObject.cs;DebugViews
@@ -13,15 +13,13 @@
  *
  * ***************************************************************************/
 
+using System.Diagnostics;
 using System.Runtime.Serialization;
-using Microsoft.Scripting.Actions;
-using Microsoft.Scripting.Runtime;
-using Microsoft.Scripting.Utils;
+using System.Security.Permissions;
+using IronRuby.Compiler.Generation;
 using IronRuby.Runtime;
 using IronRuby.Runtime.Calls;
-using System.Security.Permissions;
-using IronRuby.Compiler.Generation;
-using System.Diagnostics;
+using Microsoft.Scripting.Utils;
 
 namespace IronRuby.Builtins {
     /// <summary>
@@ -29,8 +27,14 @@
     /// 
     /// Note that for classes that inherit from some other class, RubyTypeDispenser gets used
     /// </summary>
-    [DebuggerDisplay("{Inspect().ConvertToString()}")]
+    [DebuggerTypeProxy(typeof(RubyObjectDebugView))]
+    [DebuggerDisplay(RubyObject.DebuggerDisplayValue, Type = RubyObject.DebuggerDisplayType)]
     public partial class RubyObject : IRubyObject, IDuplicable, ISerializable {
+        internal const string ImmediateClassFieldName = "_immediateClass"; 
+        internal const string InstanceDataFieldName = "_instanceData";
+        internal const string DebuggerDisplayValue = "{" + ImmediateClassFieldName + ".GetDebuggerDisplayValue(this),nq}";
+        internal const string DebuggerDisplayType = "{" + ImmediateClassFieldName + ".GetDebuggerDisplayType(),nq}";
+
         private RubyInstanceData _instanceData;
         private RubyClass/*!*/ _immediateClass;
 
@@ -93,17 +97,6 @@
             return _immediateClass.Context.Inspect(this);
         }
 
-#if !SILVERLIGHT
-        protected RubyObject(SerializationInfo/*!*/ info, StreamingContext context) {
-            RubyOps.DeserializeObject(out _instanceData, out _immediateClass, info);
-        }
-
-        [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.SerializationFormatter)]
-        public virtual void GetObjectData(SerializationInfo/*!*/ info, StreamingContext context) {
-            RubyOps.SerializeObject(_instanceData, _immediateClass, info);
-        }
-#endif
-
         protected virtual RubyObject/*!*/ CreateInstance() {
             return new RubyObject(_immediateClass.NominalClass);
         }
@@ -144,5 +137,16 @@
         }
 
         #endregion
+
+#if !SILVERLIGHT
+        protected RubyObject(SerializationInfo/*!*/ info, StreamingContext context) {
+            RubyOps.DeserializeObject(out _instanceData, out _immediateClass, info);
+        }
+
+        [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.SerializationFormatter)]
+        public virtual void GetObjectData(SerializationInfo/*!*/ info, StreamingContext context) {
+            RubyOps.SerializeObject(_instanceData, _immediateClass, info);
+        }
+#endif
     }
 }
===================================================================
add: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyObjectDebugView.cs
File: RubyObjectDebugView.cs
===================================================================
--- [no source file]
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyObjectDebugView.cs;DebugViews
@@ -1,0 +1,69 @@
+?/* ****************************************************************************
+ *
+ * Copyright (c) Microsoft Corporation. 
+ *
+ * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * copy of the license can be found in the License.html file at the root of this distribution. If 
+ * you cannot locate the  Microsoft Public License, please send an email to 
+ * ironruby@microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
+ * by the terms of the Microsoft Public License.
+ *
+ * You must not remove this notice, or any other, from this software.
+ *
+ *
+ * ***************************************************************************/
+
+using IronRuby.Runtime;
+using Microsoft.Scripting.Utils;
+using System.Diagnostics;
+using System.Collections.Generic;
+using System;
+
+namespace IronRuby.Builtins {
+    public class RubyObjectDebugView {
+        private readonly IRubyObject/*!*/ _obj;
+
+        public RubyObjectDebugView(IRubyObject/*!*/ obj) {
+            Assert.NotNull(obj);
+            _obj = obj;
+        }
+
+        [DebuggerDisplay("{GetModuleName(A),nq}", Name = "{GetClassKind(),nq}", Type = "")]
+        public object A {
+            get { return _obj.ImmediateClass; }
+        }
+
+        [DebuggerDisplay("{B}", Name = "tainted?", Type = "")]
+        public bool B {
+            get { return _obj.IsTainted; }
+            set { _obj.IsTainted = value; }
+        }
+
+        [DebuggerDisplay("{C}", Name = "frozen?", Type = "")]
+        public bool C {
+            get { return _obj.IsFrozen; }
+            set { if (value) { _obj.Freeze(); } }
+        }
+
+        [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
+        public object/*!*/ D {
+            get {
+                var instanceData = _obj.TryGetInstanceData();
+                if (instanceData == null) {
+                    return new RubyInstanceData.VariableDebugView[0];
+                }
+
+                return instanceData.GetInstanceVariablesDebugView(_obj.ImmediateClass.Context);
+            }
+        }
+
+        private string GetClassKind() {
+            return _obj.ImmediateClass.IsSingletonClass ? "singleton class" : "class";
+        }
+
+        private static string GetModuleName(object module) {
+            var m = (RubyModule)module;
+            return m != null ? m.GetDisplayName(m.Context, false).ToString() : String.Empty;
+        }
+    }
+}
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/Subclasses.Generated.cs;C959237
File: Subclasses.Generated.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/Subclasses.Generated.cs;C959237  (server)    7/22/2009 6:02 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/Subclasses.Generated.cs;DebugViews
@@ -34,6 +34,8 @@
     end
 #else
     public partial class /*$Class{*/Hash/*}*/ {
+        [DebuggerTypeProxy(typeof(RubyObjectDebugView))]
+        [DebuggerDisplay(RubyObject.DebuggerDisplayValue, Type = RubyObject.DebuggerDisplayType)]
         public sealed partial class Subclass : /*$Class{*/Hash/*}*/, IRubyObject {
             private RubyInstanceData _instanceData;
             private RubyClass/*!*/ _immediateClass;
@@ -83,6 +85,8 @@
 #endif
 #region Generated by Subclasses.Generator.rb
     public partial class MatchData {
+        [DebuggerTypeProxy(typeof(RubyObjectDebugView))]
+        [DebuggerDisplay(RubyObject.DebuggerDisplayValue, Type = RubyObject.DebuggerDisplayType)]
         public sealed partial class Subclass : MatchData, IRubyObject {
             private RubyInstanceData _instanceData;
             private RubyClass/*!*/ _immediateClass;
@@ -130,6 +134,8 @@
         }
     }
     public partial class Proc {
+        [DebuggerTypeProxy(typeof(RubyObjectDebugView))]
+        [DebuggerDisplay(RubyObject.DebuggerDisplayValue, Type = RubyObject.DebuggerDisplayType)]
         public sealed partial class Subclass : Proc, IRubyObject {
             private RubyInstanceData _instanceData;
             private RubyClass/*!*/ _immediateClass;
@@ -177,6 +183,8 @@
         }
     }
     public partial class Range {
+        [DebuggerTypeProxy(typeof(RubyObjectDebugView))]
+        [DebuggerDisplay(RubyObject.DebuggerDisplayValue, Type = RubyObject.DebuggerDisplayType)]
         public sealed partial class Subclass : Range, IRubyObject {
             private RubyInstanceData _instanceData;
             private RubyClass/*!*/ _immediateClass;
@@ -224,6 +232,8 @@
         }
     }
     public partial class RubyRegex {
+        [DebuggerTypeProxy(typeof(RubyObjectDebugView))]
+        [DebuggerDisplay(RubyObject.DebuggerDisplayValue, Type = RubyObject.DebuggerDisplayType)]
         public sealed partial class Subclass : RubyRegex, IRubyObject {
             private RubyInstanceData _instanceData;
             private RubyClass/*!*/ _immediateClass;
@@ -287,6 +297,8 @@
     end
 #else
     public partial class /*$Class{*/MutableString/*}*/ {
+        [DebuggerTypeProxy(typeof(RubyObjectDebugView))]
+        [DebuggerDisplay(RubyObject.DebuggerDisplayValue, Type = RubyObject.DebuggerDisplayType)]
         public sealed partial class Subclass : /*$Class{*/MutableString/*}*/, IRubyObject {
             private RubyInstanceData _instanceData;
             private RubyClass/*!*/ _immediateClass;
@@ -323,6 +335,8 @@
 #endif
 #region Generated by Subclasses.Generator.rb
     public partial class RubyArray {
+        [DebuggerTypeProxy(typeof(RubyObjectDebugView))]
+        [DebuggerDisplay(RubyObject.DebuggerDisplayValue, Type = RubyObject.DebuggerDisplayType)]
         public sealed partial class Subclass : RubyArray, IRubyObject {
             private RubyInstanceData _instanceData;
             private RubyClass/*!*/ _immediateClass;
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Generation/RubyTypeBuilder.cs;C955994
File: RubyTypeBuilder.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Generation/RubyTypeBuilder.cs;C955994  (server)    7/22/2009 5:29 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Generation/RubyTypeBuilder.cs;DebugViews
@@ -69,8 +69,8 @@
 
         internal RubyTypeBuilder(TypeBuilder/*!*/ tb) {
             _tb = tb;
-            _immediateClassField = _tb.DefineField("_immediateClass", typeof(RubyClass), FieldAttributes.Private);
-            _instanceDataField = _tb.DefineField("_instanceData", typeof(RubyInstanceData), FieldAttributes.Private);
+            _immediateClassField = _tb.DefineField(RubyObject.ImmediateClassFieldName, typeof(RubyClass), FieldAttributes.Private);
+            _instanceDataField = _tb.DefineField(RubyObject.InstanceDataFieldName, typeof(RubyInstanceData), FieldAttributes.Private);
         }
 
         public void Implement(ClsTypeEmitter/*!*/ emitter) {
@@ -286,6 +286,18 @@
         private void DefineRubyObjectImplementation() {
             _tb.AddInterfaceImplementation(typeof(IRubyObject));
 
+            _tb.SetCustomAttribute(new CustomAttributeBuilder(
+                typeof(DebuggerTypeProxyAttribute).GetConstructor(new[] { typeof(Type) }),
+                new[] { typeof(RubyObjectDebugView) }
+            ));
+
+            _tb.SetCustomAttribute(new CustomAttributeBuilder(
+                typeof(DebuggerDisplayAttribute).GetConstructor(new[] { typeof(string) }),
+                new[] { RubyObject.DebuggerDisplayValue },
+                new[] { typeof(DebuggerDisplayAttribute).GetProperty("Type") },
+                new[] { RubyObject.DebuggerDisplayType }
+            ));
+
             ILGen il;
 
             // RubyClass! IRubyObject.ImmediateClass { get { return _immediateClassField; } }
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyInstanceData.cs;C940713
File: RubyInstanceData.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyInstanceData.cs;C940713  (server)    7/22/2009 3:36 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyInstanceData.cs;DebugViews
@@ -18,6 +18,8 @@
 using System.Threading;
 using IronRuby.Builtins;
 using Microsoft.Scripting.Utils;
+using System.Diagnostics;
+using System;
 
 namespace IronRuby.Runtime {
     /// <summary>
@@ -97,7 +99,7 @@
             return _instanceVars;
         }
 
-        #region instance variable support
+        #region Instance Variables
 
         internal bool HasInstanceVariables {
             get {
@@ -184,6 +186,62 @@
             }
         }
 
+        internal VariableDebugView[]/*!*/ GetInstanceVariablesDebugView(RubyContext/*!*/ context) {
+            if (_instanceVars == null) {
+                return new RubyInstanceData.VariableDebugView[0];
+            }
+
+            var result = new List<VariableDebugView>();
+            lock (_instanceVars) {
+                foreach (var var in _instanceVars) {
+                    result.Add(new VariableDebugView(context, this, var.Key));
+                }
+            }
+
+            result.Sort((var1, var2) => var1._name.CompareTo(var2._name));
+            return result.ToArray();
+        }
+
+        [DebuggerDisplay("{GetValue()}", Name = "{_name,nq}", Type = "{GetClassName(),nq}")]
+        public sealed class VariableDebugView {
+            [DebuggerBrowsable(DebuggerBrowsableState.Never)]
+            private readonly RubyContext/*!*/ _context;
+            [DebuggerBrowsable(DebuggerBrowsableState.Never)]
+            private readonly RubyInstanceData/*!*/ _data;
+            [DebuggerBrowsable(DebuggerBrowsableState.Never)]
+            internal readonly string/*!*/ _name;
+
+            [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
+            public object A {
+                get { return GetValue(); }
+            }
+            
+            [DebuggerDisplay("{B}", Name = "Raw Value", Type = "{GetClrType()}")]
+            public object B {
+                get { return GetValue(); }
+                set { _data.SetInstanceVariable(_name, value); }
+            }
+            
+            private object GetValue() {
+                return _data.GetInstanceVariable(_name);
+            }
+
+            private Type GetClrType() {
+                var value = GetValue();
+                return value != null ? value.GetType() : null;
+            }
+
+            private string/*!*/ GetClassName() {
+                return _context.GetClassDisplayName(GetValue());
+            }
+
+            internal VariableDebugView(RubyContext/*!*/ context, RubyInstanceData/*!*/ data, string/*!*/ name) {
+                _context = context;
+                _data = data;
+                _name = name;
+            }
+        }
+
         #endregion
     }
 }
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyScope.cs;C1009004
File: RubyScope.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyScope.cs;C1009004  (server)    7/22/2009 4:51 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyScope.cs;DebugViews
@@ -65,9 +65,7 @@
         }
     }
         
-#if !SILVERLIGHT
     [DebuggerTypeProxy(typeof(RubyScope.DebugView))]
-#endif
     public abstract class RubyScope : RuntimeFlowControl {
         internal bool InLoop;
         internal bool InRescue;
@@ -546,7 +544,7 @@
                     while (true) {
                         foreach (var variable in scope.GetDeclaredLocalVariables()) {
                             string name = SymbolTable.IdToString(variable.Key);
-                            string className = _scope.RubyContext.GetImmediateClassOf(variable.Value).GetDisplayName(_scope.RubyContext, true).ConvertToString();
+                            string className = _scope.RubyContext.GetClassDisplayName(variable.Value);
                             if (scope != _scope) {
                                 name += " (outer)";
                             }
@@ -577,7 +575,7 @@
                 get { return (RubyScope)_scope.Parent; }
             }
 
-            [DebuggerDisplay("", Name = "RawVariables", Type = "")]
+            [DebuggerDisplay("", Name = "Raw Variables", Type = "")]
             public System.Collections.Hashtable/*!*/ D {
                 get {
                     System.Collections.Hashtable result = new System.Collections.Hashtable();
===================================================================
