anchor.diff:  
     @override
     void visitSwitchCase(SwitchCase node) {
  -    _recordDataForNode('SwitchCase (expression)', node.expression);
  +    _recordDataForNode('SwitchCase (expression)', node.expression,
  +        allowedKeywords: expressionKeywords);
       for (var statement in node.statements) {
  -      _recordDataForNode('SwitchCase (statement)', statement);
  +      _recordDataForNode('SwitchCase (statement)', statement,
  +          allowedKeywords: statementKeywords);
       }
       super.visitSwitchCase(node);
     }
  
positive.code: 
    /// Record whether the given [kind] or type match applied to a given argument
    /// (that is, whether [matches] is `true`).
    void recordTypeMatch(String kind, bool matches) {
      var contextMap = byTypeMatch.putIfAbsent(kind, () => {});
      var key = matches.toString();
      contextMap[key] = (contextMap[key] ?? 0) + 1;
    }
  
    /// Return a JSON encoded string representing the data that was collected.
  
negative.code:     }
      var argumentType = argument.staticType;
      if (argumentType != null) {
        _recordTypeRelationships('argument (whole)', parameterType, argumentType);
      }
      var identifier = _leftMostIdentifier(argument);
      if (identifier != null) {
  