static Map fieldsInOrder_cache = weakHashMap(); static LS fieldsInOrder(O o) { ret fieldsInOrder(_getClass(o)); } static LS fieldsInOrder(Class c) { if (c == null) null; synchronized(fieldsInOrder_cache) { LS fields = fieldsInOrder_cache.get(c); if (fields != null) ret fields; S order = toStringOpt(getOpt(c, "_fieldOrder")); Set set = asTreeSet(allNonStaticFields(c)); if (order == null) ret asList(set); fields = splitAtSpace(order); setAddAll(fields, set); // TODO: optimize fieldsInOrder_cache.put(c, fields); ret fields; } }