static Map unsafe_allFieldOffsets(O o){ Class src = _getClass(o); new Map map; while (src != null && src != O.class) { for (Field f : src.getDeclaredFields()) { if ((f.getModifiers() & Modifier.STATIC) == 0) { long offset = cast call(theUnsafe_gen(), 'objectFieldOffset, f); S name = f.getName(); if (map.containsKey(name)) name = lightlyShortClassName(src) + "." + name; map.put(name, offset); } } src = src.getSuperclass(); } ret orderMapByValue(map); }