code: public Key syncDirectory(ArrayList<String> files,
                             ArrayList<String> keys,
                             ArrayList<String> fails,
                             ArrayList<String> dels) {
  
      Futures fs = new Futures();
      Key k = null;
      // Find all Keys which match ...
      for( int i = 0; i < _files.length; ++i ) {
        if( _ok[i] < H2O.CLOUD.size() ) {
          if( fails != null ) fails.add(_files[i]);
        } else {
          File f = new File(_files[i]);
          // Do not call getCanonicalFile - which resolves symlinks - breaks test harness
  //        try { f = f.getCanonicalFile(); _files[i] = f.getPath(); } // Attempt to canonicalize
  //        catch( IOException ignore ) {}
          k = PersistNFS.decodeFile(f);
          if( files != null ) files.add(_files[i]);
          if( keys  != null ) keys .add(k.toString());
          if( DKV.get(k) != null ) dels.add(k.toString());
          Key lockOwner = Key.make();
          new Frame(k).delete_and_lock(lockOwner); // Lock before making the NFS; avoids racing ImportFiles creating same Frame
          NFSFileVec nfs = NFSFileVec.make(f, fs);
          new Frame(k,new String[]{"C1"}, new Vec[]{nfs}).update(lockOwner).unlock(lockOwner);
        }
      }
      fs.blockForPending();
      return k;
    }
docs: which match the directory name but are not on disk.