context:   queueComplexMove: function(first, last, target, cells, spaces, numToMove) {    var numLeft = numToMove;    var firsts = new Array(spaces.length);    var lasts = new Array(spaces.length);    var nums = new Array(spaces.length);  // nums[i] = #[firsts[i]..lasts[i]]    // fill the spaces    var i = 0;    var remainingSpaces = spaces;    var usedSpaces = [];    var current = last;    while(numLeft > cells.length+1) {      var space = remainingSpaces.shift();      usedSpaces.push(space);      var num = nums[i] = remainingSpaces.length*(cells.length+1)+1; // the num of cards to move to the next space      lasts[i] = current;      for(var j = 1; j < num; j++) current = current.previousSibling;      firsts[i] = current;      this.queueMediumMove(firsts[i], lasts[i], space, cells, remainingSpaces, num);      current = current.previousSibling;      numLeft -= num;      i++;    }    // move final few cards (<c+1 of them    this.queueSimpleMove(first, current, target, cells);    // empty spaces    for(i = i-1; i >= 0; i--) {      this.queueMediumMove(firsts[i], lasts[i], target, cells, remainingSpaces, nums[i]);      remainingSpaces.unshift(usedSpaces.pop());    }  }
meta: 3385	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/3385/fb224f305a537954c670bd1fa2ea01804178da01/freecellmover.js/buggy/freecellmover.js