private @NotNull String classInfo(@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();
      }
    }
private @NotNull String classInfo(@NotNull E o)