static Map objectID_map; static long objectID(O o) { if (o == null) ret 0; Map generalMap = cast getOpt(javax(), 'generalMap); if (generalMap == null) fail("Please upgrade JavaX"); synchronized(generalMap) { Map map = cast generalMap.get("objectIDs"); if (map == null) { pcall-short { map = (Map) nuForeignObject(javax(), className(javax()) + '$WeakIdentityHashMap); } if (map == null) map = new WeakIdentityHashMap; // older JavaX generalMap.put("objectIDs", map); } Long l = cast map.get(o); if (l == null) { l = toLong(generalMap.get("lastObjectID"))+1; generalMap.put("lastObjectID", l); map.put(o, l); } ret l; } } static Map objectID_mapSize() { Map generalMap = cast getOpt(javax(), 'generalMap); if (generalMap == null) ret 0; ret l((Map) generalMap.get("objectIDs")); }