List<PsiElement> (PushDownData<MemberInfo, PsiMember> pushDownData) { final List<PsiElement> result = new ArrayList<>(); final PsiClass aClass = (PsiClass)pushDownData.getSourceClass(); ClassInheritorsSearch.search(aClass, false).forEach((iClass) -> { result.add(iClass); return true; }); final PsiMethod interfaceMethod = LambdaUtil.getFunctionalInterfaceMethod(aClass); if (interfaceMethod != null) { for (MemberInfo info : pushDownData.getMembersToMove()) { if (interfaceMethod == info.getMember()) { FunctionalExpressionSearch.search(aClass).forEach(expression -> { result.add(expression); return true; }); break; } } } return result; }