anchor.diff:      var operand = node.operand;
   
       if (operator == TokenType.BANG) {
  -      InferenceContext.setType(operand, _typeProvider.boolType);
  -    }
  +      _resolveNegation(node, operand);
  +      return;
  +    }
  +
       operand.accept(_resolver);
   
       _resolve1(node);
       _resolve2(node);
  -
  -    if (operator == TokenType.BANG) {
  -      _flowAnalysis?.flow?.logicalNot_end(node, operand);
  -    }
     }
   
     /// Check that the result [type] of a prefix or postfix `++` or `--`
  
positive.code:     }
    }
  
    /// If the given [type] is a type parameter, resolve it to the type that should
    /// be used when looking up members. Otherwise, return the original type.
    ///
  
negative.code: 
    void _resolve2(PrefixExpressionImpl node) {
      TokenType operator = node.operator.type;
      if (identical(node.operand.staticType, NeverTypeImpl.instance)) {
        _recordStaticType(node, NeverTypeImpl.instance);
      } else {
        // The other cases are equivalent to invoking a method.
  