map (callback) {
      const properties = {}
      for (const key in this.properties) {
        if (hasOwnProperty(this.properties, key)) {
          properties[key] = this._ifNode(
            callback(
              this.properties[key], 'properties[' + stringify(key) + ']', this))
        }
      }
      return new ObjectNode(properties)
    }
Create a new ObjectNode 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 {ObjectNode} Returns a transformed copy of the node