code: private Set<ConstraintViolation<Object>> addViolations(
              Set<ConstraintViolation<Object>> source,
              Set<ConstraintViolation<Object>> target) {
          if (supportsConstraintComposition) {
              target.addAll(source);
              return target;
          }
  
          for (final Iterator<ConstraintViolation<Object>> iter = source
                  .iterator(); iter.hasNext(); ) {
              final ConstraintViolation<Object> violation = iter.next();
              final Iterator<Node> nodeIter = violation.getPropertyPath()
                      .iterator();
  
  			/*
  			 * Only include violations that have no property path or just one
  			 * node
  			 */
              if (!nodeIter.hasNext()
                      || (nodeIter.next() != null && !nodeIter.hasNext())) {
                  target.add(violation);
              }
          }
  
          return target;
      }
docs: Add the given source violations to the target set and return the target
  set. This method will skip violations that have a property path depth
  greater than 1.
  
  @param source
  @param target
  @return