text: public virtual CharBlockArray Append(string s){int remain = s.Length;int offset = 0;while (remain > 0){if (this.current.length == this.blockSize){AddBlock();}int toCopy = remain;int remainingInBlock = this.blockSize - this.current.length;if (remainingInBlock < toCopy){toCopy = remainingInBlock;}s.CopyTo(offset, this.current.chars, this.current.length, toCopy);offset += toCopy;remain -= toCopy;this.current.length += toCopy;}this.length += s.Length;return this;}