getSubdirectory(dir: string): RemoteDirectory {
   const uri = nuclideUri.createRemoteUri(
     this._host,
     this._joinLocalPath(dir),
   );
   return this._server.createDirectory(uri, this._hgRepositoryDescription);
 }
 getFile(filename: string): RemoteFile {
   const uri = nuclideUri.createRemoteUri(
     this._host,
     this._joinLocalPath(filename),
   );
   return this._server.createFile(uri);
 }
 getParent(): RemoteDirectory {
   if (this.isRoot()) {
     return this;
   } else {
     const uri = nuclideUri.createRemoteUri(
       this._host,
       nuclideUri.dirname(this._localPath),
     );
     return this._server.createDirectory(uri, this._hgRepositoryDescription);
   }
 }
  _handleAttachButtonClick(): void {
    // Start a debug session with the user-supplied information.
    const {hostname} = nuclideUri.parseRemoteUri(this.props.targetUri);
    const selectedPath = this.state.pathMenuItems[this.state.selectedPathIndex]
      .label;
    const processInfo = new AttachProcessInfo(
      nuclideUri.createRemoteUri(hostname, selectedPath),
    );
    consumeFirstProvider('nuclide-debugger.remote').then(debuggerService =>
      debuggerService.startDebugging(processInfo),
    );

    serializeDebuggerConfig(...this._getSerializationArgs(), {
      selectedPath,
    });
  }
 .forEach(entry => {
   const [name, isFile, symlink] = entry;
   const uri = nuclideUri.createRemoteUri(
     this._host,
     this._joinLocalPath(name),
   );
   if (isFile) {
     files.push(this._server.createFile(uri, symlink));
   } else {
     directories.push(
       this._server.createDirectory(
         uri,
         this._hgRepositoryDescription,
         symlink,
       ),
     );
   }
 });
 .map(remotePath => {
   const {hostname} = nuclideUri.parseRemoteUri(remotePath);
   return nuclideUri.createRemoteUri(hostname, '/');
 })