List<OrderEntry> (@NotNull Module ownerModule, @NotNull List<? extends OrderEntry> entries) { if (entries.isEmpty()) return Collections.emptyList(); if (entries.size() == 1) { OrderEntry entry = entries.get(0); return entry.getOwnerModule() == ownerModule ? new ArrayList<>(entries) : Collections.emptyList(); } int index = Collections.binarySearch(entries, new FakeOrderEntry(ownerModule), RootIndex.BY_OWNER_MODULE); if (index < 0) { return Collections.emptyList(); } int firstIndex = index; while (firstIndex - 1 >= 0 && entries.get(firstIndex - 1).getOwnerModule() == ownerModule) { firstIndex--; } int lastIndex = index + 1; while (lastIndex < entries.size() && entries.get(lastIndex).getOwnerModule() == ownerModule) { lastIndex++; } return new ArrayList<>(entries.subList(firstIndex, lastIndex)); }