void (Disposable parent, final Project project, final Language language, final String paramName) { if (language == null) return; final ConcatenationAwareInjector injector = (injectionPlacesRegistrar, operands) -> { PsiElement operand = operands[0]; if (!(operand instanceof PsiLiteralExpression)) return; if (!(operand.getParent() instanceof PsiExpressionList expressionList)) return; int i = ArrayUtil.indexOf(expressionList.getExpressions(), operand); if (!(operand.getParent().getParent() instanceof PsiMethodCallExpression methodCallExpression)) return; PsiMethod method = methodCallExpression.resolveMethod(); if (method == null) return; PsiParameter[] parameters = method.getParameterList().getParameters(); if (i>=parameters.length) return; PsiParameter parameter = parameters[i]; if (!paramName.equals(parameter.getName())) return; TextRange textRange = textRangeToInject((PsiLanguageInjectionHost)operand); injectionPlacesRegistrar.startInjecting(language) .addPlace(null, null, (PsiLanguageInjectionHost)operand, textRange) .doneInjecting(); }; ConcatenationInjectorManager.EP_NAME.getPoint(project).registerExtension(injector, parent); }