anchor.diff:          acc.add(current);
           closed.add(current);
           //generate neighbors and recurse
  -        List<Point> valids = validNeighbors(current, board);
  +        List<Point> valids = validNeighbors(board, current);
   
           for(Point valid in valids){
               if(!open.contains(valid) && !closed.contains(valid)){
  
positive.code:         }
  
          //detect blobs
          List<Point> removals = [];
          int blocksCleared = 0;
          int chainPower = 0;
          int colorBonus = 0;
          int groupBonus = 0;
  
          //stderr.writeln("Top point $top Cell ${cellAt(newBoard, top)}");
          List<Point> topBlob = connected(newBoard, top);
          //stderr.writeln("Top Connected: $topBlob");
          if(topBlob.length > 3){
              removals.addAll(topBlob);
              blocksCleared += topBlob.length;
              groupBonus += topBlob.length - 4;
          }
  
          if(!topBlob.contains(bottom)){
              //stderr.writeln("Bottom point $bottom Cell ${cellAt(newBoard, bottom)}");
              List<Point> bottomBlob = connected(newBoard, bottom);
              //stderr.writeln("Bottom Connected: $bottomBlob");
              if(bottomBlob.length > 3){
                  if(removals.length > 0 && pair.top != pair.bottom){
  
negative.code: List<Pair> pairs = [];
  int TURN_LIMIT = 200;
  int turn = 0;
  int TIMEOUT = 80;
  
  //timer class
  Stopwatch sw = new Stopwatch();
  
  enum Cell {empty, skull, blue, green, pink, red, yellow}
  
  