map (callback) {
      // must be implemented by each of the Node implementations
      throw new Error('Cannot run map on a Node interface')
    }
Create a new Node 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 {OperatorNode} Returns a transformed copy of the node