static boolean empty(Collection c) { ret c == null || c.isEmpty(); } static boolean empty(S s) { ret s == null || s.length() == 0; } static boolean empty(Map map) { ret map == null || map.isEmpty(); } static boolean empty(O[] o) { ret o == null || o.length == 0; } static boolean empty(O o) { if (o instanceof Collection) ret empty((Collection) o); if (o instanceof S) ret empty((S) o); if (o instanceof Map) ret empty((Map) o); if (o instanceof O[]) ret empty((O[]) o); if (o instanceof byte[]) ret empty((byte[]) o); if (o == null) true; throw fail("unknown type for 'empty': " + getType(o)); } static bool empty(float[] a) { ret a == null || a.length == 0; } static bool empty(int[] a) { ret a == null || a.length == 0; } static bool empty(long[] a) { ret a == null || a.length == 0; } static bool empty(byte[] a) { ret a == null || a.length == 0; } ifclass MultiSet static bool empty(MultiSet ms) { ret ms == null || ms.isEmpty(); } endif