internal void Optimize(OptimizationContext context) { if (Optimized) { return; } if (FullLength == 0) { var end = Starts[Starts.Count - 1] + Lengths[Lengths.Count - 1]; FullLength = end - Starts.MinValue + 1; } OptimizeStarts(context); Starts.Optimize(context); Lengths.Optimize(context); SharedIndices.Optimize(context); OptimizeLists(context); Optimized = true; }