rem: var piles = card.parentNode.isNormalPile ? getPilesRound(card.parentNode) : this.piles; return searchPiles(piles, testCanMoveToNonEmptyPile(card)) || searchPiles(piles, testCanMoveToEmptyPile(card)) || (!card.nextSibling && ( searchPiles(this.cells, testPileIsEmpty) || searchPiles(this.foundations, testCanMoveToFoundation(card)))); 
add: var up = card.up; if(up) { var upp = up.parentNode; if(upp.isNormalPile && !up.nextSibling && this.movePossible(card, upp)) return upp; } else { var pile = this.emptyPile; if(pile) return pile; } return card.nextSibling ? null : (this.emptyCell || searchPiles(this.foundations, testCanMoveToFoundation(card))); 
context:   getBestMoveForCard: function(card) {    var piles = card.parentNode.isNormalPile ? getPilesRound(card.parentNode) : this.piles;    return searchPiles(piles, testCanMoveToNonEmptyPile(card))        || searchPiles(piles, testCanMoveToEmptyPile(card))        || (!card.nextSibling && (             searchPiles(this.cells, testPileIsEmpty)          || searchPiles(this.foundations, testCanMoveToFoundation(card))));  },
meta: 3385	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/3385/fb224f305a537954c670bd1fa2ea01804178da01/towers.js/clean/towers.js