public void Parse(Stream input, long length, TagTypes caller)
{
BitStream bits = new BitStream(input);
this._fillStyles.Parse(input, caller);
this._lineStyles.Parse(input, caller);
this._numFillBits = (UInt16)bits.GetBits(4);
this._numLineBits = (UInt16)bits.GetBits(4);
this._shapeRecordBuffer = new Byte[length - 1];
input.Read(this._shapeRecordBuffer, 0, (Int32)length - 1);
// (Un)comment these lines to disbale/enable ShapeRecord pasing
this._shapeRecordStream = new MemoryStream();
this._shapeRecordStream.Write(this._shapeRecordBuffer, 0, this._shapeRecordBuffer.Length); // To protect the input stream
this._shapeRecordStream.Seek(0, SeekOrigin.Begin);
this.TryParseShapeRecords(this._shapeRecordStream, caller);
}