code: @Builder
    public static String generateKey(@Nonnull SharedResourceFactory factory, SharedResourceKey key, ScopeType scopeType,
        @Nonnull String configKey) {
      return JOINER.join(BrokerConstants.GOBBLIN_BROKER_CONFIG_PREFIX, factory.getName(), scopeType == null ? null : scopeType.name(),
          key == null ? null : key.toConfigurationKey(), configKey);
    }
docs: Generate a {@link org.apache.gobblin.broker.iface.SharedResourcesBroker} configuration key for a particular {@link SharedResourceFactory},
  {@link SharedResourceKey} and {@link ScopeType}.
  
  Example:
  If the broker configuration contains a key-value pair with key:
  generateKey(myFactory, myKey, myScopeType, "sample.key")
  when requesting a resource created by myFactory, with the provided key and scope, the factory will be able to see
  the key-value pair specified.
  
  Note:
  {@link SharedResourceKey} and {@link ScopeType} may be null. In this case, the key-value pair will be visible to
  the factory regardless of the key and scope requested by the user.