code: public static ConstructorKey key(Class<?> intf, Class<?>... types) {
          return new ClassBasedKey(intf, convert(types));
      }
docs: Creates a constructor key for use in accessing constructors. The key
  combines the interface and types in a single instance which we can then
  use in a map.
  
  @param intf  the interface to build the key for
  @param types the classes that the the constructor requires
  @return a constructor key which can be used to lookup a constructor