public <T> Class<? extends T> getClass(String path, Class<T> iface, Class<? extends T> defaultImpl) {
  if (this.hasPath(path)) {
    String className = this.getString(path);
    ;
    try {
      Class<?> clazz = Class.forName(className);
      Preconditions.checkArgument(iface.isAssignableFrom(clazz));
      return (Class<? extends T>) clazz;
    } catch (ClassNotFoundException e) {
      throw UserException.unsupportedError(e)
      .message("Failure while attempting to find implementation class %s for interface  %s. The sabot config key is %s ",
          defaultImpl.getName(), iface.getName(), path).build(logger);
    }
  }

  return defaultImpl;
}

        
main