var Node = require(“./node”),

contexts = require("../contexts");

var DetachedRuleset = function (ruleset, frames) {

this.ruleset = ruleset;
this.frames = frames;

}; DetachedRuleset.prototype = new Node(); DetachedRuleset.prototype.type = “DetachedRuleset”; DetachedRuleset.prototype.evalFirst = true; DetachedRuleset.prototype.accept = function (visitor) {

this.ruleset = visitor.visit(this.ruleset);

}; DetachedRuleset.prototype.eval = function (context) {

var frames = this.frames || context.frames.slice(0);
return new DetachedRuleset(this.ruleset, frames);

}; DetachedRuleset.prototype.callEval = function (context) {

return this.ruleset.eval(this.frames ? new contexts.Eval(context, this.frames.concat(context.frames)) : context);

}; module.exports = DetachedRuleset;