public virtual NamespaceGraph GetNamespace(String path)
        {
            if (path.Length == 0)
            {
                return(this);
            }

            int index = path.IndexOf("::");

            if (index == -1)
            {
                return(namespaces[path] as NamespaceGraph);
            }
            else
            {
                String partial = path.Substring(0, index);

                NamespaceGraph ng = namespaces[partial] as NamespaceGraph;

                if (ng == null)
                {
                    // ng = AddNamespace(new NamespaceGraph(partial));
                    // throw new ArgumentException("Namespace part " + partial + " wasn't found for " + path);
                    return(null);
                }

                return(ng.GetNamespace(path.Substring(index + 2)));
            }
        }