anchor.diff:        if (expression is SimpleIdentifier) {
           Token token = expression.token;
           Token previous = node.findPrevious(token);
  -        if (previous.isSynthetic) {
  +        if (previous != null && previous.isSynthetic) {
             previous = node.findPrevious(previous);
           }
           Token next = token.next;
           if (next.isSynthetic) {
             next = next.next;
           }
  -        if (previous.type == TokenType.CLOSE_PAREN &&
  +        if (previous != null &&
  +            previous.type == TokenType.CLOSE_PAREN &&
               next.type == TokenType.OPEN_CURLY_BRACKET) {
             _addSuggestion(Keyword.ASYNC);
             _addSuggestion2(ASYNC_STAR);
  
positive.code:     if (entity is AstNode) {
        Token token = entity.beginToken;
        Token previousToken = entity.findPrevious(token);
        return previousToken.isSynthetic && previousToken.type == type;
      }
      return false;
    }
  
negative.code:     if (entity == node.rightParenthesis) {
        _addExpressionKeywords(node);
        Token previous = node.findPrevious(entity as Token);
        if (previous != null && previous.isSynthetic) {
          previous = node.findPrevious(previous);
        }
        if (previous != null && previous.lexeme == ')') {
          _addSuggestion(Keyword.ASYNC);
          _addSuggestion2(ASYNC_STAR);
          _addSuggestion2(SYNC_STAR);
  