code: public void process()
     {
        if (m_data != null)
        {
           int index = 0;
           int offset = 0;
           // First the length (repeated twice)
           int length = MPPUtility.getInt(m_data, offset);
           offset += 8;
           // Then the number of custom columns
           int numberOfAliases = MPPUtility.getInt(m_data, offset);
           offset += 4;
  
           // Then the aliases themselves
           while (index < numberOfAliases && offset < length)
           {
              // Each item consists of the Field ID (2 bytes), 40 0B marker (2 bytes), and the
              // offset to the string (4 bytes)
  
              // Get the Field ID
              int fieldID = MPPUtility.getInt(m_data, offset);
              offset += 4;
              // Get the alias offset (offset + 4 for some reason).
              int aliasOffset = MPPUtility.getInt(m_data, offset) + 4;
              offset += 4;
              // Read the alias itself
              if (aliasOffset < m_data.length)
              {
                 String alias = MPPUtility.getUnicodeString(m_data, aliasOffset);
                 m_fields.getCustomField(FieldTypeHelper.getInstance(fieldID)).setAlias(alias);
              }
              index++;
           }
        }
     }
docs: Process field aliases.