code: public void mlsr(String path, MlsxEntryWriter writer)
          throws ServerException, ClientException, IOException {
          if (gSession.parallel > 1) {
              throw new ClientException(
                      ClientException.BAD_MODE,
                      "mlsr cannot be called with parallelism");
          }
          Command cmd = (path == null) ?
                  new Command("MLSR") :
                  new Command("MLSR", path);
  
          MlsxParserDataSink sink = new MlsxParserDataSink(writer);
  
          performTransfer(cmd, sink);
      }
docs: Performs a recursive directory listing starting at the given path
  (or, if path is null, at the current directory of the FTP server).
  MlsxEntry instances for all of the files in the subtree will be
  written through the passed MlsxEntryWriter.
  
  @param path path to begin recursive directory listing
  @param writer sink for created MlsxEntry instances
  @throws ServerException
  @throws ClientException
  @throws IOException