public 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.getChars(offset, offset + toCopy, this.current.chars, this.current.length);offset += toCopy;remain -= toCopy;this.current.length += toCopy;}this.length += s.length();return this;}

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;}
