invoke(body, stack, filename) {
    var self = this
      , ret;

    if (filename) this.paths.push(dirname(filename));

    // Return
    if (this.return) {
      ret = this.eval(body.nodes);
      if (stack) this.stack.pop();
      // Mixin
    } else {
      body = this.visit(body);
      if (stack) this.stack.pop();
      this.mixin(body.nodes, this.currentBlock);
      ret = nodes.null;
    }

    if (filename) this.paths.pop();

    return ret;
  }
Invoke the given function `body`.

@param {Block} body
@return {Node}
@api private