class UniqueIdSchemeDelegator {

  public boolean registerDelegate(final String scheme, final T delegate) {
    ArgumentChecker.notNull(scheme, "scheme");
    ArgumentChecker.notNull(delegate, "delegate");
    return _schemeToDelegateMap.putIfAbsent(scheme, delegate) == null;
  }

  public  UniqueIdSchemeDelegator(final T defaultDelegate);
  public  UniqueIdSchemeDelegator(final T defaultDelegate, final Map<String, T> schemePrefixToDelegateMap);

}