void (GrMethod method, GrCallExpression call, GrExpression oldExpression, GrParameter parameter) { Collection<PsiReference> refs = ReferencesSearch.search(parameter, new LocalSearchScope(method), false).findAll(); final GroovyPsiElementFactory elementFactory = GroovyPsiElementFactory.getInstance(call.getProject()); GrExpression expression = elementFactory.createExpressionFromText(oldExpression.getText()); if (GroovyRefactoringUtil.hasSideEffect(expression) && refs.size() > 1 || !hasUnresolvableWriteAccess(refs, oldExpression)) { final String oldName = parameter.getName(); final String newName = InlineMethodConflictSolver.suggestNewName(oldName, method, call); expression = elementFactory.createExpressionFromText(newName); final GrOpenBlock body = method.getBlock(); final GrStatement[] statements = body.getStatements(); GrStatement anchor = null; if (statements.length > 0) { anchor = statements[0]; } body.addStatementBefore(elementFactory.createStatementFromText(createVariableDefinitionText(parameter, oldExpression, newName)), anchor); } for (PsiReference ref : refs) { PsiElement element = ref.getElement(); if (element instanceof GrReferenceExpression) { ((GrReferenceExpression)element).replaceWithExpression(expression, true); } } }