anchor.diff:    visitAssignmentExpression(AssignmentExpression node) {
       final type = node.leftHandSide?.bestType;
       if (!_isFunctionRef(type, node.rightHandSide)) {
  -      _check(node.leftHandSide?.bestType, node.rightHandSide?.bestType, node);
  +      _check(type, node.rightHandSide?.bestType, node);
       }
     }
   
  
positive.code:           arg is FunctionExpression && arg.body is ExpressionFunctionBody);
  
    void _check(DartType expectedType, DartType type, AstNode node) {
      if (expectedType == null || type == null)
        return;
      else if (expectedType.isVoid && !isTypeAcceptableWhenExpectingVoid(type) ||
          expectedType.isDartAsyncFutureOr &&
              (expectedType as InterfaceType).typeArguments.first.isVoid &&
              !type.isAssignableTo(_futureDynamicType) &&
  
negative.code: 
    void _checkArgs(
        NodeList<Expression> args, List<ParameterElement> parameters) {
      for (final arg in args) {
        final type = arg.bestParameterElement.type;
        final expression = arg is NamedExpression ? arg.expression : arg;
        if (!_isFunctionRef(type, expression)) {
          _check(type, expression?.bestType, expression);
        }
      }
    }
  