List<T> () { List<T> cached = myCached; if (cached != null) { return cached; } if (!myMap.isEmpty()) { cached = new SmartList<>(myMap.values()); Collections.sort(cached); } else { cached = Collections.emptyList(); } myCached = cached; return cached; }