@Override
    public List<?> copy(final Kryo kryo, final List<?> original) {
      kryo.reference(FAKE_REFERENCE);
      try {
        final List<?> list = (List<?>) _parentField.get(original);
        final int parentOffset = _parentOffsetField.getInt( original );
        final int fromIndex = parentOffset;
        final int toIndex = fromIndex + _sizeField.getInt( original );
        return kryo.copy(list).subList(fromIndex, toIndex);
      } catch(final Exception e) {
        throw new RuntimeException(e);
      }
    }
Supports sublists created via {@link ArrayList#subList(int, int)} since java7 and {@link LinkedList#subList(int, int)} since java9 (openjdk).
This is from kryo-serializers package.
ql/src/java/org/apache/hadoop/hive/ql/exec/SerializationUtilities.java