diff --git a/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs b/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs
index d4f1c8df4b..76ff86d5c4 100644
--- a/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs
+++ b/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs
@@ -56,7 +56,7 @@ namespace osu.Game.Beatmaps.ControlPoints
///
/// The time to find the timing control point at.
/// The timing control point.
- public TimingControlPoint TimingPointAt(double time) => binarySearch(TimingPoints, time, () => TimingPoints[0]);
+ public TimingControlPoint TimingPointAt(double time) => binarySearch(TimingPoints, time, TimingPoints.FirstOrDefault());
///
/// Finds the maximum BPM represented by any timing control point.
@@ -81,16 +81,16 @@ namespace osu.Game.Beatmaps.ControlPoints
///
/// The list to search.
/// The time to find the control point at.
- /// The control point to use when is before any control points.
+ /// The control point to use when is before any control points. If null, a new control point will be constructed.
/// The active control point at .
- private T binarySearch(SortedList list, double time, Func prePoint = null)
+ private T binarySearch(SortedList list, double time, T prePoint = null)
where T : ControlPoint, new()
{
if (list.Count == 0)
return new T();
if (time < list[0].Time)
- return prePoint?.Invoke() ?? new T();
+ return prePoint ?? new T();
int index = list.BinarySearch(new T() { Time = time });