// tries to use index if possible // result is sorted if index was used // result is always an independent collection static Cl nuLike conceptsWithFieldLessThanOrEqualTo_sorted(Class c, S field, O value) { ret conceptsWithFieldLessThanOrEqualTo_sorted(db_mainConcepts(), c, field, value); } static Cl conceptsWithFieldLessThanOrEqualTo_sorted(Concepts concepts, Class c, S field, O value) { // indexed IFieldIndex index = concepts.getFieldIndex(c, field); if (index cast ConceptFieldIndexDesc) synchronized(index.mutex()) { ret reverseInPlace(concatLists(values(((NavigableMap) index.valueToObject.data).tailMap(value, true)))); } // filter manually ret sortByFieldInPlace(field, filter(concepts.list(c), o -> cmp(getOpt(o, field), value) <= 0)); }