Before the injection begins, we need to determine the sequence of injection first so that the dependency is available and fully initialized at construction of the objects. This is required because otherwise the object construction may fail due to missing / or not fully initialized dependencies.