code: public Record remove(final URI property, @Nullable final Object first, final Object... other)
              throws IllegalArgumentException {
          Preconditions.checkNotNull(property);
          final List<Object> removed = Lists.newArrayList();
          Data.normalize(first, removed);
          Data.normalize(other, removed);
          if (!removed.isEmpty()) {
              synchronized (this) {
                  final Set<Object> values = Sets.newHashSet(get(property));
                  final boolean changed = values.removeAll(removed);
                  if (changed) {
                      doSet(property, values);
                  }
              }
          }
          return this;
      }
docs: Removes one or more values from the property specified. The method accepts one or more
  objects as the values; these objects can be {@code Record}s, {@code URI}s, {@code BNode}s,
  {@code Statement}s, {@code Literal}s, objects convertible to {@code Literal} or any array
  or iterable of the former types.
  
  @param property
  the property to modify
  @param first
  the first value, array or iterable of values to remove, possibly null
  @param other
  additional values, arrays or iterables of values to remove (if specified, will
  be merged with {@code first}).
  @return this record object, for call chaining
  @throws IllegalArgumentException
  if one of the supplied values has an unsupported type