void (final PsiMethod constructor, String setterPrefix, final Map<String, ParameterData> result) { for (PsiParameter parameter : constructor.getParameterList().getParameters()) { initParameterData(parameter, setterPrefix, result); } final PsiMethod chainedConstructor = CommonJavaRefactoringUtil.getChainedConstructor(constructor); if (chainedConstructor != null) { final PsiCodeBlock constructorBody = constructor.getBody(); LOG.assertTrue(constructorBody != null); final PsiStatement thisStatement = constructorBody.getStatements()[0]; final PsiExpression thisExpression = ((PsiExpressionStatement)thisStatement).getExpression(); final PsiExpression[] args = ((PsiMethodCallExpression)thisExpression).getArgumentList().getExpressions(); int i = 0; for (final PsiParameter parameter : chainedConstructor.getParameterList().getParameters()) { if (!parameter.isVarArgs()) { final PsiExpression arg = args[i]; final ParameterData parameterData = initParameterData(parameter, setterPrefix, result); if (!(arg instanceof PsiReferenceExpression && ((PsiReferenceExpression)arg).resolve() instanceof PsiParameter)) { parameterData.setDefaultValue(arg.getText()); } i++; } } } }