code: public static <T> EntityListener newRecursiveAttributeListener(final NamedAttributeType<T> namedType,
  	    final Supplier<AttributeListener<T>> supplier, final int depth) {
  	if (depth <= 0) {
  	    throw new IllegalArgumentException();
  	}
  	return new RecursiveAttributeListener<>(namedType, supplier, depth);
      }
docs: Creates an recursive entity listener for named attribute type and the supplied attribute
  listener supplier with specified recursion limit.
  
  @param namedType
  Named attribute type being listened for by supplier's listeners.
  @param supplier
  Supplier of the attribute listener to be added to created entities.
  @param depth
  The recursion limit of the listener.
  @return Recursive attribute listener for named type and supplier.