code: private void load(ByteBuffer bytes) throws IOException {
          //dataVersion=ICUBinary.readHeaderAndDataVersion(bytes, DATA_FORMAT, IS_ACCEPTABLE);
          ICUBinary.readHeader(bytes, DATA_FORMAT, IS_ACCEPTABLE);
          int indexesLength=bytes.getInt()/4;  // inIndexes[IX_VALUE_MAPS_OFFSET]/4
          if(indexesLength<8) {  // formatVersion 2 initially has 8 indexes
              throw new IOException("pnames.icu: not enough indexes");
          }
          int[] inIndexes=new int[indexesLength];
          inIndexes[0]=indexesLength*4;
          for(int i=1; i<indexesLength; ++i) {
              inIndexes[i]=bytes.getInt();
          }
  
          // Read the valueMaps.
          int offset=inIndexes[IX_VALUE_MAPS_OFFSET];
          int nextOffset=inIndexes[IX_BYTE_TRIES_OFFSET];
          int numInts=(nextOffset-offset)/4;
          valueMaps=ICUBinary.getInts(bytes, numInts, 0);
  
          // Read the bytesTries.
          offset=nextOffset;
          nextOffset=inIndexes[IX_NAME_GROUPS_OFFSET];
          int numBytes=nextOffset-offset;
          bytesTries=new byte[numBytes];
          bytes.get(bytesTries);
  
          // Read the nameGroups and turn them from ASCII bytes into a Java String.
          offset=nextOffset;
          nextOffset=inIndexes[IX_RESERVED3_OFFSET];
          numBytes=nextOffset-offset;
          StringBuilder sb=new StringBuilder(numBytes);
          for(int i=0; i<numBytes; ++i) {
              sb.append((char)bytes.get());
          }
          nameGroups=sb.toString();
      }
docs: "pnam"