A lil' complaint about style - don't mix no-braces with braces. And always use braces if the body is non-trivial. (Trivial would be 'return x', 'break', 'continue', etc.). So here, you'd use all-braces.

Or better yet, use a match:

```ooc
match (node := peek(Node)) {
  case td: TypeDecl => td addVariable(decl)
  case ad: Addon => ad addProperty(decl)
  case =>
    message := "Should've peek'd a TypeDecl or Addon, but peek'd a %s. Stack = %s" format(node class name, stackRepr())
    params errorHandler onError(InternalError new(token(), message))
}
```

(written off the top of my head^Wbed, please check before copypasting)