code: public List<List<SquareNode>> process(List<DetectPolygonFromContour.Info> squares ) {
  		recycleData();
  
  		// set up nodes
  		computeNodeInfo(squares);
  
  		// Connect nodes to each other
  		connectNodes();
  
  		// Find all valid graphs
  		findClusters();
  		return clusters.toList();
  	}
docs: Processes the unordered set of squares and creates a graph out of them using prior knowledge and geometric
  constraints.
  @param squares Set of squares
  @return List of graphs.  All data structures are recycled on the next call to process().