@NotNull
  public static <T> List<T> readSeq(@NotNull DataInput in,
                                    @SuppressWarnings("BoundedWildcard")
                                    @NotNull ThrowableComputable<? extends T, IOException> readElement) throws IOException {
    int size = readINT(in);
    List<T> result = new ArrayList<>(size);
    for (int i = 0; i < size; i++) {
      result.add(readElement.compute());
    }
    return result;
  }
@NotNull
  public static <T> List<T> readSeq(@NotNull DataInput in,
                                    @SuppressWarnings("BoundedWildcard")
                                    @NotNull ThrowableComputable<? extends T, IOException> readElement)