code: function() {
  
        if(this.disableXORs)
          return this._or.apply(this, arguments);
    
        var state = this.bt.current_state(),
            matched = 0,
            mismatches = [];
            ans;
  
        for(var i=1,len=arguments.length; i<len; i++) {
          try {
            ans = arguments[i].call(this);
            if(matched >= 1) break;
      
            matched++;
          } catch (f) {
            this.bt.catch_mismatch(f);
            this.bt.restore(state);
            mismatches.push(f);
          }
        }
        if(matched == 1) 
          return ans;
  
        if(matched > 1)
          this.bt.mismatch("More than one option matched by XOR")
  
        this.bt.mismatch("All alternatives failed");
      }
docs: exclusive Or rule_a || rule_b tries all alternatives and raises an error if there are two matching alternatives TODO check if matched state can be retreived from `ans`