map (callback) {
      return new RangeNode(
        this._ifNode(callback(this.start, 'start', this)),
        this._ifNode(callback(this.end, 'end', this)),
        this.step && this._ifNode(callback(this.step, 'step', this))
      )
    }
Create a new RangeNode 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 {RangeNode} Returns a transformed copy of the node