docs: public static List<Checkpoint> availableCheckpoints(File directory){
          File checkpointRecordFile = new File(directory, "checkpointInfo.txt");
          Preconditions.checkState(checkpointRecordFile.exists(), "Could not find checkpoint record file at expected path %s", checkpointRecordFile.getAbsolutePath());
  
          List<String> lines;
          try(InputStream is = new BufferedInputStream(new FileInputStream(checkpointRecordFile))){
              lines = IOUtils.readLines(is);
          } catch (IOException e){
              throw new RuntimeException("Error loading checkpoint data from file: " + checkpointRecordFile.getAbsolutePath(), e);
          }
  
          List<Checkpoint> out = new ArrayList<>(lines.size()-1); //Assume first line is header
          for( int i=1; i<lines.size(); i++ ){
              Checkpoint c = Checkpoint.fromFileString(lines.get(i));
              if(new File(directory, c.getFilename()).exists()){
                  out.add(c);
              }
          }
          return out;
      }