public StringPart(StringBuilder source, int start, int length)
{
if (source == null)
throw new ArgumentNullException("source");
if (start < 0 || start >= source.Length)
throw new ArgumentOutOfRangeException("start", "start must be > 0, and < source.Length");
if (length < 0 || (start + length) > source.Length)
throw new ArgumentOutOfRangeException("length", "length must be >= 0, and (start + length) <= source.Length");
this.StringBuilder = source;
this.String = null;
this.Start = start;
this.Length = length;
}