<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileTest.cs</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -14,17 +14,16 @@
  * ***************************************************************************/
 
 using System;
+using System.Collections;
+using System.Collections.Generic;
 using System.Diagnostics;
 using System.IO;
 using System.Runtime.InteropServices;
+using System.Text;
 using IronRuby.Runtime;
 using IronRuby.Runtime.Calls;
 using Microsoft.Scripting;
 using Microsoft.Scripting.Runtime;
-using Microsoft.Scripting.Utils;
-using System.Collections;
-using System.Collections.Generic;
-using System.Text;
 
 namespace IronRuby.Builtins {
 
@@ -32,7 +31,8 @@ namespace IronRuby.Builtins {
     /// File builtin class. Derives from IO
     /// &lt;/summary&gt;
     [RubyClass(&quot;File&quot;, Extends = typeof(RubyFile))]
-    public class RubyFileOps {
+    [Includes(typeof(FileTest), Copy = true)]
+    public static class RubyFileOps {
 
         #region Construction
 
@@ -232,16 +232,6 @@ namespace IronRuby.Builtins {
             return RubyUtils.CanonicalizePath(MutableString.Create(strResult)).TaintBy(path);
         }
 
-        [RubyMethod(&quot;blockdev?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsBlockDevice(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return RubyStatOps.IsBlockDevice(RubyStatOps.Create(self.Context, path));
-        }
-
-        [RubyMethod(&quot;chardev?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsCharDevice(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return RubyStatOps.IsCharDevice(RubyStatOps.Create(self.Context, path));
-        }
-
         internal static void Chmod(string path, int permission) {
 #if !SILVERLIGHT
             FileAttributes oldAttributes = File.GetAttributes(path);
@@ -300,7 +290,7 @@ namespace IronRuby.Builtins {
             return context.DomainManager.Platform.FileExists(path);
         }
 
-        private static bool DirectoryExists(RubyContext/*!*/ context, string/*!*/ path) {
+        internal static bool DirectoryExists(RubyContext/*!*/ context, string/*!*/ path) {
             return context.DomainManager.Platform.DirectoryExists(path);
         }
 
@@ -338,11 +328,6 @@ namespace IronRuby.Builtins {
             return paths.Length;
         }
 
-        [RubyMethod(&quot;directory?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsDirectory(RubyContext/*!*/ context, object/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return DirectoryExists(context, path.ConvertToString());
-        }
-
         [RubyMethod(&quot;dirname&quot;, RubyMethodAttributes.PublicSingleton)]
         public static MutableString/*!*/ DirName(RubyClass/*!*/ self, [NotNull]MutableString/*!*/ path) {
             string strPath = path.ConvertToString();
@@ -397,19 +382,6 @@ namespace IronRuby.Builtins {
             return path;
         }
 
-        [RubyMethod(&quot;executable?&quot;, RubyMethodAttributes.PublicSingleton)]
-        [RubyMethod(&quot;executable_real?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsExecutable(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return RubyStatOps.IsExecutable(RubyStatOps.Create(self.Context, path));
-        }
-
-        [RubyMethod(&quot;exist?&quot;, RubyMethodAttributes.PublicSingleton)]
-        [RubyMethod(&quot;exists?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool Exists(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            string strPath = path.ConvertToString();
-            return FileExists(self.Context, strPath) || DirectoryExists(self.Context, strPath);
-        }
-
         [RubyMethod(&quot;extname&quot;, RubyMethodAttributes.PublicSingleton)]
         public static MutableString/*!*/ GetExtension(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
             string pathStr = path.ConvertToString();
@@ -422,11 +394,6 @@ namespace IronRuby.Builtins {
             return MutableString.Create(extension).TaintBy(path);
         }
 
-        [RubyMethod(&quot;file?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsAFile(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return FileExists(self.Context, path.ConvertToString());
-        }
-
         #region fnmatch
 
         [RubyMethod(&quot;fnmatch&quot;, RubyMethodAttributes.PublicSingleton)]
@@ -442,13 +409,6 @@ namespace IronRuby.Builtins {
             return RubyStatOps.FileType(RubyStatOps.Create(self.Context, path));
         }
 
-        [RubyMethod(&quot;grpowned?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsGroupOwned(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return RubyStatOps.IsGroupOwned(RubyStatOps.Create(self.Context, path));
-        }
-
-        //identical?
-
         #region join
 
         private static readonly MutableString InfiniteRecursionMarker = MutableString.Create(&quot;[...]&quot;).Freeze();
@@ -735,31 +695,6 @@ namespace IronRuby.Builtins {
             return RubyStatOps.ModifiedTime(RubyStatOps.Create(self.Context, path));
         }
 
-        [RubyMethod(&quot;owned?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsUserOwned(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return RubyStatOps.IsUserOwned(RubyStatOps.Create(self.Context, path));
-        }
-
-        [RubyMethod(&quot;pipe?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsPipe(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return RubyStatOps.IsPipe(RubyStatOps.Create(self.Context, path));
-        }
-
-        private static bool IsReadableImpl(RubyContext/*!*/ context, string/*!*/ path) {
-            FileSystemInfo fsi;
-            if (RubyStatOps.TryCreate(context, path, out fsi)) {
-                return RubyStatOps.IsReadable(fsi);
-            } else {
-                return false;
-            }
-        }
-
-        [RubyMethod(&quot;readable?&quot;, RubyMethodAttributes.PublicSingleton)]
-        [RubyMethod(&quot;readable_real?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsReadable(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return IsReadableImpl(self.Context, path.ConvertToString());
-        }
-
         [RubyMethod(&quot;readlink&quot;, RubyMethodAttributes.PublicSingleton)]
         public static bool Readlink(RubyClass/*!*/ self, [NotNull]MutableString/*!*/ path) {
             throw new IronRuby.Builtins.NotImplementedError(&quot;readlink() function is unimplemented on this machine&quot;);
@@ -796,31 +731,6 @@ namespace IronRuby.Builtins {
             return 0;
         }
 
-        [RubyMethod(&quot;setgid?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsSetGid(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return RubyStatOps.IsSetGid(RubyStatOps.Create(self.Context, path));
-        }
-
-        [RubyMethod(&quot;setuid?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsSetUid(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return RubyStatOps.IsSetUid(RubyStatOps.Create(self.Context, path));
-        }
-
-        [RubyMethod(&quot;size&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static int Size(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return RubyStatOps.Size(RubyStatOps.Create(self.Context, path));
-        }
-
-        [RubyMethod(&quot;size?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static object NullableSize(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return RubyStatOps.NullableSize(RubyStatOps.Create(self.Context, path));
-        }
-
-        [RubyMethod(&quot;socket?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsSocket(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return RubyStatOps.IsSocket(RubyStatOps.Create(self.Context, path));
-        }
-
         [RubyMethod(&quot;split&quot;, RubyMethodAttributes.PublicSingleton)]
         public static RubyArray Split(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
             RubyArray result = new RubyArray(2);
@@ -829,11 +739,6 @@ namespace IronRuby.Builtins {
             return result;
         }
 
-        [RubyMethod(&quot;sticky?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsSticky(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return RubyStatOps.IsSticky(RubyStatOps.Create(self.Context, path));
-        }
-
         //truncate
 
         internal static readonly object UmaskKey = new object();
@@ -860,11 +765,6 @@ namespace IronRuby.Builtins {
             throw new NotImplementedError(&quot;symlnk() function is unimplemented on this machine&quot;);
         }
 
-        [RubyMethod(&quot;symlink?&quot;, RubyMethodAttributes.PublicSingleton, BuildConfig = &quot;!SILVERLIGHT&quot;)]
-        public static bool IsSymLink(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return RubyStatOps.IsSymLink(RubyStatOps.Create(self.Context, path));
-        }
-
         [RubyMethod(&quot;utime&quot;, RubyMethodAttributes.PublicSingleton, BuildConfig = &quot;!SILVERLIGHT&quot;)]
         public static int UpdateTimes(RubyClass/*!*/ self, DateTime accessTime, DateTime modifiedTime, [NotNull]MutableString/*!*/ path) {
             string strPath = path.ConvertToString();
@@ -906,37 +806,6 @@ namespace IronRuby.Builtins {
             }
         }
 
-        private static bool IsWritableImpl(RubyContext/*!*/ context, string/*!*/ path) {
-            FileSystemInfo fsi;
-            if (RubyStatOps.TryCreate(context, path, out fsi)) {
-                return RubyStatOps.IsWritable(fsi);
-            } else {
-                return false;
-            }
-        }
-
-        [RubyMethod(&quot;writable?&quot;, RubyMethodAttributes.PublicSingleton)]
-        [RubyMethod(&quot;writable_real?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsWritable(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            return IsWritableImpl(self.Context, path.ConvertToString());            
-        }
-
-        [RubyMethod(&quot;zero?&quot;, RubyMethodAttributes.PublicSingleton)]
-        public static bool IsZeroLength(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ path) {
-            string strPath = path.ConvertToString();
-
-            // NUL/nul is a special-cased filename on Windows
-            if (strPath.ToLower() == &quot;nul&quot;) {
-                return RubyStatOps.IsZeroLength(RubyStatOps.Create(self.Context, strPath));
-            }
-
-            if (DirectoryExists(self.Context, strPath) || !FileExists(self.Context, strPath)) {
-                return false;
-            }
-
-            return RubyStatOps.IsZeroLength(RubyStatOps.Create(self.Context, strPath));
-        }
-
         #endregion
 
         #region Public Instance Methods</diff>
      <filename>Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs</filename>
    </modified>
    <modified>
      <diff>@@ -48,6 +48,7 @@ namespace IronRuby.Builtins {
             IronRuby.Builtins.RubyModule def33 = DefineGlobalModule(&quot;Enumerable&quot;, typeof(IronRuby.Builtins.Enumerable), 0x00000103, LoadEnumerable_Instance, null, null, IronRuby.Builtins.RubyModule.EmptyArray);
             IronRuby.Builtins.RubyModule def8 = DefineGlobalModule(&quot;Errno&quot;, typeof(IronRuby.Builtins.Errno), 0x00000103, null, null, null, IronRuby.Builtins.RubyModule.EmptyArray);
             IronRuby.Builtins.RubyModule def25 = DefineModule(&quot;File::Constants&quot;, typeof(IronRuby.Builtins.RubyFileOps.Constants), 0x00000103, null, null, LoadFile__Constants_Constants, IronRuby.Builtins.RubyModule.EmptyArray);
+            DefineGlobalModule(&quot;FileTest&quot;, typeof(IronRuby.Builtins.FileTest), 0x00000103, null, LoadFileTest_Class, null, IronRuby.Builtins.RubyModule.EmptyArray);
             DefineGlobalModule(&quot;GC&quot;, typeof(IronRuby.Builtins.RubyGC), 0x00000103, LoadGC_Instance, LoadGC_Class, null, IronRuby.Builtins.RubyModule.EmptyArray);
             IronRuby.Builtins.RubyModule def22 = DefineGlobalModule(&quot;IronRuby&quot;, typeof(IronRuby.Ruby), 0x00000000, null, LoadIronRuby_Class, null, IronRuby.Builtins.RubyModule.EmptyArray);
             IronRuby.Builtins.RubyModule def2 = DefineModule(&quot;IronRuby::Clr&quot;, typeof(IronRuby.Builtins.IronRubyOps.ClrOps), 0x00000100, null, LoadIronRuby__Clr_Class, null, IronRuby.Builtins.RubyModule.EmptyArray);
@@ -113,7 +114,6 @@ namespace IronRuby.Builtins {
                 new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.IO.FileSystemInfo&gt;(IronRuby.Builtins.RubyFileOps.RubyStatOps.Create)
             );
             #endif
-            DefineGlobalClass(&quot;FileTest&quot;, typeof(IronRuby.Builtins.FileTestOps), 0x00000103, Context.ObjectClass, null, LoadFileTest_Class, null, IronRuby.Builtins.RubyModule.EmptyArray);
             DefineGlobalClass(&quot;Hash&quot;, typeof(IronRuby.Builtins.Hash), 0x00000003, Context.ObjectClass, LoadHash_Instance, LoadHash_Class, null, new IronRuby.Builtins.RubyModule[] {def33}, 
                 new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.Hash&gt;(IronRuby.Builtins.HashOps.CreateHash), 
                 new System.Func&lt;IronRuby.Runtime.BlockParam, IronRuby.Builtins.RubyClass, System.Object, IronRuby.Builtins.Hash&gt;(IronRuby.Builtins.HashOps.CreateHash), 
@@ -1034,6 +1034,7 @@ namespace IronRuby.Builtins {
         }
         
         private static void LoadFile_Class(IronRuby.Builtins.RubyModule/*!*/ module) {
+            LoadFileTest_Class(module);
             module.DefineLibraryMethod(&quot;atime&quot;, 0x61, 
                 new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.DateTime&gt;(IronRuby.Builtins.RubyFileOps.AccessTime)
             );
@@ -1042,14 +1043,6 @@ namespace IronRuby.Builtins {
                 new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString&gt;(IronRuby.Builtins.RubyFileOps.Basename)
             );
             
-            module.DefineLibraryMethod(&quot;blockdev?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsBlockDevice)
-            );
-            
-            module.DefineLibraryMethod(&quot;chardev?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsCharDevice)
-            );
-            
             module.DefineLibraryMethod(&quot;chmod&quot;, 0x61, 
                 new System.Func&lt;IronRuby.Builtins.RubyClass, System.Int32, IronRuby.Builtins.MutableString, System.Int32&gt;(IronRuby.Builtins.RubyFileOps.Chmod)
             );
@@ -1068,30 +1061,10 @@ namespace IronRuby.Builtins {
                 new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString[], System.Int32&gt;(IronRuby.Builtins.RubyFileOps.Delete)
             );
             
-            module.DefineLibraryMethod(&quot;directory?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Runtime.RubyContext, System.Object, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsDirectory)
-            );
-            
             module.DefineLibraryMethod(&quot;dirname&quot;, 0x61, 
                 new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString&gt;(IronRuby.Builtins.RubyFileOps.DirName)
             );
             
-            module.DefineLibraryMethod(&quot;executable?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsExecutable)
-            );
-            
-            module.DefineLibraryMethod(&quot;executable_real?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsExecutable)
-            );
-            
-            module.DefineLibraryMethod(&quot;exist?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.Exists)
-            );
-            
-            module.DefineLibraryMethod(&quot;exists?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.Exists)
-            );
-            
             #if !SILVERLIGHT
             module.DefineLibraryMethod(&quot;expand_path&quot;, 0x61, 
                 new System.Func&lt;IronRuby.Runtime.RubyContext, IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString&gt;(IronRuby.Builtins.RubyFileOps.ExpandPath)
@@ -1102,10 +1075,6 @@ namespace IronRuby.Builtins {
                 new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString&gt;(IronRuby.Builtins.RubyFileOps.GetExtension)
             );
             
-            module.DefineLibraryMethod(&quot;file?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsAFile)
-            );
-            
             module.DefineLibraryMethod(&quot;fnmatch&quot;, 0x61, 
                 new System.Func&lt;System.Object, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, System.Int32, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.FnMatch)
             );
@@ -1118,10 +1087,6 @@ namespace IronRuby.Builtins {
                 new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString&gt;(IronRuby.Builtins.RubyFileOps.FileType)
             );
             
-            module.DefineLibraryMethod(&quot;grpowned?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsGroupOwned)
-            );
-            
             module.DefineLibraryMethod(&quot;join&quot;, 0x61, 
                 new System.Func&lt;IronRuby.Runtime.ConversionStorage&lt;IronRuby.Builtins.MutableString&gt;, IronRuby.Builtins.RubyClass, System.Object[], IronRuby.Builtins.MutableString&gt;(IronRuby.Builtins.RubyFileOps.Join)
             );
@@ -1136,22 +1101,6 @@ namespace IronRuby.Builtins {
             
             module.DefineRuleGenerator(&quot;open&quot;, 0x61, IronRuby.Builtins.RubyFileOps.Open());
             
-            module.DefineLibraryMethod(&quot;owned?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsUserOwned)
-            );
-            
-            module.DefineLibraryMethod(&quot;pipe?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsPipe)
-            );
-            
-            module.DefineLibraryMethod(&quot;readable?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsReadable)
-            );
-            
-            module.DefineLibraryMethod(&quot;readable_real?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsReadable)
-            );
-            
             module.DefineLibraryMethod(&quot;readlink&quot;, 0x61, 
                 new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.Readlink)
             );
@@ -1160,26 +1109,6 @@ namespace IronRuby.Builtins {
                 new System.Func&lt;IronRuby.Runtime.RubyContext, IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.MutableString, System.Int32&gt;(IronRuby.Builtins.RubyFileOps.Rename)
             );
             
-            module.DefineLibraryMethod(&quot;setgid?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsSetGid)
-            );
-            
-            module.DefineLibraryMethod(&quot;setuid?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsSetUid)
-            );
-            
-            module.DefineLibraryMethod(&quot;size&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Int32&gt;(IronRuby.Builtins.RubyFileOps.Size)
-            );
-            
-            module.DefineLibraryMethod(&quot;size?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Object&gt;(IronRuby.Builtins.RubyFileOps.NullableSize)
-            );
-            
-            module.DefineLibraryMethod(&quot;socket?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsSocket)
-            );
-            
             module.DefineLibraryMethod(&quot;split&quot;, 0x61, 
                 new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, IronRuby.Builtins.RubyArray&gt;(IronRuby.Builtins.RubyFileOps.Split)
             );
@@ -1188,22 +1117,12 @@ namespace IronRuby.Builtins {
                 new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.IO.FileSystemInfo&gt;(IronRuby.Builtins.RubyFileOps.Stat)
             );
             
-            module.DefineLibraryMethod(&quot;sticky?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsSticky)
-            );
-            
             #if !SILVERLIGHT
             module.DefineLibraryMethod(&quot;symlink&quot;, 0x61, 
                 new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Object&gt;(IronRuby.Builtins.RubyFileOps.SymLink)
             );
             
             #endif
-            #if !SILVERLIGHT
-            module.DefineLibraryMethod(&quot;symlink?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsSymLink)
-            );
-            
-            #endif
             module.DefineLibraryMethod(&quot;umask&quot;, 0x61, 
                 new System.Func&lt;IronRuby.Builtins.RubyClass, System.Int32, System.Int32&gt;(IronRuby.Builtins.RubyFileOps.GetUmask), 
                 new System.Func&lt;IronRuby.Builtins.RubyClass, System.Int32&gt;(IronRuby.Builtins.RubyFileOps.GetUmask)
@@ -1221,18 +1140,6 @@ namespace IronRuby.Builtins {
             );
             
             #endif
-            module.DefineLibraryMethod(&quot;writable?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsWritable)
-            );
-            
-            module.DefineLibraryMethod(&quot;writable_real?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsWritable)
-            );
-            
-            module.DefineLibraryMethod(&quot;zero?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.RubyFileOps.IsZeroLength)
-            );
-            
         }
         
         private static void LoadFile__Constants_Constants(IronRuby.Builtins.RubyModule/*!*/ module) {
@@ -1424,12 +1331,98 @@ namespace IronRuby.Builtins {
         #endif
         
         private static void LoadFileTest_Class(IronRuby.Builtins.RubyModule/*!*/ module) {
+            module.DefineLibraryMethod(&quot;blockdev?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsBlockDevice)
+            );
+            
+            module.DefineLibraryMethod(&quot;chardev?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsCharDevice)
+            );
+            
+            module.DefineLibraryMethod(&quot;directory?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsDirectory)
+            );
+            
+            module.DefineLibraryMethod(&quot;executable?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsExecutable)
+            );
+            
+            module.DefineLibraryMethod(&quot;executable_real?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsExecutable)
+            );
+            
             module.DefineLibraryMethod(&quot;exist?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTestOps.Exists)
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.Exists)
             );
             
             module.DefineLibraryMethod(&quot;exists?&quot;, 0x61, 
-                new System.Func&lt;IronRuby.Builtins.RubyClass, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTestOps.Exists)
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.Exists)
+            );
+            
+            module.DefineLibraryMethod(&quot;file?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsAFile)
+            );
+            
+            module.DefineLibraryMethod(&quot;grpowned?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsGroupOwned)
+            );
+            
+            module.DefineLibraryMethod(&quot;owned?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsUserOwned)
+            );
+            
+            module.DefineLibraryMethod(&quot;pipe?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsPipe)
+            );
+            
+            module.DefineLibraryMethod(&quot;readable?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsReadable)
+            );
+            
+            module.DefineLibraryMethod(&quot;readable_real?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsReadable)
+            );
+            
+            module.DefineLibraryMethod(&quot;setgid?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsSetGid)
+            );
+            
+            module.DefineLibraryMethod(&quot;setuid?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsSetUid)
+            );
+            
+            module.DefineLibraryMethod(&quot;size&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Int32&gt;(IronRuby.Builtins.FileTest.Size)
+            );
+            
+            module.DefineLibraryMethod(&quot;size?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Object&gt;(IronRuby.Builtins.FileTest.NullableSize)
+            );
+            
+            module.DefineLibraryMethod(&quot;socket?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsSocket)
+            );
+            
+            module.DefineLibraryMethod(&quot;sticky?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsSticky)
+            );
+            
+            #if !SILVERLIGHT
+            module.DefineLibraryMethod(&quot;symlink?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsSymLink)
+            );
+            
+            #endif
+            module.DefineLibraryMethod(&quot;writable?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsWritable)
+            );
+            
+            module.DefineLibraryMethod(&quot;writable_real?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsWritable)
+            );
+            
+            module.DefineLibraryMethod(&quot;zero?&quot;, 0x61, 
+                new System.Func&lt;IronRuby.Builtins.RubyModule, IronRuby.Builtins.MutableString, System.Boolean&gt;(IronRuby.Builtins.FileTest.IsZeroLength)
             );
             
         }</diff>
      <filename>Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/IronRuby.Libraries.Build.csproj</filename>
    </modified>
    <modified>
      <diff>@@ -81,7 +81,7 @@
     &lt;Compile Include=&quot;Builtins\Exceptions.cs&quot; /&gt;
     &lt;Compile Include=&quot;Builtins\FalseClass.cs&quot; /&gt;
     &lt;Compile Include=&quot;Builtins\FileOps.cs&quot; /&gt;
-    &lt;Compile Include=&quot;Builtins\FileTestOps.cs&quot; /&gt;
+    &lt;Compile Include=&quot;Builtins\FileTest.cs&quot; /&gt;
     &lt;Compile Include=&quot;Builtins\FixnumOps.cs&quot; /&gt;
     &lt;Compile Include=&quot;Builtins\FloatOps.cs&quot; /&gt;
     &lt;Compile Include=&quot;Builtins\RubyGC.cs&quot; /&gt;</diff>
      <filename>Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/IronRuby.Libraries.csproj</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileTestOps.cs</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>483c07b24e02bc67425a697f5fd686ef7825da12</id>
    </parent>
  </parents>
  <author>
    <name>Jim Deville</name>
    <email>jdeville@microsoft.com</email>
  </author>
  <url>http://github.com/ironruby/ironruby/commit/34a43adf6e19a84c2ee1be80ad240411858322d8</url>
  <id>34a43adf6e19a84c2ee1be80ad240411858322d8</id>
  <committed-date>2009-06-24T19:47:00-07:00</committed-date>
  <authored-date>2009-06-24T19:14:13-07:00</authored-date>
  <message>Syncing to head of TFS</message>
  <tree>7957198c2a22f5cf790d0e144d12788ddf671233</tree>
  <committer>
    <name>Jim Deville</name>
    <email>jdeville@microsoft.com</email>
  </committer>
</commit>
