/// <summary>Creates a collection from ISF data in the specified stream</summary>
        /// <param name="stream">Stream of ISF data</param>
        public StrokeCollection(Stream stream)
        {
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            }
            if (!stream.CanRead)
            {
                throw new ArgumentException(SR.Get(SRID.Image_StreamRead), "stream");
            }

            Stream seekableStream = GetSeekableStream(stream);

            if (seekableStream == null)
            {
                throw new ArgumentException(SR.Get(SRID.Invalid_isfData_Length), "stream");
            }

            //this will init our stroke collection
            StrokeCollectionSerializer serializer = new StrokeCollectionSerializer(this);

            serializer.DecodeISF(seekableStream);
        }