code: private boolean processSasFilePageMeta() throws IOException {
          int bitOffset = sasFileProperties.isU64() ? PAGE_BIT_OFFSET_X64 : PAGE_BIT_OFFSET_X86;
          readPageHeader();
          List<SubheaderPointer> subheaderPointers = new ArrayList<SubheaderPointer>();
          if (currentPageType == PAGE_META_TYPE_1 || currentPageType == PAGE_META_TYPE_2
                  || currentPageType == PAGE_MIX_TYPE) {
              processPageMetadata(bitOffset, subheaderPointers);
          }
          return currentPageType == PAGE_DATA_TYPE || currentPageType == PAGE_MIX_TYPE
                  || currentPageDataSubheaderPointers.size() != 0;
      }
docs: The method to read pages of the sas7bdat file. First, the method reads the page type
  (at the {@link SasFileConstants#PAGE_TYPE_OFFSET} offset), the number of rows on the page
  (at the {@link SasFileConstants#BLOCK_COUNT_OFFSET} offset), and the number of subheaders
  (at the {@link SasFileConstants#SUBHEADER_COUNT_OFFSET} offset). Then, depending on the page type,
  the method calls the function to process the page.
  
  @return true if all metadata is read.
  @throws IOException if reading from the {@link SasFileParser#sasFileStream} stream is impossible.