code: private void initializeStatically() {
      bindingData.initializeBindings();
      stopwatch.resetAndLog("Binding initialization");
  
      for (InjectorShell shell : shells) {
        shell.getInjector().index();
      }
      stopwatch.resetAndLog("Binding indexing");
  
      injectionRequestProcessor.process(shells);
      stopwatch.resetAndLog("Collecting injection requests");
  
      bindingData.runCreationListeners(errors);
      stopwatch.resetAndLog("Binding validation");
  
      injectionRequestProcessor.validate();
      stopwatch.resetAndLog("Static validation");
  
      initializer.validateOustandingInjections(errors);
      stopwatch.resetAndLog("Instance member validation");
  
      new LookupProcessor(errors).process(shells);
      for (InjectorShell shell : shells) {
        ((DeferredLookups) shell.getInjector().lookups).initialize(errors);
      }
      stopwatch.resetAndLog("Provider verification");
  
      // This needs to come late since some user bindings rely on requireBinding calls to create
      // jit bindings during the LookupProcessor.
      bindingData.initializeDelayedBindings();
      stopwatch.resetAndLog("Delayed Binding initialization");
  
      for (InjectorShell shell : shells) {
        if (!shell.getElements().isEmpty()) {
          throw new AssertionError("Failed to execute " + shell.getElements());
        }
      }
  
      errors.throwCreationExceptionIfErrorsExist();
    }
docs: Initialize and validate everything.