code: private UCharacterName.AlgorithmName readAlg() throws IOException
      {
          UCharacterName.AlgorithmName result =
                                         new UCharacterName.AlgorithmName();
          int rangestart = m_byteBuffer_.getInt();
          int rangeend   = m_byteBuffer_.getInt();
          byte type      = m_byteBuffer_.get();
          byte variant   = m_byteBuffer_.get();
          if (!result.setInfo(rangestart, rangeend, type, variant)) {
              return null;
          }
  
          int size = m_byteBuffer_.getChar();
          if (type == UCharacterName.AlgorithmName.TYPE_1_)
          {
              char factor[] = ICUBinary.getChars(m_byteBuffer_, variant, 0);
  
              result.setFactor(factor);
              size -= (variant << 1);
          }
  
          StringBuilder prefix = new StringBuilder();
          char c = (char)(m_byteBuffer_.get() & 0x00FF);
          while (c != 0)
          {
              prefix.append(c);
              c = (char)(m_byteBuffer_.get() & 0x00FF);
          }
  
          result.setPrefix(prefix.toString());
  
          size -= (ALG_INFO_SIZE_ + prefix.length() + 1);
  
          if (size > 0)
          {
              byte string[] = new byte[size];
              m_byteBuffer_.get(string);
              result.setFactorString(string);
          }
          return result;
      }
docs: Reads an individual record of AlgorithmNames
  @return an instance of AlgorithNames if read is successful otherwise null
  @exception IOException thrown when file read error occurs or data is corrupted