interface I { void P (); }
static void Q (IList<I> xs) 
    { foreach (I x in xs) { x.P(); } }
static void R<C> (Action<C> S, IList<C> xs)
    { foreach (C x in xs) { S(x); } }
für gleichzeitige Behandlung mehrerer Objekte
(z. B. Object.equals(Object o) falsch, 
Comparable<T>.compareTo(T o) richtig)