/// <summary>
        /// Adds a new DoorWindowDelayedOpeningCreator.
        /// </summary>
        /// <param name="creator">The creator.</param>
        public void Add(DoorWindowDelayedOpeningCreator creator)
        {
            if (creator == null)
            {
                return;
            }

            Dictionary <ElementId, DoorWindowDelayedOpeningCreator> existingOpenings = null;

            if (!m_DelayedOpeningCreators.TryGetValue(creator.InsertId, out existingOpenings))
            {
                existingOpenings = new Dictionary <ElementId, DoorWindowDelayedOpeningCreator>();
                m_DelayedOpeningCreators[creator.InsertId] = existingOpenings;
            }

            ElementId levelIdToUse = ExporterCacheManager.ExportOptionsCache.WallAndColumnSplitting ? creator.LevelId : ElementId.InvalidElementId;

            DoorWindowDelayedOpeningCreator oldCreator = null;

            if (existingOpenings.TryGetValue(levelIdToUse, out oldCreator))
            {
                // from DoorWindowInfo has higher priority
                if (oldCreator.CreatedFromDoorWindowInfo)
                {
                    if (!oldCreator.HasValidGeometry && creator.HasValidGeometry)
                    {
                        oldCreator.CopyGeometry(creator);
                    }
                }
                else if (creator.CreatedFromDoorWindowInfo)
                {
                    if (!creator.HasValidGeometry && oldCreator.HasValidGeometry)
                    {
                        creator.CopyGeometry(oldCreator);
                    }
                    existingOpenings[levelIdToUse] = creator;
                }
            }
            else
            {
                existingOpenings[levelIdToUse] = creator;
            }
        }
        /// <summary>
        /// Adds a new DoorWindowDelayedOpeningCreator.
        /// </summary>
        /// <param name="creator">The creator.</param>
        public void Add(DoorWindowDelayedOpeningCreator creator)
        {
            if (creator == null)
                return;

            Dictionary<ElementId, DoorWindowDelayedOpeningCreator> existingOpenings = null;
            if (!m_DelayedOpeningCreators.TryGetValue(creator.InsertId, out existingOpenings))
            {
                existingOpenings = new Dictionary<ElementId, DoorWindowDelayedOpeningCreator>();
                m_DelayedOpeningCreators[creator.InsertId] = existingOpenings;
            }

            ElementId levelIdToUse = ExporterCacheManager.ExportOptionsCache.WallAndColumnSplitting ? creator.LevelId : ElementId.InvalidElementId;

            DoorWindowDelayedOpeningCreator oldCreator = null;
            if (existingOpenings.TryGetValue(levelIdToUse, out oldCreator))
            {
                // from DoorWindowInfo has higher priority
                if (oldCreator.CreatedFromDoorWindowInfo)
                {
                    if (!oldCreator.HasValidGeometry && creator.HasValidGeometry)
                    {
                        oldCreator.CopyGeometry(creator);
                    }
                }
                else if (creator.CreatedFromDoorWindowInfo)
                {
                    if (!creator.HasValidGeometry && oldCreator.HasValidGeometry)
                    {
                        creator.CopyGeometry(oldCreator);
                    }
                    existingOpenings[levelIdToUse] = creator;
                }
            }
            else
                existingOpenings[levelIdToUse] = creator;
        }