boolean (@NotNull UCallExpression expression) { String callText = expression.getMethodName(); if (callText == null) return true; PsiMethod callee = expression.resolve(); if (callee != null && callee.hasModifierProperty(PsiModifier.ABSTRACT)) { final PsiClass calleeContainingClass = callee.getContainingClass(); if (calleeContainingClass != null && myContainingClass.isInheritor(calleeContainingClass, true)) { final PsiMethod implementation = myContainingClass.findMethodBySignature(callee, true); if (implementation != null) { callee = implementation; } } } Pair<PsiMethod, Set<UExpression>> methodWithArguments = new Pair<>(callee, new HashSet<>(expression.getValueArguments())); if (callee != null && proceed.add(methodWithArguments)) { boolean haveAnnotatedParameters = false; final PsiParameter[] psiParameters = callee.getParameterList().getParameters(); for (int i = 0, psiParametersLength = psiParameters.length; i < psiParametersLength; i++) { PsiParameter psiParameter = psiParameters[i]; final PsiModifierList modifierList = psiParameter.getModifierList(); if (modifierList != null && modifierList.hasAnnotation(TestFrameworkConstants.TEST_DATA_FILE_ANNOTATION_QUALIFIED_NAME)) { myFoundTestDataParameters = true; if (psiParameter.isVarArgs()) { processVarargCallArgument(expression, argumentMap, result); } else { processCallArgument(expression, argumentMap, result, i); } haveAnnotatedParameters = true; } } if (expression.getReceiver() == null && !haveAnnotatedParameters) { result.addAll(collectTestDataReferences(callee, buildArgumentMap(expression, callee), proceed)); } } return true; }