public synchronized CMVFSDir fetchSubDir(final String path, final boolean create)
		{
			final String[] ppath=path.split("/");
			CMVFSDir currDir=this;
			for(final String p : ppath)
				if(p.length()>0)
				{
					synchronized(currDir)
					{
						final CMVFSDir key = new CMVFSDir(currDir,currDir.getPath()+p+"/");
						int dex = -1;
						final CMVFSFile[] files=currDir.getFiles();
						if(files!=null)
							dex=Arrays.binarySearch(files, key, fcomparator);
						if((files!=null)&&(dex>=0))
						{
							if(files[dex] instanceof CMVFSDir)
							{
								currDir=(CMVFSDir)files[dex];
								continue;
							}
							return null; // found a step, but its a file, not a subdir
						}
						else
						if(!create)
							return null;
						if(files==null) currDir.files=new CMVFSFile[0];
						currDir.files=Arrays.copyOf(currDir.files, currDir.files.length+1);
						currDir.files[currDir.files.length-1]=key;
						Arrays.sort(currDir.files,fcomparator);
						currDir=key;
					}
				}
			return currDir;
		}