protected virtual void OnRaiseProductSelectionChangedEvent(IEnumerable <IIfcProduct> products)
        {
            // Make a temporary copy of the event to avoid possibility of
            // a race condition if the last subscriber unsubscribes
            // immediately after the null check and before the event is raised.
            ProductSelectionChangedEventHandler handler = ProductSelectionChanged;

            // Event will be null if there are no subscribers
            if (handler != null)
            {
                //create argument
                ProductSelectionChangedEventArgs e = new ProductSelectionChangedEventArgs(products);

                // Use the () operator to raise the event.
                handler(this, e);
            }
        }
        protected virtual void OnRaiseProductSelectionChangedEvent(IEnumerable<IfcProduct> products)
        {
            // Make a temporary copy of the event to avoid possibility of
            // a race condition if the last subscriber unsubscribes
            // immediately after the null check and before the event is raised.
            ProductSelectionChangedEventHandler handler = ProductSelectionChanged;

            // Event will be null if there are no subscribers
            if (handler != null)
            {
                //create argument
                ProductSelectionChangedEventArgs e = new ProductSelectionChangedEventArgs(products);

                // Use the () operator to raise the event.
                handler(this, e);
            }
        }