code: void loadEagerSingletons(InjectorImpl injector, Stage stage, final Errors errors) {
      List<BindingImpl<?>> candidateBindings = new ArrayList<>();
      @SuppressWarnings("unchecked") // casting Collection<Binding> to Collection<BindingImpl> is safe
      Collection<BindingImpl<?>> bindingsAtThisLevel =
          (Collection) injector.state.getExplicitBindingsThisLevel().values();
      candidateBindings.addAll(bindingsAtThisLevel);
      synchronized (injector.state.lock()) {
        // jit bindings must be accessed while holding the lock.
        candidateBindings.addAll(injector.jitBindings.values());
      }
      InternalContext context = injector.enterContext();
      try {
        for (BindingImpl<?> binding : candidateBindings) {
          if (isEagerSingleton(injector, binding, stage)) {
            Dependency<?> dependency = Dependency.get(binding.getKey());
            Dependency previous = context.pushDependency(dependency, binding.getSource());
  
            try {
              binding.getInternalFactory().get(context, dependency, false);
            } catch (InternalProvisionException e) {
              errors.withSource(dependency).merge(e);
            } finally {
                context.popStateAndSetDependency(previous);
              }
          }
        }
      } finally {
        context.close();
      }
    }
docs: Loads eager singletons, or all singletons if we're in Stage.PRODUCTION. Bindings discovered
  while we're binding these singletons are not be eager.