code: function guardedSeq() { 
              var args = Array.prototype.slice.call(arguments, 1).map(function(r) { return m.seq(m.assert(r), _this.ws); });
              return m.seq(arguments[0], _this.ws, m.seq.apply(m, args)); 
          }
docs: If the first rule argument passes, all subsequent rules must pass or an assert will throw