docs: public ContextDestroyer initiate() {
          validateScanners(); // Making sure scanners are properly defined.
          final Context context = new Context();
          context.setCreateMissingDependencies(createMissingDependencies);
          final ContextDestroyer contextDestroyer = new ContextDestroyer();
          mapInContext(context, processors); // Now context contains default processors. They are injectable.
          mapInContext(context, manuallyAddedComponents); // Now manually added components are in the context.
          initiateMetaComponents(context, contextDestroyer); // Now context contains custom annotation processors.
          invokeProcessorActionsBeforeInitiation(); // Processors are ready to process!
          initiateRegularComponents(context, contextDestroyer);// Now context contains all regular components.
          invokeProcessorActionsAfterInitiation(context, contextDestroyer); // Processors finish up their work.
          context.clear(); // Removing all components from context.
          if (clearProcessors) {
              destroyInitializer(); // Clearing meta-data. Processors are no longer available.
          }
          return contextDestroyer;
      }