code: public static void restoreFromCheckpoint(CheckpointInputStream input,
        List<? extends Checkpointed> components) throws IOException {
      CompoundCheckpointReader reader = new CompoundCheckpointReader(input);
      Optional<Entry> next;
      while ((next = reader.nextCheckpoint()).isPresent()) {
        Entry nextEntry = next.get();
        boolean found = false;
        for (Checkpointed component : components) {
          if (component.getCheckpointName().equals(nextEntry.getName())) {
            component.restoreFromCheckpoint(nextEntry.getStream());
            found = true;
            break;
          }
        }
        if (!found) {
          throw new RuntimeException(String.format(
              "Unrecognized checkpoint name: %s. Existing components: %s", nextEntry.getName(), Arrays
                  .toString(StreamUtils.map(Checkpointed::getCheckpointName, components).toArray())));
        }
      }
    }
docs: Restores the given checkpointed components from a composite checkpoint.
  
  This is the complement of {@link #writeToCheckpoint(OutputStream, List)}.
  
  @param input the stream to read from
  @param components the components to restore