code: @SuppressWarnings("unchecked")
      private <T> Creator<T> get(ConstructorKey key) {
  
          Creator<T> creator = (Creator<T>) cache.get(key);
  
          if (creator != null) {
              return creator;
          } else {
              synchronized (lock) {
                  // if the creator is still null... try and find one and register it
                  if ((creator = (Creator<T>) cache.get(key)) == null) {
                      creator = find(key);
                      creator = register(key, creator); // avoids invoking find again
                  }
              }
          }
  
          return creator;
  
      }
docs: Access a constructor for a given constructor key. If the key is not found
  the {@link #find(ConstructorKey)} is automatically invoked.
  
  @param key the constructor key of the interface to find
  @param <T> the type of the constructor
  @return a constructor for the given key
  @throws IllegalArgumentException thrown if a key is provided which cannot
  be resolved.