private static JetParameterList replaceParameterListAndKeepDelimiters( JetParameterList parameterList, JetParameterList newParameterList) { List<JetParameter> oldParameters = parameterList.getParameters(); List<JetParameter> newParameters = newParameterList.getParameters(); int oldCount = oldParameters.size(); int newCount = newParameters.size(); int commonCount = Math.min(oldCount, newCount); for (int i = 0; i < commonCount; i++) { oldParameters.set(i, (JetParameter) oldParameters.get(i).replace(newParameters.get(i))); } if (commonCount == 0) return (JetParameterList) parameterList.replace(newParameterList); if (oldCount > commonCount) { parameterList.deleteChildRange( oldParameters.get(commonCount - 1).getNextSibling(), KotlinPackage.last(oldParameters)); } else if (newCount > commonCount) { parameterList.addRangeAfter( newParameters.get(commonCount - 1).getNextSibling(), newParameterList.getLastChild().getPrevSibling(), PsiTreeUtil.skipSiblingsBackward( parameterList.getLastChild(), PsiWhiteSpace.class, PsiComment.class)); } return parameterList; }