<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def inject(function):
 """Decorator declaring parameters to be injected. eg. Use the Injector to get a new instance of A: [123, 'Bob', [1, 2, 3]] .. note:: This decorator is to be used on class constructors. Using it on non-constructor methods worked in the past but it was an implementation detail rather than a design decision. Third party libraries may, however, provide support for injecting dependencies into non-constructor methods or free functions in one form or another. """

    try:
        bindings = _infer_injected_bindings(function)
    except _BindingNotYetAvailable:
        bindings = 'deferred'
    return method_wrapper(function, bindings)