/** interface fed to Comparator to sort case declarations on a switch.
Sorting is suppressed if there is any fallthrough.  Alternatively the
rearranger has to be very careful not to change the semantics by its
reordering when there is fallthrough.  No cases are reattached to different
code.  Just multiple cases on the same code are put in order.  Then entire
case blocks are sorted by the value of the first associated case literal.
Never does the rearranger change what the code does.
CaseItems work differently that the other items.  They do not drag the
associated code along with them.

*/
interface CaseItem {

/**
  * return enums for boolean byte char short int float long double String od the switch variable.
  */
Type getType();

/**
  * Number[] or String[]
  */
Object[] getCaseValues();

}