Thrown when a name in a source program cannot be resolved. When TypeAnalyzer analyzes a Java program, it tries to assign a type to each
(sub)expression, each method call, each field, and each local variable.
If an appropriate type cannot be found, this exception is raised.
Because AST functions are not declared to raise exceptions, this exception
is designed to be a descendant of RuntimeException.