### Question:
InjectorImpl implements Injector { @Override public <T> T inject(T instance) { requireNonNull(instance); injectFields(instance); final InjectorProxy injectorProxy = builder.proxyFor(instance.getClass()); configureParams(instance, properties, injectorProxy); return instance; } InjectorImpl(
        final Set<Injectable<?>> injectables,
        final List<Object> instances,
        final Properties properties,
        final ClassLoader classLoader,
        final DependencyGraph graph,
        final InjectorBuilder builder
    ); static InjectorBuilder builder(); static InjectorBuilder builder(ClassLoader classLoader); @Override Stream<T> stream(Class<T> type); @Override T getOrThrow(Class<T> type); @Override T getAfterOrThrow(Class<T> type, T before); @Override Optional<T> get(Class<T> type); @Override Optional<T> getAfter(Class<T> type, T before); @Override Stream<Class<?>> injectables(); @Override T inject(T instance); @Override ClassLoader classLoader(); @Override void stop(); @Override InjectorBuilder newBuilder(); static final Logger LOGGER_INSTANCE; }### Answer:
@Test void inject() { final Baz newBaz = new Baz(); assertNull(newBaz.bar); injector.inject(newBaz); assertNotNull(newBaz.bar); }
@Test void injectIllegal() { final class Bez { @Inject private int a; } final Bez bez = new Bez(); assertThrows(IllegalArgumentException.class, () -> injector.inject(bez)); }