whole_func_string: function merge(x, y) {
      for (const key of Object.keys(y)) {
          if (typeof x[key] === "function") {
              if (x[key]._handlers == null) {
                  const fs = [x[key], y[key]]
                  x[key] = dispatch.bind(null, fs)
                  x[key]._handlers = fs
              } else {
                  x[key]._handlers.push(y[key])
              }
          } else {
              x[key] = y[key]
          }
      }
      return x
  }
func_code_string: function merge(x, y) {
      for (const key of Object.keys(y)) {
          if (typeof x[key] === "function") {
              if (x[key]._handlers == null) {
                  const fs = [x[key], y[key]]
                  x[key] = dispatch.bind(null, fs)
                  x[key]._handlers = fs
              } else {
                  x[key]._handlers.push(y[key])
              }
          } else {
              x[key] = y[key]
          }
      }
      return x
  }
func_documentation_string: Merge two visitors.
  @param {Visitor} x The visitor which is assigned.
  @param {Visitor} y The visitor which is assigning.
  @returns {Visitor} `x`.