code: public <F extends Filter> AbstractModule filter(Class<F> klass) {
          String className = Strings.simpleName(klass);
          String name = Strings.decapitalize(className);
          JSFunction<NGFilter> filterFactory = JSFunction.create(new DefaultFilterFactory<F>(name, klass));
          FilterDependencyInspector inspector = GWT.create(FilterDependencyInspector.class);
          JSArray<String> dependencies = JSArray.create(inspector.inspect(klass));
          ngo.filter(name, dependencies, filterFactory);
          return this;
      }
docs: Registers a Filter type with the module. The name of the component is
  derived from the class name, e.g.
  <pre>
  // Derived name is "myFilter". Java package is omitted.
  filter(com.example.MyFilter.class);
  </pre>
  
  @param klass Filter type