code: protected <T> C10NFilterBinder<T> bindFilter(C10NFilterProvider<T> c10NFilterProvider, Class<T> type) {
          Preconditions.assertNotNull(c10NFilterProvider, "c10nFilterProvider");
          Preconditions.assertNotNull(type, "type");
          C10NFilterBinder<T> filterBinder = new C10NFilterBinder<T>(c10NFilterProvider, type);
          filterBinders.add(filterBinder);
          return filterBinder;
      }
docs: <p>Create a filter binding for one or more argument types.
  <p>All arguments passed to c10n-interfaces with the specified type(s) will
  be converted to string using the filter generated by the given filter provider,
  instead of the conventional <code>toString()</code> method.
  
  <p>Filter creation (using {@link com.github.rodionmoiseev.c10n.C10NFilterProvider#get()} method) will be
  deferred until the first call to a c10n-interface method with a matching
  argument type is executed.
  
  @param c10NFilterProvider provider of filter implementation (not-null)
  @param type               method argument type to which the filter should be applied
  @param <T>                method argument type to which the filter should be applied
  @return filter binding DSL object
  @see C10NFilterBinder