code: protected void compare(Object expected, Object actual,
                             Node control, Node test, DifferenceListener listener,
                             Difference difference, XpathNodeTracker controlLoc,
                             XpathNodeTracker testLoc)
          throws DifferenceFoundException {
          NodeDetail controlDetail = new NodeDetail(String.valueOf(expected),
                                                    control,
                                                    controlLoc == null ? null
                                                    : controlLoc.toXpathString());
          NodeDetail testDetail = new NodeDetail(String.valueOf(actual),
                                                 test,
                                                 testLoc == null ? null
                                                 : testLoc.toXpathString());
          Difference differenceInstance = new Difference(difference, 
                                                         controlDetail, testDetail);
          if (unequal(expected, actual)) {
              listener.differenceFound(differenceInstance);
              if (controller.haltComparison(differenceInstance)) {
                  throw flowControlException;
              }
          } else if (matchTracker != null) {
              matchTracker.matchFound(differenceInstance);
          }
      }
docs: If the expected and actual values are unequal then inform the listener of
  a difference and throw a DifferenceFoundException.
  @param expected
  @param actual
  @param control
  @param test
  @param listener
  @param difference
  @param controlLoc
  @param testLoc
  @throws DifferenceFoundException