anchor.diff:  	  
   	dynamic File(String path){
   	    var root = paths.join(this.options.get('path'),path);
  +            this.checkLock(root);
   	    return GuardedFile.create(root, this.options.get('readonly'));
   	}
     
  
positive.code: 	}
  	 
    	sm.Streamable directoryListsAsString([bool rec,bool ff]){
      return this.directoryLists((o){ return o.path;},rec,ff); 
    	}
    
  	Future rename(String name){
  
negative.code: 	MapDecorator options;
  	MapDecorator links;
  	Switch writable;
  	Switch rootlocked;
  	Directory d;
  	dynamic dm;
    
  	static create(n,m,[l]) => new GuardedDirectory(path:n,readonly:m,lockRoot:l);
  	static use(n,m,[l]) => new GuardedDirectory.openDir(path:n,readonly:m, lockRoot:l);
  	
  	GuardedDirectory({String path, bool readonly: false,bool lockRoot: false}){
            if(!Valids.exist(path)) throw "path must be specified";
            this.d = new Directory(path);
            this._init(readonly,path,lockRoot);
  	}
  
  	GuardedDirectory openDir({String path, bool readonly: false, bool lockRoot:false}){
            if(!Valids.exist(path)) throw "path must be specified";
            this.d = new Directory(path);
            if(Valids.not(this.d.existsSync())) throw new FileSystemException('$path does not exist!',path);
            this._init(readonly,path,lockRoot);
  	}
  
          void _init(readonly,path,lockRoot){
            this.options = new MapDecorator.from({'readonly':readonly, 'path':path,'lockRoot': lockRoot});
            this.links = new MapDecorator();
            this.writable = Switch.create();
            this.rootlocked = Switch.create();
            if(!readonly) this.writable.switchOn();
            if(lockRoot) this.rootlocked.switchOn();
          }
  
          void checkLock(String path){
            if(this.rootlocked.on()){
              if(paths.isWithin(this.options.get('path'),path)) return true;
              throw new FileSystemException("Directory is locked and cant move out of current root directory!");
            }
          }
  
  	Future fsCheck(String path){
  		var real = paths.join(this.options.get('path'),path);
  