public void RemoveEscherProperty(int num)
        {
            List <EscherProperty> toRemove = new List <EscherProperty>();

            for (IEnumerator <EscherProperty> iterator = EscherProperties.GetEnumerator(); iterator.MoveNext();)
            {
                EscherProperty prop = iterator.Current;
                if (prop.PropertyNumber == num)
                {
                    //iterator.Remove();
                    toRemove.Add(prop);
                }
            }
            foreach (EscherProperty e in toRemove)
            {
                EscherProperties.Remove(e);
            }
        }
        /**
         * Set an escher property. If a property with given propId already
         * exists it is replaced.
         *
         * @param value the property to set.
         */
        public void SetEscherProperty(EscherProperty value)
        {
            List <EscherProperty> toRemove = new List <EscherProperty>();

            for (IEnumerator <EscherProperty> iterator =
                     properties.GetEnumerator(); iterator.MoveNext();)
            {
                EscherProperty prop = iterator.Current;
                if (prop.Id == value.Id)
                {
                    //iterator.Remove();
                    toRemove.Add(prop);
                }
            }
            foreach (EscherProperty e in toRemove)
            {
                EscherProperties.Remove(e);
            }
            properties.Add(value);
            SortProperties();
        }