The kernel languageKernelLanguage Kernel expressionexpression Processing a kernel expressionprocessing Typically, upon being read, an Expression will be: Enumerate “name-sanitized”—in the context of a Sanitizer to discriminate between local names and global names, and establish pointers from the local variable occurrences to the abstraction that introduces them, and from global names to entries in the global symbol table; type-checked—in the context of a TypeChecker to discover whether it has a type at all, or several possible ones (only expressions that have a unique unambiguous type are further processed); “sort-sanitized”—in the context of a Sanitizer to discriminate between those local variables that are of primitive Java types (int or double) or of Object type (this is necessary because the set-up means to use unboxed values of primitive types for efficiency reasons); this second “sanitization” phase is also used to compute offsets for local names (i.e., so-called de Bruijn indices) for each type sort; compiled—in the context of a Compiler to generate the sequence of instructions whose execution in an appropriate runtime environment will evaluate the expression; executed—in the context of a Runtime to execute its sequence of instructions.