/// <summary>
        /// Builds the list of Custom Guids that were used by this particular stroke, either in the packet layout
        /// or in the drawing attributes, or in the buttons or in Extended properties or in the point properties
        /// and updates the guidlist with that information
        /// </summary>
        /// <param name="stroke"></param>
        /// <param name="guidList"></param>
        private void BuildStrokeGuidList(Stroke stroke, GuidList guidList)
        {
            int i = 0;

            // First drawing attributes
            //      Ignore the default Guids/attributes in the DrawingAttributes
            int count;
            Guid[] guids = ExtendedPropertySerializer.GetUnknownGuids(stroke.DrawingAttributes.ExtendedProperties, out count);

            for (i = 0; i < count; i++)
            {
                guidList.Add(guids[i]);
            }

            Guid[] descriptionGuids = stroke.StylusPoints.Description.GetStylusPointPropertyIds();
            for (i = 0; i < descriptionGuids.Length; i++)
            {
                guidList.Add(descriptionGuids[i]);
            }

            if (stroke.ExtendedProperties.Count > 0)
            {
                // Add the ExtendedProperty guids in the list
                for (i = 0; i < stroke.ExtendedProperties.Count; i++)
                {
                    guidList.Add(stroke.ExtendedProperties[i].Id);
                }
            }
        }
        /// <summary>
        /// Builds the GuidList based on ExtendedPropeties and StrokeCollection
        /// </summary>
        /// <returns></returns>
        private GuidList BuildGuidList()
        {
            GuidList guidList = new GuidList();
            int i = 0;

            // First go through the list of ink properties
            ExtendedPropertyCollection attributes = _coreStrokes.ExtendedProperties;
            for (i = 0; i < attributes.Count; i++)
            {
                guidList.Add(attributes[i].Id);
            }

            // Next go through all the strokes
            for (int j = 0; j < _coreStrokes.Count; j++)
            {
                BuildStrokeGuidList(_coreStrokes[j], guidList);
            }

            return guidList;
        }