Parameter[] params = cn.getParameters();
if (cn.isPrivate()) continue;
Parameter[] pcopy = new Parameter[params.length];
List<Expression> args = new ArrayList<Expression>();
for (int i = 0; i < params.length; i++) {
Parameter p = params[i];
pcopy[i] = p.hasInitialExpression() ?
new Parameter(p.getType(), p.getName(), p.getInitialExpression()) :
new Parameter(p.getType(), p.getName());
args.add(new VariableExpression(p.getName(), p.getType()));
}
if (isClashing(cNode, pcopy)) continue;
BlockStatement body = new BlockStatement();
body.addStatement(new ExpressionStatement(new ConstructorCallExpression(ClassNode.SUPER, new ArgumentListExpression(args))));
cNode.addConstructor(cn.getModifiers(), pcopy, cn.getExceptions(), body);