String (@NotNull E o) { try { return o + " (" + o.getClass() + "; super interfaces: " + Arrays.toString(o.getClass().getInterfaces()) +")"; } catch (Throwable e) { // ignore in case of Proxy object with poorly-implemented toString() return e.getMessage(); } }