// using static generics

  * Sorts an ArrayList in order according to a Comparator.
  * @param E generic type E is used to define that a typed ArrayList must be passed
  * as a parameter and how the Comparator has to match up.
  * @param a typed ArrayList
  * @param c a Comparator suitable for comparing objects in the ArrayList,
  * For ArrayList<String> a String or Object Comparator would do.
static <E> void sort ( ArrayList<E> a, Comparator<? super E> c )
   /* ... */


// method invocatation, no sign of angle brackets anywhere.
sort( myStrings, String.CASE_INSENSITIVE_ORDER );