List<Chunk> GetCachedChunks (ISyntaxMode mode, TextDocument doc, Mono.TextEditor.Highlighting.ColorScheme style, DocumentLine line, int offset, int length)
{
ChunkDescriptor descriptor;
if (chunkDict.TryGetValue (line, out descriptor)) {
bool isInvalid;
if (descriptor.Equals (line, offset, length, out isInvalid))
return descriptor.Chunk;
chunkDict.Remove (line);
}
var chunks = mode.GetChunks (style, line, offset, length).ToList ();
descriptor = new ChunkDescriptor (line, offset, length, chunks);
chunkDict [line] = descriptor;
return chunks;
}