code: public int evaluate(FieldContainer container)
     {
        //
        // First step - determine the list of criteria we are should use
        //
        List<GraphicalIndicatorCriteria> criteria;
        if (container instanceof Task)
        {
           Task task = (Task) container;
           if (NumberHelper.getInt(task.getUniqueID()) == 0)
           {
              if (m_projectSummaryInheritsFromSummaryRows == false)
              {
                 criteria = m_projectSummaryCriteria;
              }
              else
              {
                 if (m_summaryRowsInheritFromNonSummaryRows == false)
                 {
                    criteria = m_summaryRowCriteria;
                 }
                 else
                 {
                    criteria = m_nonSummaryRowCriteria;
                 }
              }
           }
           else
           {
              if (task.getSummary() == true)
              {
                 if (m_summaryRowsInheritFromNonSummaryRows == false)
                 {
                    criteria = m_summaryRowCriteria;
                 }
                 else
                 {
                    criteria = m_nonSummaryRowCriteria;
                 }
              }
              else
              {
                 criteria = m_nonSummaryRowCriteria;
              }
           }
        }
        else
        {
           // It is possible to have a resource summary row, but at the moment
           // I can't see how you can determine this.
           criteria = m_nonSummaryRowCriteria;
        }
  
        //
        // Now we have the criteria, evaluate each one until we get a result
        //
        int result = -1;
        for (GraphicalIndicatorCriteria gic : criteria)
        {
           result = gic.evaluate(container);
           if (result != -1)
           {
              break;
           }
        }
  
        //
        // If we still don't have a result at the end, return the
        // default value, which is 0
        //
        if (result == -1)
        {
           result = 0;
        }
  
        return (result);
     }
docs: This method evaluates a if a graphical indicator should
  be displayed, given a set of Task or Resource data. The
  method will return -1 if no indicator should be displayed.
  
  @param container Task or Resource instance
  @return indicator index