List<MyUnwrapAction> (@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file) { List<MyUnwrapAction> result = new ArrayList<>(); UnwrapDescriptor descriptor = getUnwrapDescription(file); for (Pair<PsiElement, Unwrapper> desc : descriptor.collectUnwrappers(project, editor, file)) { PsiElement element = desc.getFirst(); Unwrapper unwrapper = desc.getSecond(); if (element == null || unwrapper == null) { throw new IllegalStateException(descriptor + " returned "+desc); } result.add(createUnwrapAction(unwrapper, element, editor, project)); } return result; }