code: @SuppressWarnings("unchecked")
      public final List<Object> merge(final URI property, final List<? extends Object> oldValues,
              final List<? extends Object> newValues) {
  
          Preconditions.checkNotNull(oldValues);
          Preconditions.checkNotNull(newValues);
  
          return doMerge(property, (List<Object>) oldValues, (List<Object>) newValues);
      }
docs: Merges old and new values of the property specified, returning the resulting list of
  values. Input value lists are not affected. In case the property specified is not supported
  by this {@code Criteria} object, the old list of values is returned.
  
  @param property
  the property to merge (used to control whether merging should be performed and
  which strategy should be adopted in case of a composed {@code Criteria} object)
  @param oldValues
  a list with the old values of the property, not null
  @param newValues
  a list with the new values of the property, not null
  @return the list of values obtained by applying the merge criteria