code: public byte[] getBytes() throws IOException {
          if (sectionbytes.isPresent()) {
              return sectionbytes.get().clone();
          }
          loadSectionBytes();
          byte[] result = sectionbytes.get();
          assert result != null;
          return result;
      }
docs: Returns the section bytes. The file is read if the bytes aren't
  already loaded.
  
  @return bytes of the section
  @throws IOException
  if file can not be read
  @throws IllegalStateException
  if section is too large to fit into a byte array. This
  happens if the size is larger than int can hold.