Index: src/org/jruby/util/IOHandlerSeekable.java
===================================================================
RCS file: /cvsroot/jruby/jruby/src/org/jruby/util/IOHandlerSeekable.java,v
retrieving revision 1.18
diff -u -r1.18 IOHandlerSeekable.java
--- src/org/jruby/util/IOHandlerSeekable.java	24 May 2006 01:34:04 -0000	1.18
+++ src/org/jruby/util/IOHandlerSeekable.java	28 May 2006 13:22:56 -0000
@@ -58,12 +58,8 @@
         
         this.path = path;
         this.modes = modes;
-        NormalizedFile theFile = new NormalizedFile(path);
+        final JRubyFile theFile = JRubyFile.create(runtime.getCurrentDirectory(),path);
         
-        if (!theFile.isAbsolute()) {
-            theFile = (NormalizedFile)new NormalizedFile(getRuntime().getCurrentDirectory(), path).getAbsoluteFile();
-        }
-
         if (theFile.exists()) {
             if (modes.shouldTruncate()) {
                 // If we only want to open for writing we should remove
Index: src/org/jruby/runtime/builtin/meta/FileMetaClass.java
===================================================================
RCS file: /cvsroot/jruby/jruby/src/org/jruby/runtime/builtin/meta/FileMetaClass.java,v
retrieving revision 1.23
diff -u -r1.23 FileMetaClass.java
--- src/org/jruby/runtime/builtin/meta/FileMetaClass.java	26 Apr 2006 02:43:49 -0000	1.23
+++ src/org/jruby/runtime/builtin/meta/FileMetaClass.java	28 May 2006 13:12:20 -0000
@@ -49,7 +49,7 @@
 import org.jruby.runtime.Arity;
 import org.jruby.runtime.builtin.IRubyObject;
 import org.jruby.util.IOModes;
-import org.jruby.util.NormalizedFile;
+import org.jruby.util.JRubyFile;
 import org.jruby.util.collections.SinglyLinkedList;
 
 public class FileMetaClass extends IOMetaClass {
@@ -290,7 +290,7 @@
 			}
 		}
 
-        if (new NormalizedFile(relativePath).isAbsolute()) {
+        if (new File(relativePath).isAbsolute()) {
             return getRuntime().newString(relativePath);
         }
 
@@ -304,7 +304,7 @@
             return getRuntime().getNil();
         }
 
-        NormalizedFile path = new NormalizedFile(cwd, relativePath);
+        JRubyFile path = JRubyFile.create(cwd, relativePath);
 
         String extractedPath;
         try {
@@ -330,13 +330,13 @@
 
     public IRubyObject lstat(IRubyObject filename) {
     	RubyString name = RubyString.stringValue(filename);
-        return getRuntime().newRubyFileStat(new NormalizedFile(name.toString()));
+        return getRuntime().newRubyFileStat(JRubyFile.create(getRuntime().getCurrentDirectory(),name.toString()));
     }
     
     public IRubyObject mtime(IRubyObject filename) {
         RubyString name = RubyString.stringValue(filename);
 
-        return getRuntime().newFixnum(new NormalizedFile(name.toString()).lastModified());
+        return getRuntime().newFixnum(JRubyFile.create(getRuntime().getCurrentDirectory(),name.toString()).lastModified());
     }
 
 	public IRubyObject open(IRubyObject[] args) {
@@ -376,12 +376,12 @@
     	RubyString newNameString = RubyString.stringValue(newName);
         oldNameString.checkSafeString();
         newNameString.checkSafeString();
-        NormalizedFile oldFile = new NormalizedFile(oldNameString.toString());
+        JRubyFile oldFile = JRubyFile.create(getRuntime().getCurrentDirectory(),oldNameString.toString());
         
         if (!oldFile.exists()) {
         	throw getRuntime().newErrnoENOENTError("No such file: " + oldNameString);
         }
-        oldFile.renameTo(new NormalizedFile(newNameString.toString()));
+        oldFile.renameTo(JRubyFile.create(getRuntime().getCurrentDirectory(),newNameString.toString()));
         
         return RubyFixnum.zero(getRuntime());
     }
@@ -450,7 +450,7 @@
         for (int i = 2, j = args.length; i < j; i++) {
             RubyString filename = RubyString.stringValue(args[i]);
             filename.checkSafeString();
-            NormalizedFile fileToTouch = new NormalizedFile(filename.toString());
+            JRubyFile fileToTouch = JRubyFile.create(getRuntime().getCurrentDirectory(),filename.toString());
             
             if (!fileToTouch.exists()) {
                 throw getRuntime().newErrnoENOENTError(" No such file or directory - \"" + 
@@ -467,7 +467,7 @@
         for (int i = 0; i < args.length; i++) {
         	RubyString filename = RubyString.stringValue(args[i]);
             filename.checkSafeString();
-            NormalizedFile lToDelete = new NormalizedFile(filename.toString());
+            JRubyFile lToDelete = JRubyFile.create(getRuntime().getCurrentDirectory(),filename.toString());
             if (!lToDelete.exists()) {
 				throw getRuntime().newErrnoENOENTError(" No such file or directory - \"" + filename + "\"");
 			}
Index: src/org/jruby/Ruby.java
===================================================================
RCS file: /cvsroot/jruby/jruby/src/org/jruby/Ruby.java,v
retrieving revision 1.118
diff -u -r1.118 Ruby.java
--- src/org/jruby/Ruby.java	30 Apr 2006 16:34:26 -0000	1.118
+++ src/org/jruby/Ruby.java	28 May 2006 12:15:18 -0000
@@ -89,7 +89,7 @@
 import org.jruby.runtime.load.IAutoloadMethod;
 import org.jruby.runtime.load.LoadService;
 import org.jruby.util.BuiltinScript;
-import org.jruby.util.NormalizedFile;
+import org.jruby.util.JRubyFile;
 import org.jruby.util.collections.SinglyLinkedList;
 
 /**
@@ -134,7 +134,7 @@
     private IRubyObject topSelf;
     
     // former java.lang.System concepts now internalized for MVM
-    private String currentDirectory = NormalizedFile.getFileProperty("user.dir");
+    private String currentDirectory = JRubyFile.getFileProperty("user.dir");
     private InputStream in;
     private PrintStream out;
     private PrintStream err;
@@ -991,7 +991,7 @@
     }
     
     public RubyFileStat newRubyFileStat(File file) {
-    	return new RubyFileStat(this, new NormalizedFile(file.getPath()));
+    	return new RubyFileStat(this, JRubyFile.create(currentDirectory,file.getPath()));
     }
     
     public RubyFixnum newFixnum(long value) {
Index: src/org/jruby/RubyDir.java
===================================================================
RCS file: /cvsroot/jruby/jruby/src/org/jruby/RubyDir.java,v
retrieving revision 1.37
diff -u -r1.37 RubyDir.java
--- src/org/jruby/RubyDir.java	21 Apr 2006 01:39:58 -0000	1.37
+++ src/org/jruby/RubyDir.java	28 May 2006 12:25:08 -0000
@@ -40,7 +40,7 @@
 import org.jruby.runtime.CallbackFactory;
 import org.jruby.runtime.builtin.IRubyObject;
 import org.jruby.util.Glob;
-import org.jruby.util.NormalizedFile;
+import org.jruby.util.JRubyFile;
 
 /**
  * .The Ruby built-in class Dir.
@@ -50,7 +50,7 @@
 public class RubyDir extends RubyObject {
 	// What we passed to the constructor for method 'path'
     private RubyString    path;
-    protected NormalizedFile      dir;
+    protected JRubyFile      dir;
     private   String[]  snapshot;   // snapshot of contents of directory
     private   int       pos;        // current position in directory
     private boolean isOpen = true;
@@ -117,8 +117,7 @@
     public IRubyObject initialize(RubyString newPath) {
         newPath.checkSafeString();
 
-// TODO: Consolidate this absolute file nonsense
-        dir = (NormalizedFile)new NormalizedFile(newPath.toString()).getAbsoluteFile();
+        dir = JRubyFile.create(getRuntime().getCurrentDirectory(),newPath.toString());
         if (!dir.isDirectory()) {
             dir = null;
             throw getRuntime().newErrnoENOENTError(newPath.toString() + " is not a directory");
@@ -157,11 +156,7 @@
      * Returns an array containing all of the filenames in the given directory.
      */
     public static RubyArray entries(IRubyObject recv, RubyString path) {
-        if (".".equals(path.toString().trim())) {
-            path = recv.getRuntime().newString(recv.getRuntime().getCurrentDirectory());
-        }
-        
-        NormalizedFile directory = new NormalizedFile(path.toString());
+        final JRubyFile directory = JRubyFile.create(recv.getRuntime().getCurrentDirectory(),path.toString());
         
         if (!directory.isDirectory()) {
             throw recv.getRuntime().newErrnoENOENTError("No such directory");
@@ -178,7 +173,7 @@
         recv.checkArgumentCount(args, 0, 1);
         RubyString path = args.length == 1 ? 
             (RubyString) args[0].convertToString() : getHomeDirectoryPath(recv); 
-        NormalizedFile dir = getDir(recv.getRuntime(), path.toString(), true);
+        JRubyFile dir = getDir(recv.getRuntime(), path.toString(), true);
         String realPath = null;
         String oldCwd = recv.getRuntime().getCurrentDirectory();
         
@@ -221,7 +216,7 @@
      * be empty.
      */
     public static IRubyObject rmdir(IRubyObject recv, RubyString path) {
-        NormalizedFile directory = getDir(recv.getRuntime(), path.toString(), true);
+        final JRubyFile directory = getDir(recv.getRuntime(), path.toString(), true);
         
         if (!directory.delete()) {
             throw recv.getRuntime().newSystemCallError("No such directory");
@@ -267,7 +262,6 @@
 
         File newDir = getDir(recv.getRuntime(), path, false);
         if (File.separatorChar == '\\') {
-            // FIXME: NormalizedFile's mkdirs doesn't work on windows with forward slashes...
             newDir = new File(newDir.getPath());
         }
         
@@ -379,23 +373,9 @@
      * @param   mustExist is true the directory must exist.  If false it must not.
      * @throws  IOError if <code>path</code> is not a directory.
      */
-    protected static NormalizedFile getDir(IRuby runtime, String path, boolean mustExist) {
-        NormalizedFile result = new NormalizedFile(path);
-        
-        if (!result.isAbsolute()) {
-            result = new NormalizedFile(runtime.getCurrentDirectory(), path);
-        }
-		
-        // For some reason Java 1.5.x will print correct absolute path on a created file, 
-        // but it will still operate on an old user.dir when performing any action.
-        // This could even happen with older Java runtimes?
-        try {
-			result = (NormalizedFile)result.getCanonicalFile();
-        } catch (IOException e) {
-            result = (NormalizedFile)result.getAbsoluteFile();
-        }
-
-		boolean isDirectory = result.isDirectory();
+    protected static JRubyFile getDir(final IRuby runtime, final String path, final boolean mustExist) {
+        final JRubyFile result = JRubyFile.create(runtime.getCurrentDirectory(),path);
+        final boolean isDirectory = result.isDirectory();
         if (mustExist && !isDirectory) {
             throw runtime.newErrnoENOENTError(path + " is not a directory");
         } else if (!mustExist && isDirectory) {
@@ -409,7 +389,7 @@
      * Returns the contents of the specified <code>directory</code> as an
      * <code>ArrayList</code> containing the names of the files as Java Strings.
      */
-    protected static List getContents(NormalizedFile directory) {
+    protected static List getContents(final File directory) {
         String[] contents = directory.list();
         List result = new ArrayList();
 
@@ -427,9 +407,9 @@
      * Returns the contents of the specified <code>directory</code> as an
      * <code>ArrayList</code> containing the names of the files as Ruby Strings.
      */
-    protected static List getContents(NormalizedFile directory, IRuby runtime) {
-        List result = new ArrayList();
-        String[] contents = directory.list();
+    protected static List getContents(final File directory, final IRuby runtime) {
+        final List result = new ArrayList();
+        final String[] contents = directory.list();
         for (int i=0; i<contents.length; i++) {
             result.add(runtime.newString(contents[i]));
         }
Index: src/org/jruby/RubyFile.java
===================================================================
RCS file: /cvsroot/jruby/jruby/src/org/jruby/RubyFile.java,v
retrieving revision 1.39
diff -u -r1.39 RubyFile.java
--- src/org/jruby/RubyFile.java	20 Apr 2006 02:49:10 -0000	1.39
+++ src/org/jruby/RubyFile.java	28 May 2006 13:01:00 -0000
@@ -47,7 +47,7 @@
 import org.jruby.util.IOHandlerSeekable;
 import org.jruby.util.IOHandlerUnseekable;
 import org.jruby.util.IOModes;
-import org.jruby.util.NormalizedFile;
+import org.jruby.util.JRubyFile;
 import org.jruby.util.IOHandler.InvalidValueException;
 
 /**
@@ -199,7 +199,7 @@
 	}
 
 	public IRubyObject stat() {
-        return getRuntime().newRubyFileStat(new NormalizedFile(path));
+            return getRuntime().newRubyFileStat(JRubyFile.create(getRuntime().getCurrentDirectory(),path));
 	}
 	
     public IRubyObject truncate(IRubyObject arg) {
Index: src/org/jruby/RubyFileStat.java
===================================================================
RCS file: /cvsroot/jruby/jruby/src/org/jruby/RubyFileStat.java,v
retrieving revision 1.12
diff -u -r1.12 RubyFileStat.java
--- src/org/jruby/RubyFileStat.java	26 Apr 2006 01:59:23 -0000	1.12
+++ src/org/jruby/RubyFileStat.java	28 May 2006 13:07:25 -0000
@@ -34,104 +34,141 @@
 
 import org.jruby.runtime.CallbackFactory;
 import org.jruby.runtime.builtin.IRubyObject;
-import org.jruby.util.NormalizedFile;
+import org.jruby.util.JRubyFile;
 
 /**
  * note: renamed from FileStatClass.java
  * Implements File::Stat
  */
 public class RubyFileStat extends RubyObject {
-    private NormalizedFile file;
     private static final int READ = 222;
     private static final int WRITE = 444;
 
-    public static RubyClass createFileStatClass(IRuby runtime) {
-        RubyClass fileStatClass = runtime.getClass("File").defineClassUnder("Stat", 
-        		runtime.getObject());
-    	
-        CallbackFactory callbackFactory = runtime.callbackFactory(RubyFileStat.class);
+    private RubyFixnum blksize;
+    private RubyBoolean is_directory;
+    private RubyBoolean is_file;
+    private RubyString ftype;
+    private RubyFixnum mode;
+    private RubyFixnum mtime;
+    private RubyBoolean is_readable;
+    private RubyBoolean is_writable;
+    private RubyFixnum size;
+    private RubyBoolean is_symlink;
 
+    public static RubyClass createFileStatClass(IRuby runtime) {
+        final RubyClass fileStatClass = runtime.getClass("File").defineClassUnder("Stat",runtime.getObject());
+        final CallbackFactory callbackFactory = runtime.callbackFactory(RubyFileStat.class);
+        //        fileStatClass.defineMethod("<=>", callbackFactory.getMethod(""));
+        //        fileStateClass.includeModule(runtime.getModule("Comparable"));
+        //        fileStatClass.defineMethod("atime", callbackFactory.getMethod(""));
+        fileStatClass.defineMethod("blksize", callbackFactory.getMethod("blksize"));
+        //        fileStatClass.defineMethod("blockdev?", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("blocks", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("chardev?", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("ctime", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("dev", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("dev_major", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("dev_minor", callbackFactory.getMethod(""));
         fileStatClass.defineMethod("directory?", callbackFactory.getMethod("directory_p"));
+        //        fileStatClass.defineMethod("executable?", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("executable_real?", callbackFactory.getMethod(""));
+        fileStatClass.defineMethod("file?", callbackFactory.getMethod("file_p"));
+        fileStatClass.defineMethod("ftype", callbackFactory.getMethod("ftype"));
+        //        fileStatClass.defineMethod("gid", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("grpowned?", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("ino", callbackFactory.getMethod(""));
         fileStatClass.defineMethod("mode", callbackFactory.getMethod("mode"));
         fileStatClass.defineMethod("mtime", callbackFactory.getMethod("mtime"));
+        //        fileStatClass.defineMethod("nlink", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("owned?", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("pipe?", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("rdev", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("rdev_major", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("rdev_minor", callbackFactory.getMethod(""));
+        fileStatClass.defineMethod("readable?", callbackFactory.getMethod("readable_p"));
+        //        fileStatClass.defineMethod("readable_real?", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("setgid?", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("setuid?", callbackFactory.getMethod(""));
         fileStatClass.defineMethod("size", callbackFactory.getMethod("size"));
-        fileStatClass.defineMethod("writable?", callbackFactory.getMethod("writable"));
+        //        fileStatClass.defineMethod("size?", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("socket?", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("sticky?", callbackFactory.getMethod(""));
         fileStatClass.defineMethod("symlink?", callbackFactory.getMethod("symlink_p"));
-        fileStatClass.defineMethod("blksize", callbackFactory.getMethod("blksize"));
-        fileStatClass.defineMethod("readable?", callbackFactory.getMethod("readable_p"));
-        fileStatClass.defineMethod("ftype", callbackFactory.getMethod("ftype"));
-
-        fileStatClass.defineMethod("file?", callbackFactory.getMethod("file_p"));
+        //        fileStatClass.defineMethod("uid", callbackFactory.getMethod(""));
+        fileStatClass.defineMethod("writable?", callbackFactory.getMethod("writable"));
+        //        fileStatClass.defineMethod("writable_real?", callbackFactory.getMethod(""));
+        //        fileStatClass.defineMethod("zero?", callbackFactory.getMethod(""));
     	
         return fileStatClass;
     }
 
-    protected RubyFileStat(IRuby runtime, NormalizedFile file) {
+    protected RubyFileStat(final IRuby runtime, final JRubyFile file) {
         super(runtime, runtime.getClass("File").getClass("Stat"));
-		// In some versions of java changing user.dir will not get reflected in newly constructed
-		// files.  Getting the absolutefile does seem to hack around this...
-        this.file = (NormalizedFile)file.getAbsoluteFile();
+
+        if(!file.exists()) {
+            throw runtime.newErrnoENOENTError("No such file or directory - " + file.getPath());
+        }
+
+        // We cannot determine, so always return 4096 (better than blowing up)
+        this.blksize = runtime.newFixnum(4096);
+        this.is_directory = runtime.newBoolean(file.isDirectory());
+        this.is_file = runtime.newBoolean(file.isFile());
+        this.ftype = file.isDirectory()? runtime.newString("directory") : (file.isFile() ? runtime.newString("file") : null);
+
+    	// implementation to lowest common denominator...Windows has no file mode, but C ruby returns either 0100444 or 0100666
+    	int baseMode = 0100000;
+    	if (file.canRead()) {
+            baseMode += READ;
+    	}    	
+    	if (file.canWrite()) {
+            baseMode += WRITE;
+    	}
+    	this.mode = runtime.newFixnum(baseMode);
+        this.mtime = runtime.newFixnum(file.lastModified());
+        this.is_readable = runtime.newBoolean(file.canRead());
+        this.is_writable = runtime.newBoolean(file.canWrite());
+        this.size = runtime.newFixnum(file.length());
+        // We cannot determine this in Java, so we will always return false (better than blowing up)
+        this.is_symlink = runtime.getFalse();
     }
     
     public RubyFixnum blksize() {
-        // We cannot determine, so always return 4096 (better than blowing up)
-        return RubyFixnum.newFixnum(getRuntime(), 4096);
+        return this.blksize;
     }
 
     public RubyBoolean directory_p() {
-        return getRuntime().newBoolean(file.isDirectory());
+        return this.is_directory;
     }
 
     public RubyBoolean file_p() {
-        return getRuntime().newBoolean(file.isFile());
+        return this.is_file;
     }
     
     public RubyString ftype() {
-        if (!file.exists()) {
-            throw getRuntime().newErrnoENOENTError("No such file or directory: " + file.toString());
-        } else if (file.isDirectory()) {
-            return getRuntime().newString("directory");
-        } else if (file.isFile()) {
-            return getRuntime().newString("file");
-        } else {
-            // possible?
-            assert false: "Not a directory and not a file: " + file;
-            return null;
-        }
+        return this.ftype;
     }
     
     public IRubyObject mode() {
-    	// implementation to lowest common denominator...Windows has no file mode, but C ruby returns either 0100444 or 0100666
-    	int baseMode = 0100000;
-    	if (file.canRead()) {
-    		baseMode += READ;
-    	}
-    	
-    	if (file.canWrite()) {
-    		baseMode += WRITE;
-    	}
-    	
-    	return getRuntime().newFixnum(baseMode);
+        return this.mode;
     }
     
     public IRubyObject mtime() {
-        return getRuntime().newFixnum(file.lastModified());
+        return this.mtime;
     }
     
     public IRubyObject readable_p() {
-        return getRuntime().newBoolean(file.canRead());
+        return this.is_readable;
     }
     
     public IRubyObject size() {
-    	return getRuntime().newFixnum(file.length());
+        return this.size;
     }
     
     public IRubyObject symlink_p() {
-        // We cannot determine this in Java, so we will always return false (better than blowing up)
-        return getRuntime().getFalse();
+        return this.is_symlink;
     }
     
     public IRubyObject writable() {
-    	return getRuntime().newBoolean(file.canWrite());
+    	return this.is_writable;
     }
 }
Index: src/org/jruby/RubyFileTest.java
===================================================================
RCS file: /cvsroot/jruby/jruby/src/org/jruby/RubyFileTest.java,v
retrieving revision 1.19
diff -u -r1.19 RubyFileTest.java
--- src/org/jruby/RubyFileTest.java	9 Apr 2006 20:58:27 -0000	1.19
+++ src/org/jruby/RubyFileTest.java	28 May 2006 13:04:55 -0000
@@ -34,7 +34,7 @@
 
 import org.jruby.runtime.CallbackFactory;
 import org.jruby.runtime.builtin.IRubyObject;
-import org.jruby.util.NormalizedFile;
+import org.jruby.util.JRubyFile;
 
 public class RubyFileTest {
     public static RubyModule createFileTestModule(IRuby runtime) {
@@ -80,9 +80,8 @@
         return filename.getRuntime().newBoolean(newFile(filename).canRead());
     }
     
-    public static IRubyObject size(IRubyObject recv, RubyString filename) {
-        NormalizedFile file = newFile(filename);
-        
+    public static IRubyObject size(final IRubyObject recv, final RubyString filename) {
+        final JRubyFile file = newFile(filename);
         if (!file.exists()) {
             throw recv.getRuntime().newErrnoENOENTError("No such file: " + filename);
         }
@@ -96,30 +95,17 @@
     }
     
     public static RubyBoolean zero_p(IRubyObject recv, RubyString filename) {
-        NormalizedFile file = newFile(filename);
-		
+        final JRubyFile file = newFile(filename);
         return filename.getRuntime().newBoolean(file.exists() && file.length() == 0L);
     }
 
     public static RubyBoolean file_p(IRubyObject recv, RubyString filename) {
-        NormalizedFile file = newFile(filename);
-		
+        final JRubyFile file = newFile(filename);
         return filename.getRuntime().newBoolean(file.isFile());
     }
     
-	private static NormalizedFile newFile(RubyString path) {
-		NormalizedFile file = new NormalizedFile(path.toString());
-        
-        if (!file.isAbsolute()) {
-            file = new NormalizedFile(path.getRuntime().getCurrentDirectory(), path.toString());
-        }
-		
-		try {
-			file = (NormalizedFile)file.getCanonicalFile();
-		} catch (IOException e) {
-			file = (NormalizedFile)file.getAbsoluteFile();
-		}
-		
-		return file;
-	}
+    private static JRubyFile newFile(final RubyString path) {
+        final JRubyFile file = JRubyFile.create(path.getRuntime().getCurrentDirectory(),path.toString());
+        return file;
+    }
 }
