/// <summary>
        /// Fetch Type Declaration, and tests if it's equal or derived from a specific TypeNode
        /// Fails if declaration is not of a Type
        /// </summary>
        public TypeNode FetchType(String name, System.Type expected)
        {
            TypeNode type = FetchType(name);

            if (type == null || !type.ISA(expected))
            {
                throw new InvalidIdentifier("Invalid type '" + type + "'. Required '" + expected + "'");
            }
            return(type);
        }