protected override void OnUpdate()
    {
        var addOneTypeHandle   = GetComponentTypeHandle <AddOne>();
        var addTwoTypeHandle   = GetComponentTypeHandle <AddTwo>();
        var addThreeTypeHandle = GetComponentTypeHandle <AddThree>();
        var addFourTypeHandle  = GetComponentTypeHandle <AddFour>();

        var dependencies = new NativeArray <JobHandle>(4, Allocator.Temp);

        var addOneJob = new AddOneJob
        {
            addOneTypeHandle = addOneTypeHandle,
        };

        dependencies[0] = addOneJob.ScheduleParallel(m_AddOneGroup, Dependency);

        var addTwoJob = new AddTwoJob
        {
            addTwoTypeHandle = addTwoTypeHandle,
        };

        dependencies[1] = addTwoJob.ScheduleParallel(m_AddTwoGroup, Dependency);

        var addThreeJob = new AddThreeJob
        {
            addThreeTypeHandle = addThreeTypeHandle,
        };

        dependencies[2] = addThreeJob.ScheduleParallel(m_AddThreeGroup, Dependency);

        var addFourJob = new AddFourJob
        {
            addFourTypeHandle = addFourTypeHandle,
        };

        dependencies[3] = addFourJob.ScheduleParallel(m_AddFourGroup, Dependency);

        Dependency = JobHandle.CombineDependencies(dependencies);
    }