static boolean empty(Collection c) { ret c == null || c.isEmpty(); } static boolean empty(Iterable c) { ret c == null || !c.iterator().hasNext(); } static boolean empty(CharSequence 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; } ifndef empty_noGeneric 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)); } endifndef sbool empty(Iterator i) { ret i == null || !i.hasNext(); } static bool empty(double[] a) { ret a == null || a.length == 0; } 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; } static bool empty(short[] a) { ret a == null || a.length == 0; } ifclass MultiSet static bool empty(MultiSet ms) { ret ms == null || ms.isEmpty(); } endif ifclass MultiMap static bool empty(MultiMap mm) { ret mm == null || mm.isEmpty(); } endif sbool empty(File f) { ret getFileSize(f) == 0; } ifclass IntRange sbool empty(IntRange r) { ret r == null || r.empty(); } endif ifclass DoubleRange sbool empty(DoubleRange r) { ret r == null || r.isEmpty(); } endif ifclass IntBuffer sbool empty(IntBuffer b) { ret b == null || b.isEmpty(); } endif ifclass LongBuffer sbool empty(LongBuffer b) { ret b == null || b.isEmpty(); } endif ifclass Rect sbool empty(Rect r) { ret !(r != null && r.w != 0 && r.h != 0); } endif ifclass Chain sbool empty(Chain c) { ret c == null; } endif