code: protected boolean mergeSegments() {
  
  		// See if merging will cause a degenerate case
  		if( splits.size() <= 3 )
  			return false;
  
  		boolean change = false;
  		work.reset();
  
  		for( int i = 0; i < splits.size; i++ ) {
  			int start = splits.data[i];
  			int end = splits.data[(i+2)%splits.size];
  
  			if( selectSplitOffset(start,circularDistance(start,end)) < 0 ) {
  				// merge the two lines by not adding it
  				change = true;
  			} else {
  				work.add(splits.data[(i + 1)%splits.size]);
  			}
  
  		}
  
  		// swap the two lists
  		GrowQueue_I32 tmp = work;
  		work = splits;
  		splits = tmp;
  
  		return change;
  	}
docs: Merges lines together if the common corner is close to a common line
  @return true the list being changed