constructor(outer, kind) {
    this.outer = outer;
    this.kind = kind;
  }
This is used to track the functions as the parser descends. It allows
us to determine if we are in a function and what kind of function it is.
This is used to determine if `return` and `super` are allowed.