     }
 
     guard !pieces.isEmpty else {
-      throw engine.diagnose(.expected("function clause pattern"),
-                            node: currentToken)
+      throw expected("function clause pattern")
     }
 
     return PatternClauseListSyntax(elements: pieces)

    }

    guard !pieces.isEmpty else {
      throw engine.diagnose(.expected("binding list"), node: currentToken)
    }

    return BindingListSyntax(elements: pieces)

    return nil
  }

  func expected(_ name: String) -> Diagnostic.Message {
    let highlightedToken = previousNonImplicitToken()
    return engine.diagnose(.expected(name), node: highlightedToken) {
      if let tok = highlightedToken {
        $0.highlight(tok)
      }
    }
  }

  func unexpectedToken(expected: TokenKind? = nil) -> Diagnostic.Message {
    // If we've "unexpected" an implicit token from Shining, highlight
    // instead the previous token because the diagnostic will say that we've
