ContextTracker
constructor(start: T, shift: (context: T, term: Int, stack: Stack, input: InputStream) -> T = { c, _, _, _ -> c }, reduce: (context: T, term: Int, stack: Stack, input: InputStream) -> T = { c, _, _, _ -> c }, reuse: (context: T, node: Tree, stack: Stack, input: InputStream) -> T = { c, _, _, _ -> c }, hash: (context: T) -> Int = { 0 }, strict: Boolean = true)