anchor.diff:    bool _hasImplicitReturnType = false;
   
     FunctionDeclarationJudgment(
  -      VariableDeclarationJudgment variable, FunctionNode function)
  +      VariableDeclarationJudgment variable, FunctionNodeJudgment function)
         : super(variable, function);
   
     VariableDeclarationJudgment get variableJudgment => variable;
  
positive.code:     implements ExpressionJudgment {
    DartType inferredType;
  
    FunctionExpressionJudgment(FunctionNode function) : super(function);
  
    @override
    DartType infer<Expression, Statement, Initializer, Type>(
        ShadowTypeInferrer inferrer,
        Factory<Expression, Statement, Initializer, Type> factory,
        DartType typeContext) {
      inferredType = inferrer.inferLocalFunction(
          factory, function, typeContext, fileOffset, null);
      inferrer.listener.functionExpression(this, fileOffset, inferredType);
      return inferredType;
    }
  
negative.code:       ShadowTypeInferrer inferrer,
        Factory<Expression, Statement, Initializer, Type> factory) {
      inferrer.inferMetadataKeepingHelper(factory, variable.annotations);
      DartType returnContext = _hasImplicitReturnType
          ? (inferrer.strongMode ? null : const DynamicType())
          : function.returnType;
      functionJudgment.infer(inferrer, factory, null, returnContext, fileOffset);
      var inferredType = variable.type = function.functionType;
      inferrer.listener.functionDeclaration(
          variableJudgment.createBinder(inferrer), inferredType);
  