edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;C479187
File: Initializers.Generated.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;C479187  (server)    6/27/2008 1:32 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;StringCenterDeleteEach
@@ -56,9 +56,9 @@
             #endif
             // Skipped primitive: Object
             ExtendModule(typeof(System.Collections.Generic.IDictionary<System.Object, System.Object>), new System.Action<Ruby.Builtins.RubyModule>(LoadSystem__Collections__Generic__IDictionary_Instance), null, new Ruby.Builtins.RubyModule[] {def18, });
-            Ruby.Builtins.RubyModule def31 = ExtendModule(typeof(System.Collections.IEnumerable), new System.Action<Ruby.Builtins.RubyModule>(LoadSystem__Collections__IEnumerable_Instance), null, new Ruby.Builtins.RubyModule[] {def18, });
+            ExtendModule(typeof(System.Collections.IEnumerable), new System.Action<Ruby.Builtins.RubyModule>(LoadSystem__Collections__IEnumerable_Instance), null, new Ruby.Builtins.RubyModule[] {def18, });
             ExtendModule(typeof(System.Collections.IList), new System.Action<Ruby.Builtins.RubyModule>(LoadSystem__Collections__IList_Instance), null, new Ruby.Builtins.RubyModule[] {def18, });
-            ExtendModule(typeof(System.IComparable), new System.Action<Ruby.Builtins.RubyModule>(LoadSystem__IComparable_Instance), null, new Ruby.Builtins.RubyModule[] {def27, });
+            Ruby.Builtins.RubyModule def31 = ExtendModule(typeof(System.IComparable), new System.Action<Ruby.Builtins.RubyModule>(LoadSystem__IComparable_Instance), null, new Ruby.Builtins.RubyModule[] {def27, });
             ExtendClass(typeof(System.Scripting.Actions.TypeGroup), new System.Action<Ruby.Builtins.RubyModule>(LoadSystem__Scripting__Actions__TypeGroup_Instance), null, new Ruby.Builtins.RubyModule[] {def18, }, null);
             DefineGlobalClass("Array", typeof(Ruby.Builtins.RubyArray), Context.ObjectClass, new System.Action<Ruby.Builtins.RubyModule>(LoadArray_Instance), new System.Action<Ruby.Builtins.RubyModule>(LoadArray_Class), new Ruby.Builtins.RubyModule[] {def18, }, new System.Delegate[] {
                 new System.Func<Ruby.Builtins.RubyArray>(Ruby.Builtins.ArrayOps.CreateArray),
@@ -3849,7 +3849,8 @@
             });
             
             module.DefineLibraryMethod("center", 0x29, new System.Delegate[] {
-                new System.Func<Ruby.Builtins.MutableString, System.Int32, Ruby.Builtins.MutableString, Ruby.Builtins.MutableString>(Ruby.Builtins.MutableStringOps.Center),
+                new System.Func<System.Scripting.Runtime.CodeContext, Ruby.Builtins.MutableString, System.Int32, Ruby.Builtins.MutableString, Ruby.Builtins.MutableString>(Ruby.Builtins.MutableStringOps.Center),
+                new System.Func<System.Scripting.Runtime.CodeContext, Ruby.Builtins.MutableString, System.Object, System.Object, Ruby.Builtins.MutableString>(Ruby.Builtins.MutableStringOps.Center),
             });
             
             module.DefineLibraryMethod("chomp", 0x29, new System.Delegate[] {
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;C478584
File: MutableStringOps.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;C478584  (server)    6/27/2008 1:20 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;StringCenterDeleteEach
@@ -1100,14 +1100,28 @@
 
         #endregion
 
+        //---------------------------------------------------------- String#center
+        //  If int is greater than the length of str, returns a new String of length int with str
+        //  centered between the given padding (defaults to spaces); otherwise, returns str.
+        //-------------------------------------------------------------------------
+        //    "hello".center(4) => "hello"
+        //    "hello".center(20) => "       hello        "
+        //    "hello".center(4, "_^") => "hello"
+        //    "hello".center(20, "_^") => "_^_^_^_hello_^_^_^_^"
+        //    "hello".center(20, "-") => "-------hello--------"
+        #region center
+
         [RubyMethod("center", RubyMethodAttributes.PublicInstance)]
-        public static MutableString/*!*/ Center(MutableString/*!*/ self, int length, [Optional]MutableString padding) {
+        public static MutableString/*!*/ Center(CodeContext/*!*/ context, MutableString/*!*/ self, int length, [Optional]MutableString padding) {
+
             if (padding != null && padding.Length == 0) {
                 throw RubyExceptions.CreateArgumentError("zero width padding");
             }
+
             if (self.Length >= length) {
                 return self;
             }
+
             if (padding == null) {
                 padding = MutableString.Create(" ");
             }
@@ -1127,9 +1141,16 @@
             for (int i = 0; i < m; i++) {
                 charArray[n + self.Length + i] = padding.GetChar(i % padding.Length);
             }
-            return MutableString.Create(new string(charArray));
+
+            return RubyUtils.FlowTaint(context, padding, self, CreateSubClass(context, self, MutableString.Create(new string(charArray))));
         }
 
+        [RubyMethod("center", RubyMethodAttributes.PublicInstance)]
+        public static MutableString/*!*/ Center(CodeContext/*!*/ context, MutableString/*!*/ self, object length, [Optional]object padding) {
+            return Center(context, self, (int)Protocols.CastToInteger(context, length), Protocols.CastToString(context, padding));
+        }
+        #endregion
+
         //----------------------------------------------------------- String#chomp
         //     str.chomp(separator=$/)   => new_str
         //------------------------------------------------------------------------
@@ -1425,6 +1446,7 @@
         [RubyMethod("each")]
         [RubyMethod("each_line")]
         public static object EachLine(CodeContext/*!*/ context, MutableString/*!*/ self, BlockParam block, [NotNull]MutableString/*!*/ separator) {
+
             bool paragraphMode = false;
             MutableString sep = separator;
             if (separator.Length == 0) {
@@ -1476,7 +1498,7 @@
         [RubyMethod("each_line")]
         public static object EachLine(CodeContext/*!*/ context, MutableString/*!*/ self, BlockParam block, object separator) {
             if (separator == null)
-                return _EachBlockSite.Invoke(context, block, self);
+                return EachLine(context, self, block, MutableString.Create(""));
             else
                 return EachLine(context, self, block, Protocols.CastToString(context, separator));
         }
@@ -1485,7 +1507,7 @@
         [RubyMethod("each_line")]
         public static object EachLine(CodeContext/*!*/ context, MutableString/*!*/ self, BlockParam block) {
             RubyExecutionContext ec = RubyUtils.GetExecutionContext(context);
-            return EachLine(context, self, block, ec.InputSeparator);
+            return EachLine(context, self, block, ec.InputSeparator == null ? "" : ec.InputSeparator);
         }
 
         #endregion
@@ -2106,7 +2128,7 @@
                     result.Append(self.GetChar(i));
                 }
             }
-            return RubyUtils.FlowTaint(context, self, result);
+            return RubyUtils.FlowTaint(context, self, CreateSubClass(context, self, result));
         }
 
         [RubyMethod("delete")]
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/center_excludes.txt;C417565
File: center_excludes.txt
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/center_excludes.txt;C417565  (server)    6/30/2008 1:33 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/center_excludes.txt;StringCenterDeleteEach
@@ -1,6 +1,0 @@
-String#center with length, padding taints result when self or padstr is tainted
-String#center with length, padding tries to convert length to an integer using to_int
-String#center with length, padding raises a TypeError when length can't be converted to an integer
-String#center with length, padding tries to convert padstr to a string using to_str
-String#center with length, padding raises a TypeError when padstr can't be converted to a string
-String#center with length, padding returns subclass instances when called on subclasses
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/delete_excludes.txt;C417565
File: delete_excludes.txt
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/delete_excludes.txt;C417565  (server)    6/30/2008 2:18 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/delete_excludes.txt;StringCenterDeleteEach
@@ -1,1 +1,0 @@
-String#delete returns subclass instances when called on a subclass
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/each_excludes.txt;C417565
File: each_excludes.txt
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/each_excludes.txt;C417565  (server)    6/30/2008 2:04 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/each_excludes.txt;StringCenterDeleteEach
@@ -1,2 +1,1 @@
-String#each uses $/ as the separator when none is given
 String#each raises a RuntimeError if the string is modified while substituting
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/each_line_excludes.txt;C417565
File: each_line_excludes.txt
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/each_line_excludes.txt;C417565  (server)    6/30/2008 2:03 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/each_line_excludes.txt;StringCenterDeleteEach
@@ -1,2 +1,1 @@
-String#each_line uses $/ as the separator when none is given
 String#each_line raises a RuntimeError if the string is modified while substituting
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/squeeze_excludes.txt;C417565
File: squeeze_excludes.txt
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/squeeze_excludes.txt;C417565  (server)    6/30/2008 1:32 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Tests/Specs/core/string/.spec/squeeze_excludes.txt;StringCenterDeleteEach
@@ -1,11 +1,0 @@
-String#squeeze returns new string where runs of the same character are replaced by a single character when no args are given
-String#squeeze only squeezes chars that are in the intersection of all sets given
-String#squeeze negates sets starting with ^
-String#squeeze squeezes all chars in a sequence
-String#squeeze taints the result when self is tainted
-String#squeeze tries to convert each set arg to a string using to_str
-String#squeeze raises a TypeError when one set arg can't be converted to a string
-String#squeeze returns subclass instances when called on a subclass
-String#squeeze! modifies self in place and returns self
-String#squeeze! returns nil if no modifications were made
-String#squeeze! raises a TypeError when self is frozen
===================================================================
