@Override
 public int compareTo(Grid o) {
   return (int) (o.compute() - this.compute());
 }
 public SortedSet<Grid> children() {
   SortedSet<Grid> children = new TreeSet<Grid>();
   Grid gridA, gridB;
   int t = 0;
   gridA = new Grid(this);
   for (int i = 0; i < 4; i++) {
     while (gridA.moveRight()) {
       t++;
       gridB = new Grid(gridA);
       while (gridB.moveDown()) gridB.down++;
       gridB.rotations = i;
       gridB.translations = t;
       children.add(gridB);
     }
     while (gridA.moveLeft()) {
       t--;
       gridB = new Grid(gridA);
       while (gridB.moveDown()) gridB.down++;
       gridB.rotations = i;
       gridB.translations = t;
       children.add(gridB);
     }
     gridA.turnClockwise();
   }
   return children;
 }