class HadoopFileSystem extends FileSystem<HadoopResourceId> {

  @Override
  protected void copy(
      List<HadoopResourceId> srcResourceIds,
      List<HadoopResourceId> destResourceIds) throws IOException {
    for (int i = 0; i < srcResourceIds.size(); ++i) {
      // Unfortunately HDFS FileSystems don't support a native copy operation so we are forced
      // to use the inefficient implementation found in FileUtil which copies all the bytes through
      // the local machine.
      //
      // HDFS FileSystem does define a concat method but could only find the DFSFileSystem
      // implementing it. The DFSFileSystem implemented concat by deleting the srcs after which
      // is not what we want. Also, all the other FileSystem implementations I saw threw
      // UnsupportedOperationException within concat.
      FileUtil.copy(
          fileSystem, srcResourceIds.get(i).toPath(),
          fileSystem, destResourceIds.get(i).toPath(),
          false,
          true,
          fileSystem.getConf());
    }
  }

    HadoopFileSystem(Configuration configuration);

}