code: public static <T, B extends ThreadLocalBuilder<T>> T build(
              final Class<B> threadLocalBuilderClass,
              final Consumer<B> builderConsumer) {
          return buildGeneric(threadLocalBuilderClass, builderConsumer);
      }
docs: Consume an instance of the provided builder class after resetting it and
  return the instance resulting from building the builder.
  
  This version infers types by linking the builder class to the return
  type. However, due to type-erasure Java {@code Class} instances do not
  capture generic parameters and using this method will result in compiler
  warnings when {@code <T>} is itself generic (e.g. {@code List<String>}.
  In these cases you should use {@code buildGeneric} instead.
  
  @param <T> The type of object created by the builder.
  @param <B> The type of the  builder used.
  @param threadLocalBuilderClass The {@code Class<>} instance for the builder to use.
  @param builderConsumer The {@code Consumer} for the builder instance.
  @return The instance of {@code <T>} build from the builder after consuming it.