public boolean isIncluded(final Node node) {
   if (node.isRootNode()) {
     return true;
   }
   if (includedCategories.isEmpty() && includedProperties.isEmpty()) {
     return true;
   } else if (containsAny(node.getCategories(), includedCategories)) {
     return true;
   } else if (includedProperties.contains(node.getPropertyPath())) {
     return true;
   }
   return false;
 }
 public boolean isExcluded(final Node node) {
   if (excludedProperties.contains(node.getPropertyPath())) {
     return true;
   }
   if (containsAny(node.getCategories(), excludedCategories)) {
     return true;
   }
   return false;
 }
 public boolean isEqualsOnly(final Node node) {
   final Class<?> propertyType = node.getType();
   if (propertyType != null) {
     if (propertyType.getAnnotation(ObjectDiffEqualsOnlyType.class) != null) {
       return true;
     }
     if (equalsOnlyTypes.contains(propertyType)) {
       return true;
     }
     if (Classes.isSimpleType(propertyType)) {
       return true;
     }
   }
   if (node.isEqualsOnly()) {
     return true;
   }
   if (equalsOnlyProperties.contains(node.getPropertyPath())) {
     return true;
   }
   return false;
 }