code: public int differenceFound(Difference difference) {
          switch (difference.getId()) {
          case DifferenceConstants.ATTR_VALUE_ID:
              return attributeDifference(difference);
          case DifferenceConstants.CDATA_VALUE_ID:
              return cdataDifference(difference);
          case DifferenceConstants.COMMENT_VALUE_ID:
              return commentDifference(difference);
          case DifferenceConstants.TEXT_VALUE_ID:
              return textDifference(difference);
          }
          return delegateTo.differenceFound(difference);
      }
docs: Delegates to the nested DifferenceListener unless the
  Difference is of type {@link DifferenceConstants#ATTR_VALUE_ID
  ATTR_VALUE_ID}, {@link DifferenceConstants#CDATA_VALUE_ID
  CDATA_VALUE_ID}, {@link DifferenceConstants#COMMENT_VALUE_ID
  COMMENT_VALUE_ID} or {@link DifferenceConstants#TEXT_VALUE_ID
  TEXT_VALUE_ID} - for those special differences {@link
  #attributeDifference attributeDifference}, {@link
  #cdataDifference cdataDifference}, {@link #commentDifference
  commentDifference} or {@link #textDifference textDifference}
  are invoked respectively.