code: private SubheaderPointer processSubheaderPointers(long subheaderPointerOffset, int subheaderPointerIndex)
              throws IOException {
          int intOrLongLength = sasFileProperties.isU64() ? BYTES_IN_LONG : BYTES_IN_INT;
          int subheaderPointerLength = sasFileProperties.isU64() ? SUBHEADER_POINTER_LENGTH_X64
                  : SUBHEADER_POINTER_LENGTH_X86;
          long totalOffset = subheaderPointerOffset + subheaderPointerLength * ((long) subheaderPointerIndex);
          Long[] offset = {totalOffset, totalOffset + intOrLongLength, totalOffset + 2L * intOrLongLength,
                  totalOffset + 2L * intOrLongLength + 1};
          Integer[] length = {intOrLongLength, intOrLongLength, 1, 1};
          List<byte[]> vars = getBytesFromFile(offset, length);
  
          long subheaderOffset = bytesToLong(vars.get(0));
          long subheaderLength = bytesToLong(vars.get(1));
          byte subheaderCompression = vars.get(2)[0];
          byte subheaderType = vars.get(3)[0];
  
          return new SubheaderPointer(subheaderOffset, subheaderLength, subheaderCompression, subheaderType);
      }
docs: The function to read the pointer with the subheaderPointerIndex index from the list of {@link SubheaderPointer}
  located at the subheaderPointerOffset offset.
  
  @param subheaderPointerOffset the offset before the list of {@link SubheaderPointer}.
  @param subheaderPointerIndex  the index of the subheader pointer being read.
  @return the subheader pointer.
  @throws IOException if reading from the {@link SasFileParser#sasFileStream} stream is impossible.