This allows them to be referenced before they are filled, helping avoid circular dependencies.
I want all language elements to be defined in the same folder, rather than having the "core" language split by parsing/AST/completions and the rest split by language element.