/// <summary>
            /// Removes a <see cref="SpeedAdjustmentContainer"/> from this container, re-sorting all hit objects
            /// which it contained into new <see cref="SpeedAdjustmentContainer"/>s.
            /// </summary>
            /// <param name="speedAdjustment">The <see cref="SpeedAdjustmentContainer"/> to remove.</param>
            public void RemoveSpeedAdjustment(SpeedAdjustmentContainer speedAdjustment)
            {
                if (speedAdjustment == defaultSpeedAdjustment)
                {
                    throw new InvalidOperationException($"The default {nameof(SpeedAdjustmentContainer)} must not be removed.");
                }

                if (!speedAdjustments.Remove(speedAdjustment))
                {
                    return;
                }

                while (speedAdjustment.Count > 0)
                {
                    DrawableHitObject hitObject = speedAdjustment[0];

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