private void tryToCreateInstances(Properties properties, Set<Class<?>> allInjectableTypes, Map<Class<?>, Object> instanceMap, Set<Injectable<?>> injectablesLeft) throws InstantiationException {
        int injectablesLeftSize = injectablesLeft.size();
        final Iterator<Injectable<?>> it = injectablesLeft.iterator();

        while (it.hasNext()) {
            final Injectable<?> injectable = it.next();

            boolean created = false;
            if (injectable.hasSupplier()) {
                final Object instance = injectable.supplier().get();
                instanceMap.put(injectable.get(), instance);
                created = true;
            } else {
                final Class<?> clazz = injectable.get();
                final Optional<?> instance = tryToCreate(clazz, properties, instancesSoFarInReversedOrder(instanceMap), allInjectableTypes, proxyFor(clazz));
                if (instance.isPresent()) {
                    instanceMap.put(injectable.get(), instance.get());
                    created = true;
                }
            }

            if (created) {
                // If we are currently debugging, print out every created
                // instance and which configuration options are available for
                // it.
                logCreated(properties, injectable);
                it.remove();
            } else {
                // If we are currently debugging, print out every created
                // instance and which configuration options are available for
                // it.
                logPending(injectable);
            }
        }

        // Check if no injectables was instantiated this pass
        if (injectablesLeftSize == injectablesLeft.size()) {
            throwNewConstructorResolutionException(injectablesLeft, instanceMap);
        }
    }
Default implementation of the {@link InjectorBuilder}-interface.

@author Emil Forslund
@since  1.2.0
common-parent/injector/src/main/java/com/speedment/common/injector/internal/InjectorBuilderImpl.java