Errors: - Not supported - Only * is supported - Expected * in *, but got * - Divergent type in (construct), (location 1), (location 2) - Unknown field - Unbounded variable - Different variable - Different domain - * is not subclass of * - Type not equal - Incorrect number of parameters Symbol Resolution: - Add all files with annotated class/functions. - Find class references, load them all in TopLevelContext. - Find unbounded identifiers in the functions. - If it is a function/class name, record its object ID. - Otherwise, load its value. (check to see if specified with `global`) (Function implemented in python, with rust binding to add value to global variable dictionary) Global variable dictionary: - Primitives, including integers, floats, bools, etc. - Primitive lists. - Numpy multi-dimensional array, with value + dimension vectors. - Reference array, with integer index referring to other things. - Symbol table: python id -> reference id. TopLevelContext/InferenceContext: - Restrict visibility by user defined function.