public override TextFormatInfo[] GetFormatDataForLine(int line, out TextChange change) { lock (this.lockObject) { if (this.parseEpisode == null) { // We've never started a parse, so do it now. StartNewParse(this.currentChange); } change = this.currentChange; if (this.data.Count > 0) { int firstInRange = FindFirstInfoWhere(0, this.data.Count - 1, idx => this.data[idx].Range.End.Line >= line); int firstBeyondRange = FindFirstInfoWhere(0, this.data.Count - 1, idx => this.data[idx].Range.Start.Line > line); if (firstBeyondRange == -1) { firstBeyondRange = this.data.Count; } if (firstInRange == -1 || firstInRange > firstBeyondRange) { return null; } var result = new TextFormatInfo[firstBeyondRange - firstInRange]; this.data.CopyTo(firstInRange, result, 0, result.Length); return result; } return null; } }