public ITopic GetInstance(IElementDef objectType, SifContext context)
        {
            if (objectType == null)
            {
                throw new ArgumentNullException("The {objectType} parameter cannot be null");
            }

            if (context == null)
            {
                throw new ArgumentNullException("The {context} parameter cannot be null");
            }


            Dictionary <IElementDef, ITopic> map = GetTopicMap(context);
            ITopic topic = null;

            if (!map.TryGetValue(objectType, out topic))
            {
                topic = new TopicImpl(objectType, context);
                map.Add(objectType, topic);
            }

            return(topic);
        }
        public ITopic GetInstance(IElementDef objectType, SifContext context)
        {
            if (objectType == null)
            {

                throw new ArgumentNullException("The {objectType} parameter cannot be null");
            }

            if (context == null)
            {
                throw new ArgumentNullException("The {context} parameter cannot be null");
            }

            Dictionary<IElementDef, ITopic> map = GetTopicMap(context);
            ITopic topic = null;
            if(!map.TryGetValue( objectType, out topic ))
            {
                topic = new TopicImpl(objectType, context);
                map.Add(objectType, topic);
            }

            return topic;
        }