diff --git a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java
index 2c4418b128d5..525417561f39 100644
--- a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java
+++ b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java
@@ -889,16 +889,13 @@ public class RefactoringUtil {
final PsiElement invalidBody = lambdaExpression.getBody();
if (invalidBody == null) return declaration;
- final PsiLambdaExpression expressionFromText = (PsiLambdaExpression)elementFactory
- .createExpressionFromText(lambdaExpression.getParameterList().getText() + " -> {}", lambdaExpression.getParent());
+ String lambdaParamListWithArrowAndComments = lambdaExpression.getText()
+ .substring(0, (declaration.isPhysical() ? declaration : invalidBody).getStartOffsetInParent());
+ final PsiLambdaExpression expressionFromText = (PsiLambdaExpression)elementFactory.createExpressionFromText(lambdaParamListWithArrowAndComments + "{}", lambdaExpression.getParent());
PsiCodeBlock newBody = (PsiCodeBlock)expressionFromText.getBody();
LOG.assertTrue(newBody != null);
newBody.add(declaration);
- lambdaExpression =
- (PsiLambdaExpression)lambdaExpression.replace(elementFactory.createExpressionFromText(
- lambdaExpression.getParameterList().getText() + " -> " + invalidBody.getText(), lambdaExpression));
-
final PsiElement lambdaExpressionBody = lambdaExpression.getBody();
LOG.assertTrue(lambdaExpressionBody != null);
final PsiStatement lastBodyStatement;
diff --git a/java/java-tests/testData/refactoring/introduceVariable/PutInLambdaBodyMultipleOccurrences.after.java b/java/java-tests/testData/refactoring/introduceVariable/PutInLambdaBodyMultipleOccurrences.after.java
index 08a1dfc04531..b0a06b3666e6 100644
--- a/java/java-tests/testData/refactoring/introduceVariable/PutInLambdaBodyMultipleOccurrences.after.java
+++ b/java/java-tests/testData/refactoring/introduceVariable/PutInLambdaBodyMultipleOccurrences.after.java
@@ -8,7 +8,8 @@ class X {
public void foo(Class> cls)
{
Stream.of(cls.getMethods())
- .filter(method -> {
+ .filter(method ->//my comment to keep
+ {
Class> c = method.getReturnType();
return Collection.class.isAssignableFrom(c) || Map.class.isAssignableFrom(c);
})
diff --git a/java/java-tests/testData/refactoring/introduceVariable/PutInLambdaBodyMultipleOccurrences.java b/java/java-tests/testData/refactoring/introduceVariable/PutInLambdaBodyMultipleOccurrences.java
index 4643cf18f806..8ee7ea51d092 100644
--- a/java/java-tests/testData/refactoring/introduceVariable/PutInLambdaBodyMultipleOccurrences.java
+++ b/java/java-tests/testData/refactoring/introduceVariable/PutInLambdaBodyMultipleOccurrences.java
@@ -8,7 +8,7 @@ class X {
public void foo(Class> cls)
{
Stream.of(cls.getMethods())
- .filter(method ->
+ .filter(method ->//my comment to keep
Collection.class.isAssignableFrom(method.getReturnType()) || Map.class.isAssignableFrom(method.getReturnType()))
.collect(Collectors.toList());
}