gap buffer data structure in C# programming language