code: function visit() {
    if (this.isBlacklisted()) return false;
    if (this.opts.shouldSkip && this.opts.shouldSkip(this)) return false;
  
    this.call("enter");
  
    if (this.shouldSkip) {
      return this.shouldStop;
    }
  
    var node = this.node;
    var opts = this.opts;
  
    if (node) {
      if (Array.isArray(node)) {
        // traverse over these replacement nodes we purposely don't call exitNode
        // as the original node has been destroyed
        for (var i = 0; i < node.length; i++) {
          _index2["default"].node(node[i], opts, this.scope, this.state, this, this.skipKeys);
        }
      } else {
        _index2["default"].node(node, opts, this.scope, this.state, this, this.skipKeys);
        this.call("exit");
      }
    }
  
    return this.shouldStop;
  }
docs: Visits a node and calls appropriate enter and exit callbacks
  as required.