/// <summary>
            /// Adds a <see cref="SpeedAdjustmentContainer"/> to this container, re-sorting all hit objects
            /// in the last <see cref="SpeedAdjustmentContainer"/> that occurred (time-wise) before it.
            /// </summary>
            /// <param name="speedAdjustment">The <see cref="SpeedAdjustmentContainer"/>.</param>
            public void AddSpeedAdjustment(SpeedAdjustmentContainer speedAdjustment)
            {
                speedAdjustment.ScrollingAxes = scrollingAxes;
                speedAdjustment.VisibleTimeRange.BindTo(VisibleTimeRange);
                speedAdjustment.Reversed.BindTo(Reversed);

                if (speedAdjustments.Count > 0)
                {
                    // We need to re-sort all hit objects in the speed adjustment container prior to figure out if they
                    // should now lie within this one
                    var existingAdjustment = adjustmentContainerAt(speedAdjustment.ControlPoint.StartTime);
                    for (int i = 0; i < existingAdjustment.Count; i++)
                    {
                        DrawableHitObject hitObject = existingAdjustment[i];

                        if (!speedAdjustment.CanContain(hitObject.HitObject.StartTime))
                        {
                            continue;
                        }

                        existingAdjustment.Remove(hitObject);
                        speedAdjustment.Add(hitObject);

                        i--;
                    }
                }

                speedAdjustments.Add(speedAdjustment);
            }