docs: Element<Corner> selectCornerToSplit( boolean loops ) {
  		Element<Corner> selected = null;
  		double bestChange = convex ? 0 : -Double.MAX_VALUE;
  
  		// Pick the side that if split would improve the overall score the most
  		Element<Corner> e=list.getHead();
  		Element<Corner> end = loops ? null : list.getTail();
  
  		while( e != end ) {
  			Corner c = e.object;
  			if( !c.splitable) {
  				e = e.next;
  				continue;
  			}
  
  			// compute how much better the score will improve because of the split
  			double change = c.sideError*2 - c.splitError0 - c.splitError1;
  			// it was found that selecting for the biggest change tends to produce better results
  			if( change < 0 ) {
  				change = -change;
  			}
  			if( change > bestChange ) {
  				bestChange = change;
  				selected = e;
  			}
  			e = e.next;
  		}
  
  		return selected;
  	}