class SimpleOffsetSerializer {

  public static <T> T deserialize(Bytes bytes, Class<T> classInfo) {
    MutableInt bytePointer = new MutableInt(0);
    if (!isPrimitive(classInfo)) {
      return SSZ.decode(
          bytes,
          reader -> {
            final T result =
                deserializeContainerErrorWrapper(classInfo, reader, bytePointer, bytes.size());
            assertAllDataRead(reader);
            return result;
          });
    } else {
      return SSZ.decode(
          bytes,
          reader -> {
            final T result = (T) deserializePrimitive(classInfo, reader, bytePointer);
            assertAllDataRead(reader);
            return result;
          });
    }
  }

}