//>>built
define("dojox/lang/functional/tailrec",["dijit","dojo","dojox","dojo/require!dojox/lang/functional/lambda,dojox/lang/functional/util"],function(_1,_2,_3){
_2.provide("dojox.lang.functional.tailrec");
_2.require("dojox.lang.functional.lambda");
_2.require("dojox.lang.functional.util");
(function(){
var df=_3.lang.functional,_4=df.inlineLambda,_5="_x";
df.tailrec=function(_6,_7,_8){
var c,t,b,cs,ts,bs,_9={},_a={},_b=function(x){
_9[x]=1;
};
if(typeof _6=="string"){
cs=_4(_6,_5,_b);
}else{
c=df.lambda(_6);
cs="_c.apply(this, _x)";
_a["_c=_t.c"]=1;
}
if(typeof _7=="string"){
ts=_4(_7,_5,_b);
}else{
t=df.lambda(_7);
ts="_t.t.apply(this, _x)";
}
if(typeof _8=="string"){
bs=_4(_8,_5,_b);
}else{
b=df.lambda(_8);
bs="_b.apply(this, _x)";
_a["_b=_t.b"]=1;
}
var _c=df.keys(_9),_d=df.keys(_a),f=new Function([],"var _x=arguments,_t=_x.callee,_c=_t.c,_b=_t.b".concat(_c.length?","+_c.join(","):"",_d.length?",_t=_x.callee,"+_d.join(","):t?",_t=_x.callee":"",";for(;!",cs,";_x=",bs,");return ",ts));
if(c){
f.c=c;
}
if(t){
f.t=t;
}
if(b){
f.b=b;
}
return f;
};
})();
});
