code: @Override public ProjectFile read(InputStream is) throws MPXJException
     {
        try
        {
           m_tables = new HashMap<String, List<Row>>();
           m_numberFormat = new DecimalFormat();
  
           processFile(is);
  
           m_reader = new PrimaveraReader(m_taskUdfCounters, m_resourceUdfCounters, m_assignmentUdfCounters, m_resourceFields, m_wbsFields, m_taskFields, m_assignmentFields, m_aliases, m_matchPrimaveraWBS);
           ProjectFile project = m_reader.getProject();
           project.getProjectProperties().setFileApplication("Primavera");
           project.getProjectProperties().setFileType("XER");
           project.getEventManager().addProjectListeners(m_projectListeners);
  
           processProjectID();
           processProjectProperties();
           processActivityCodes();
           processUserDefinedFields();
           processCalendars();
           processResources();
           processResourceRates();
           processTasks();
           processPredecessors();
           processAssignments();
  
           m_reader = null;
           project.updateStructure();
  
           return (project);
        }
  
        finally
        {
           m_reader = null;
           m_tables = null;
           m_currentTableName = null;
           m_currentTable = null;
           m_currentFieldNames = null;
           m_defaultCurrencyName = null;
           m_currencyMap.clear();
           m_numberFormat = null;
           m_defaultCurrencyData = null;
        }
     }
docs: {@inheritDoc}