By adding BeginStart and EndStart at the beginning and end of Start, MonoBehaviours with OnEnable and OnDisable logic can wrap their contents within a _started flag and effectively skip over logic in those methods until after Start has been invoked.
To not bypass the
Unity Lifecycle, the enabled property is used to disable the most derived MonoBehaviour, invoke Start up the hierarchy chain, and finally re-enable the MonoBehaviour.