code: function(rule) {
        var state = this.bt.current_state();
        try { return rule.call(this); } 
        catch(f) {
          this.bt.catch_mismatch(f);
          this.bt.restore(state);
        }
      }
docs: Optional occurance of rule rule?