code: @SuppressWarnings("unchecked")
      static <S extends Storable> PropertyFilter<S> getCanonical(ChainedProperty<S> property,
                                                                 RelOp op,
                                                                 int bindID)
      {
          return (PropertyFilter<S>) cCanonical
              .put(new PropertyFilter<S>(property, op, bindID, null));
      }
docs: Returns a canonical instance, creating a new one if there isn't one
  already in the cache.
  
  @throws IllegalArgumentException if property or operator is null