code: public StorableIndex<S> uniquify(StorableKey<S> key) {
          if (key == null) {
              throw new IllegalArgumentException();
          }
  
          if (isUnique()) {
              return this;
          }
  
          StorableIndex<S> index = this;
  
          for (OrderedProperty<S> keyProp : key.getProperties()) {
              index = index.addProperty
                  (keyProp.getChainedProperty().getPrimeProperty(), keyProp.getDirection());
          }
  
          return index.unique(true);
      }
docs: Returns a StorableIndex which is unique, possibly by appending
  properties from the given key. If index is already unique, it is
  returned as-is.