code: @SuppressWarnings("deprecation")
      @Override
      public int compareTo(Evidence o) {
          if (o == null) {
              throw new IllegalArgumentException("Unable to compare null evidence");
          }
          if (StringUtils.equalsIgnoreCase(source, o.source)) {
              if (StringUtils.equalsIgnoreCase(name, o.name)) {
                  if (StringUtils.equalsIgnoreCase(value, o.value)) {
                      //TODO the call to ObjectUtils.equals needs to be replaced when we
                      //stop supporting Jenkins 1.6 requirement.
                      if (ObjectUtils.equals(confidence, o.confidence)) {
                          return 0; //they are equal
                      } else {
                          return ObjectUtils.compare(confidence, o.confidence);
                      }
                  } else {
                      return compareToIgnoreCaseWithNullCheck(value, o.value);
                  }
              } else {
                  return compareToIgnoreCaseWithNullCheck(name, o.name);
              }
          } else {
              return compareToIgnoreCaseWithNullCheck(source, o.source);
          }
      }
docs: Implementation of the comparable interface.
  
  @param o the evidence being compared
  @return an integer indicating the ordering of the two objects