/// <summary>
 /// Clear propertyset assignments to the internal Handle stored in the wrapper if it is incomplete
 /// </summary>
 /// <param name="element">the element</param>
 public void ClearInternalHandleWrapperData(Element element)
 {
     if (InternalWrapper.Count > 0)
     {
         HashSet <IFCAnyHandle> propertySetToCreate = null;
         if (PropertySetsToCreate.TryGetValue(element, out propertySetToCreate))
         {
             ICollection <IFCAnyHandle> internalObjects = InternalWrapper.GetAllObjects();
             foreach (IFCAnyHandle internalObj in internalObjects)
             {
                 propertySetToCreate.Remove(internalObj);
             }
         }
     }
 }
        private void RegisterHandleWithElement(Element element, IFCAnyHandle handle, IFCExportInfoPair exportType = null)
        {
            if (element == null || IFCAnyHandleUtil.IsNullOrHasNoValue(handle))
            {
                return;
            }
            HashSet <IFCAnyHandle> propertySetToCreate = null;

            if (!PropertySetsToCreate.TryGetValue(element, out propertySetToCreate))
            {
                propertySetToCreate           = new HashSet <IFCAnyHandle>();
                PropertySetsToCreate[element] = propertySetToCreate;
            }
            propertySetToCreate.Add(handle);

            ExporterCacheManager.ElementToHandleCache.Register(element.Id, handle, exportType);
            ExporterCacheManager.HandleToElementCache.Register(handle, element.Id);
        }