code: public static <T> T deepCloneOnlyIfContains(final T objectToBeClonned,
              final List<T> objects) throws CloneNotSupportedException {
          if (objectToBeClonned == null || objects == null) {
              return objectToBeClonned;
          }
          final Set<T> objectsSet = new HashSet<>(objects);
          return objectsSet.contains(objectToBeClonned)
                  ? deepClone(objectToBeClonned)
                  : objectToBeClonned;
      }
docs: clones only if {@code objects} contains the given
  {@code objectToBeClonned}, otherwise returns the same object.
  
  @param objectToBeClonned
  from which a new object will be cloned.
  {@code null} will be returned for null
  value.
  @param objects
  to check if it contains
  {@code objectToBeClonned}.
  @return the new cloned object only if {@code objects} contains the given
  {@code objectToBeClonned}, otherwise returns the same object. If
  {@code objectToBeClonned} is null then returns {@code null}. If
  {@code objects} is null then {@code objectToBeClonned} will be
  returned.
  @throws CloneNotSupportedException
  @since 1.0.0
  @author WFF