private static void describe(Object o) {
        if (o instanceof Set) {
            System.out.println("Set:");
            Set s = (Set) o;
            for (java.util.Iterator it  = ((Set)o).iterator(); it.hasNext(); ) {
                System.out.println("\t" + it.next());
            }
        } else if (o instanceof Tagged) {
            System.out.println("Tagged object: ");
            Object[] components = (Object[])((Tagged)o).getValue();
            for (int i = 0; i < components.length; i++) {
                System.out.println("\t" + components[i]);
            }
        } else {
            System.out.println(o.getClass() + ": ");
            System.out.println(o);
        }
    }