/// <summary>
 /// Constructor that creates the inheritance tree by means of introspection
 /// </summary>
 /// <param name="name">The name of the class</param>
 /// <param name="introspectiveType">The real introspective type</param>
 public BCLClassType(string name, Type introspectiveType)
     :
     base(name)
 {
     introspection = new Introspection(this, introspectiveType);
     introspection.createBaseClassAndInterfacesTree();
 }
        /// <summary>
        /// Gets the type associated to the name specified in the argument.
        /// </summary>
        /// <param name="name">Name of the type.</param>
        /// <param name="fileName">File name.</param>
        /// <param name="line">Line number.</param>
        /// <param name="column">Column number.</param>
        /// <returns>Concrete type linked to type expression.</returns>
        public TypeExpression GetType(string name, Location location)
        {
            if (name == null)
            {
                return(null);
            }

            // If tmpName exists, return the type
            if (this.table.ContainsKey(name))
            {
                return(this.table[name]);
            }

            // Try to find the type (class or interface) in the BCL (mscorlib.dll)
            Type type = Type.GetType(name, false);

            if (type != null)
            {
                TypeExpression te = Introspection.createBCLUserType(name, type, location);
                AddType(name, te, location);
                return(te);
            }

            return(null);
        }