// TODO Could be API
        internal Properties GetElementData(bool createIfNecessary)
        {
            // TODO User could specify element data as a different type (rare)
            var elementData = (Properties)DataProviders["elementData"];

            if (elementData == null && createIfNecessary)
            {
                elementData = new Properties();
                DataProviders.AddNew("elementData", elementData);
            }

            return(elementData);
        }