code: @SuppressWarnings("unchecked")
      public SearchKeyFactory<S> getSearchKeyFactory(OrderedProperty<S>[] properties) {
          // This KeyFactory makes arrays work as hashtable keys.
          Object key = KeyFactory.createKey(new Object[] {mCodecKey, properties});
  
          synchronized (cCodecSearchKeyFactories) {
              SearchKeyFactory<S> factory = (SearchKeyFactory<S>) cCodecSearchKeyFactories.get(key);
              if (factory == null) {
                  factory = generateSearchKeyFactory(properties);
                  cCodecSearchKeyFactories.put(key, factory);
              }
              return factory;
          }
      }
docs: Returns a search key factory, which is useful for implementing indexes
  and queries.
  
  @param properties properties to build the search key from