anchor.diff:      typeParameterStack.length = typeParameterStackHeight;
   
       return result;
  +  }
  +
  +  void _setLazyLoadFunction(FunctionNode result, int oldLabelStackBase,
  +      int variableStackHeight, int typeParameterStackHeight) {
  +    final int savedByteOffset = _byteOffset;
  +    final int programStartOffset = _programStartOffset;
  +    final List<TypeParameter> typeParameters = typeParameterStack.toList();
  +    final List<VariableDeclaration> variables = variableStack.toList();
  +    result.lazyBuilder = () {
  +      _byteOffset = savedByteOffset;
  +      typeParameterStack.clear();
  +      typeParameterStack.addAll(typeParameters);
  +      variableStack.clear();
  +      variableStack.addAll(variables);
  +      _programStartOffset = programStartOffset;
  +
  +      result.body = readStatementOption();
  +      result.body?.parent = result;
  +      labelStackBase = oldLabelStackBase;
  +      variableStack.length = variableStackHeight;
  +      typeParameterStack.length = typeParameterStackHeight;
  +      if (result.parent is Procedure) {
  +        Procedure parent = result.parent;
  +        parent.transformerFlags |= getAndResetTransformerFlags();
  +      }
  +    };
     }
   
     void pushVariableDeclaration(VariableDeclaration variable) {
  
positive.code:         int offset = readOffset();
          var variable = readVariableDeclaration();
          variableStack.add(variable); // Will be popped by the enclosing scope.
          var function = readFunctionNode(false);
          return new FunctionDeclaration(variable, function)..fileOffset = offset;
        default:
          throw fail('Invalid statement tag: $tag');
  
negative.code:     var returnType = readDartType();
      int oldLabelStackBase = labelStackBase;
  
      if (lazyLoadBody && outerEndOffset > 0) {
        lazyLoadBody = outerEndOffset - _byteOffset >
            2; // e.g. outline has Tag.Something and Tag.EmptyStatement
      }
  
      var body;
      if (!lazyLoadBody) {
        labelStackBase = labelStack.length;
  