18 using System.Collections.Generic;
    35             _buffers = 
new List<MemoryStream> {CreateBuffer()};
    38         private List<MemoryStream> _buffers;
    40         private static MemoryStream CreateBuffer()
    45         public void Prepend(List<MemoryStream> lists)
    47             foreach (var stream 
in lists)
    49                 stream.Position = stream.Length;
    52             _buffers.InsertRange(0, lists);
    55         public void Append(List<MemoryStream> lists)
    57             foreach (var stream 
in lists)
    59                 stream.Position = stream.Length;
    62             _buffers.AddRange(lists);
    65         public override void Write(
byte[] b, 
int off, 
int len)
    67             var buffer = _buffers[_buffers.Count -1];
    68             var remaining = (int) (buffer.Length - buffer.Position);
    69             while (len > remaining)
    71                 buffer.Write(b, off, remaining);
    75                 buffer = CreateBuffer();
    78                 remaining = (int) buffer.Length;
    81             buffer.Write(b, off, len);
    86             List<MemoryStream> result = _buffers;
    90             foreach (MemoryStream b 
in result)
    93                 b.SetLength(b.Position);
   100         public override long Length   105                 foreach (var buffer 
in _buffers)
   107                     sum += buffer.Length;
 
void Prepend(List< MemoryStream > lists)
 
List< MemoryStream > GetBufferList()
 
override void Write(byte[] b, int off, int len)
 
void Append(List< MemoryStream > lists)