code: public synchronized Record retain(final URI... properties) {
          for (final URI property : doGetProperties()) {
              boolean retain = false;
              for (int i = 0; i < properties.length; ++i) {
                  if (property.equals(properties[i])) {
                      retain = true;
                      break;
                  }
              }
              if (!retain) {
                  doSet(property, ImmutableSet.<Object>of());
              }
          }
          return this;
      }
docs: Retains only the properties specified, clearing the remaining ones. Note that the ID is not
  affected.
  
  @param properties
  an array with the properties to retain, possibly empty (in which case all the
  stored properties will be cleared)
  @return this record object, for call chaining