/// <summary>
        /// Creates and returns a content for a GraphViz (.gv) file (using DOT language), for the visualisation of types that are in the storage.
        /// For this purpose, a Context is created only for this purpose, and cannot be used for any other.
        /// </summary>
        /// <param name="storage">Storage from where the types are extracted</param>
        /// <returns>content for the GraphViz file</returns>
        public String GetGraphVizContentFromStorage(IKeyValueStorage <Guid, object> storage)
        {
            String graphVizContent;
            IDictionary <String, TypeVisualUnit> typeUnits = GetTypeVisualUnits(GetRootTypeId());
            GVTemplate template = new GVTemplate(typeUnits);

            graphVizContent = template.TransformText();
            return(graphVizContent);
        }
        /// <summary>
        /// Creates and returns a content for a GraphViz (.gv) file (using DOT language), for the visualisation of types that are in the storage.
        /// <para>For this purpose, a Context is created only for this purpose, and cannot be used for any other.</para>
        /// </summary>
        /// <param name="storage">Storage from where the types are extracted</param>
        /// <returns>content for the GraphViz file</returns>
        public String GetGraphVizContentFromStorage(string typeName, IKeyValueStorage <Guid, object> storage)
        {
            String graphVizContent;
            Guid   typeId = GetIdFromTypeName(typeName);

            if (typeId.Equals(Guid.Empty))
            {
                throw new Exception("Type with the following name : " + typeName + " doesn't exist in this Context");
            }
            IDictionary <String, TypeVisualUnit> typeUnits = GetTypeVisualUnits(typeId);
            GVTemplate template = new GVTemplate(typeUnits);

            graphVizContent = template.TransformText();
            return(graphVizContent);
        }