map (callback) {
      const fn = this._ifNode(callback(this.fn, 'fn', this))
      const args = []
      for (let i = 0; i < this.args.length; i++) {
        args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this))
      }
      return new FunctionNode(fn, args)
    }
Create a new FunctionNode whose children are the results of calling
the provided callback function for each child of the original node.
@param {function(child: Node, path: string, parent: Node): Node} callback
@returns {FunctionNode} Returns a transformed copy of the node