anchor.diff:  		if(!readonly) this.writable.switchOn();
   	}
     
  +	GuardedFile.openFile({String path, bool readonly: false}){
  +                if(Valids.exist(path)){
  +                  this.f = new File(path);
  +                  if(!this.f.existsSync()) throw new FileSystemException("$path does not exist!",path);
  +                  this.options = new MapDecorator.from({'readonly': readonly, 'path':path});
  +                  this.writable = Switch.create();
  +                  if(!readonly) this.writable.switchOn();
  +                }
  +	}
   
   	Future fsCheck(){
   		var real = this.options.get('path');
  
positive.code: 	dynamic dm;
    
  	static create(n,m) => new GuardedDirectory(path:n,readonly:m);
  	
  	GuardedDirectory({String path, bool readonly: false}){
      	this.options = new MapDecorator.from({'readonly':readonly, 'path':path});
      	this.links = new MapDecorator();
  		this.d = new Directory(this.options.get('path'));
  		this.writable = Switch.create();
  		if(!readonly) this.writable.switchOn();
  	}
  
  	Future fsCheck(String path){
  
negative.code:   final cache = Hub.createMapDecorator();
    GuardedDirectory dir;
  
    static Future pathExists(String path){
            if(FileSystemEntity.typeSync(path) == FileSystemEntityType.NOT_FOUND) return new Future.error(new FileSystemException('NOT FOUND!',path));
            return new Future.value(path);
    }
  
    static create(p,r) => new GuardedFS(p,r);
    static use(p,r) => new GuardedFS.useFs(p,r);
    
    GuardedFS(String path,bool readonly){
        this.dir = GuardedDirectory.create(path,readonly);
    }
  
    GuardedFS useFs(String path,bool readonly){
      this.dir = GuardedDirectory.use(path,readonly);
    }
  
    Future fsCheck(String path){
      var real = paths.join(this.dir.path,path);
      if(FileSystemEntity.typeSync(real) == FileSystemEntityType.NOT_FOUND) return new Future.error(new FileSystemException('NOT FOUND!',real));
      return new Future.value(real);
    }
    
    dynamic File(String path){
      if(this.cache.storage.length > 100) this.cache.flush();
      var dira = this.cache.get(path);
      if(dira != null && dira is GuardedFile) return dira; 
      dira = this.dir.File(path);
      this.cache.add(path,dira);
      return dira;
    }
  
    dynamic Dir(String path,[bool rec]){
      if(this.cache.storage.length > 100) this.cache.flush();
      var dira = this.cache.get(path);
      if(dira != null && dira is GuardedDirectory) return new Future.value(dira); 
      dira = this.dir.createNewDir(path,rec);
      return dira.then((_){
         this.cache.add(path,_);
         return _; 
      });
    }
  
    dynamic directoryLists([String path,Function transform, bool rec,bool ff]){
      var dir = (path != null ? this.Dir(path,rec) : new Future.value(this.dir));
      return dir.then((_){
         return _.directoryLists(transform,rec,ff);
      });
    }
  
    dynamic directoryListsAsString([String path, bool rec,bool ff]){
      var dir = (path != null ? this.Dir(path,rec) : new Future.value(this.dir));
      return dir.then((_){
         return _.directoryListsAsString(rec,ff);
      });	
    }
  	
    bool get isWritable => this.dir.isWritable;
  	
  }
  