public static Change readChange(DataInput in) throws IOException {
    int type = DataInputOutputUtil.readINT(in);
    return switch (type) {
      case 1 -> new CreateFileChange(in);
      case 2 -> new CreateDirectoryChange(in);
      case 3 -> new ContentChange(in);
      case 4 -> new RenameChange(in);
      case 5 -> new ROStatusChange(in);
      case 6 -> new MoveChange(in);
      case 7 -> new DeleteChange(in);
      case 8 -> new PutLabelChange(in);
      case 9 -> new PutSystemLabelChange(in);
      default -> throw new IOException("unexpected change type: " + type);
    };
  }
public static Change readChange(DataInput in)