code: private void processConstraintData() throws IOException
     {
        //
        // Locate the directory containing the constraints
        //
        DirectoryEntry consDir;
  
        try
        {
           consDir = (DirectoryEntry) m_projectDir.getEntry("TBkndCons");
        }
  
        catch (FileNotFoundException ex)
        {
           consDir = null;
        }
  
        //
        // It appears possible that valid MPP8 files can be generated without
        // this directory, so only process constraints if the directory
        // exists.
        //
        if (consDir != null)
        {
           FixFix consFixedData = new FixFix(36, new DocumentInputStream(((DocumentEntry) consDir.getEntry("FixFix   0"))));
           int count = consFixedData.getItemCount();
  
           for (int loop = 0; loop < count; loop++)
           {
              byte[] data = consFixedData.getByteArrayValue(loop);
  
              if (MPPUtility.getInt(data, 28) == 0)
              {
                 int taskID1 = MPPUtility.getInt(data, 12);
                 int taskID2 = MPPUtility.getInt(data, 16);
  
                 if (taskID1 != taskID2)
                 {
                    Task task1 = m_file.getTaskByUniqueID(Integer.valueOf(taskID1));
                    Task task2 = m_file.getTaskByUniqueID(Integer.valueOf(taskID2));
                    if (task1 != null && task2 != null)
                    {
                       RelationType type = RelationType.getInstance(MPPUtility.getShort(data, 20));
                       TimeUnit durationUnits = MPPUtility.getDurationTimeUnits(MPPUtility.getShort(data, 22));
                       Duration lag = MPPUtility.getDuration(MPPUtility.getInt(data, 24), durationUnits);
                       Relation relation = task2.addPredecessor(task1, type, lag);
                       m_eventManager.fireRelationReadEvent(relation);
                    }
                 }
              }
           }
        }
     }
docs: This method extracts and collates constraint data.
  
  @throws IOException