code: private void squaresToPositionList() {
  		this.positionPatterns.reset();
  		List<DetectPolygonFromContour.Info> infoList = squareDetector.getPolygonInfo();
  		for (int i = 0; i < infoList.size(); i++) {
  			DetectPolygonFromContour.Info info = infoList.get(i);
  
  			// The test below has been commented out because the new external only contour
  			// detector discards all information related to internal contours
  			// squares with no internal contour cannot possibly be a finder pattern
  //			if( !info.hasInternal() )
  //				continue;
  
  			// See if the appearance matches a finder pattern
  			double grayThreshold = (info.edgeInside+info.edgeOutside)/2;
  			if( !checkPositionPatternAppearance(info.polygon,(float)grayThreshold))
  				continue;
  
  			// refine the edge estimate
  			squareDetector.refine(info);
  
  			PositionPatternNode pp = this.positionPatterns.grow();
  			pp.reset();
  			pp.square = info.polygon;
  			pp.grayThreshold = grayThreshold;
  
  			graph.computeNodeInfo(pp);
  		}
  	}
docs: Takes the detected squares and turns it into a list of {@link PositionPatternNode}.