@Nullable public static String getReferenceSignature( FunctionReference functionReference, char trimKey, int equalParameterCount) { String refSignature = functionReference.getSignature(); if (StringUtil.isEmpty(refSignature)) { return null; } PsiElement[] parameters = functionReference.getParameters(); if (parameters.length != equalParameterCount) { return null; } PsiElement parameter = parameters[0]; // we already have a string value if ((parameter instanceof StringLiteralExpression)) { String param = ((StringLiteralExpression) parameter).getContents(); if (StringUtil.isNotEmpty(param)) { return refSignature + trimKey + param; } return null; } // whitelist here; we can also provide some more but think of performance // Service::NAME, $this->name and Entity::CLASS; if (parameter instanceof PhpReference && (parameter instanceof ClassConstantReference || parameter instanceof FieldReference)) { String signature = ((PhpReference) parameter).getSignature(); if (StringUtil.isNotEmpty(signature)) { return refSignature + trimKey + signature; } return null; } return null; }