code: boolean isCornerValidOrigin( Node candidate ) {
  		candidate.putEdgesIntoList(edgeList);
  		if( edgeList.size() != 2 ) {
  			throw new RuntimeException("BUG! Should be a corner and have two edges");
  		}
  
  		Node a = edgeList.get(0);
  		Node b = edgeList.get(1);
  
  		// Find the average angle from the two vectors defined by the two connected nodes
  		double dirA = Math.atan2(a.y-candidate.y, a.x-candidate.x);
  		double dirB = Math.atan2(b.y-candidate.y, b.x-candidate.x);
  
  		double dirAB = UtilAngle.boundHalf(dirA+UtilAngle.distanceCCW(dirA,dirB)/2.0);
  
  		// Find the acute angle between the corner's orientation and the vector
  		double acute = UtilAngle.distHalf(dirAB,candidate.orientation);
  
  		return acute < Math.PI/4.0;
  	}
docs: A corner can be an origin if the corner's orientation (a line between the two adjacent black squares) and
  the line splitting the direction to the two connecting nodes are the same.