@Documented
 @Target(value=METHOD)
 @Retention(value=RUNTIME)
 @Beta
public @interface Produces
ListenableFuture or FluentFuture, then the parameter type of the future is bound
 to the value that the future produces; otherwise, the return type is bound to the returned value.
 The production component will pass dependencies to the method as parameters.