code: public Date getFinishDate()
     {
        Date finishDate = null;
  
        for (Task task : m_tasks)
        {
           //
           // If a hidden "summary" task is present we ignore it
           //
           if (NumberHelper.getInt(task.getUniqueID()) == 0)
           {
              continue;
           }
  
           //
           // Select the actual or forecast start date
           //
           Date taskFinishDate;
           taskFinishDate = task.getActualFinish();
           if (taskFinishDate == null)
           {
              taskFinishDate = task.getFinish();
           }
  
           if (taskFinishDate != null)
           {
              if (finishDate == null)
              {
                 finishDate = taskFinishDate;
              }
              else
              {
                 if (taskFinishDate.getTime() > finishDate.getTime())
                 {
                    finishDate = taskFinishDate;
                 }
              }
           }
        }
  
        return (finishDate);
     }
docs: Find the latest task finish date. We treat this as the
  finish date for the project.
  
  @return finish date