anchor.diff:      if (returnStatement.expression == null) {
         value = graph.addConstantNull(compiler);
       } else {
  -      assert(target is ir.FunctionNode);
  +      assert(_targetFunction != null && _targetFunction is ir.FunctionNode);
         returnStatement.expression.accept(this);
         value = typeBuilder.potentiallyCheckOrTrustType(pop(),
  -          astAdapter.getFunctionReturnType(target));
  +          astAdapter.getFunctionReturnType(_targetFunction));
       }
       // TODO(het): Add source information
       // TODO(het): Set a return value instead of closing the function when we
  
positive.code:   }
  
    @override
    void visitFunctionExpression(ir.FunctionExpression funcExpression) {
      LocalFunctionElement methodElement = astAdapter.getElement(funcExpression);
      ClosureClassMap nestedClosureData = compiler.closureToClassMapper
          .getClosureToClassMapping(methodElement.resolvedAst);
      assert(nestedClosureData != null);
  
negative.code:   final ResolvedAst resolvedAst;
    final CodegenRegistry registry;
  
    /// Helper accessor for all kernel function-like targets (Procedure,
    /// FunctionExpression, FunctionDeclaration) of the inner FunctionNode itself.
    /// If the current target is not a function-like target, _targetFunction will
    /// be null.
    ir.FunctionNode _targetFunction;
  
    /// A stack of [DartType]s that have been seen during inlining of factory
    /// constructors.  These types are preserved in [HInvokeStatic]s and
    /// [HCreate]s inside the inline code and registered during code generation
  