void AddChunk(object newchunk)
{
AssertChunkObject(newchunk);
// TODO: EnsureWritable
var chunks = _chunks;
if (chunks != null)
{
Debug.Assert(!this.IsEmpty);
// TODO: Compact byte[] chunks together
if (IsArrayOfChunks)
{
Debug.Assert(chunks.GetType() == typeof(object[]));
AddChunkToArray((object[])chunks, newchunk);
}
else
{
AssertChunkObject(chunks);
_chunks = new object[2] { chunks, newchunk };
_chunksCount = 2;
_flags |= Flags.IsArrayOfChunks;
}
}
else
{
_chunks = newchunk;
_flags |= Flags.IsNonEmpty;
}
//
_string = null;
_length = -1;
}