docs: void putIntoCanonical( SquareGrid grid ) {
  
  		boolean rowOdd = grid.rows%2 == 1;
  		boolean colOdd = grid.columns%2 == 1;
  
  		if( colOdd == rowOdd ) {
  			// if odd and square then 4 solutions.  Otherwise just two solution that are on
  			// opposite sides on the grid
  			if( rowOdd && grid.rows == grid.columns ) {
  				int best = -1;
  				double bestDistance = Double.MAX_VALUE;
  				for (int i = 0; i < 4; i++) {
  					SquareNode n = grid.getCornerByIndex(i);
  					double d = n.center.normSq();
  					if( d < bestDistance ) {
  						best = i;
  						bestDistance = d;
  					}
  				}
  
  				for (int i = 0; i < best; i++) {
  					tools.rotateCCW(grid);
  				}
  			} else {
  				double first = grid.get(0,0).center.normSq();
  				double last = grid.getCornerByIndex(2).center.normSq();
  
  				if( last < first ) {
  					tools.reverse(grid);
  				}
  			}
  		}
  		// if only one is odd then there is a unique solution.  Since uber is already in a legit
  		// configuration nothing needs ot be done
  	}