List<Value> (PsiSwitchBlock block, List<Value> allValues) { List<Value> missingValues = new ArrayList<>(allValues); PsiCodeBlock body = block.getBody(); if (body != null) { Collection<PsiSwitchLabelStatementBase> labels = PsiTreeUtil.findChildrenOfType(body, PsiSwitchLabelStatementBase.class); Set<Object> existingBranches = StreamEx.of(labels) .toFlatCollection(CreateMissingSwitchBranchesAction::getLabelConstants, HashSet::new); missingValues.removeIf(v -> existingBranches.contains(v.myValue)); } return missingValues; }