for (int i = size - 1; i >= 0; i--) {
Parameter parameter = parameters[i];
if (parameter != null && parameter.hasInitialExpression()) {
paramValues.add(Integer.valueOf(i));
paramValues.add(
new CastExpression(
parameter.getType(),
parameter.getInitialExpression()
)
);
counter++;
}
}
for (int j = 1; j <= counter; j++) {
Parameter[] newParams = new Parameter[parameters.length - j];
ArgumentListExpression arguments = new ArgumentListExpression();
int index = 0;
int k = 1;
for (int i = 0; i < parameters.length; i++) {
if (k > counter - j && parameters[i] != null && parameters[i].hasInitialExpression()) {
arguments.addExpression(
new CastExpression(
parameters[i].getType(),
parameters[i].getInitialExpression()
)
);
k++;
} else if (parameters[i] != null && parameters[i].hasInitialExpression()) {
newParams[index++] = parameters[i];
arguments.addExpression(
new CastExpression(
parameters[i].getType(),
new VariableExpression(parameters[i].getName())
)
);
k++;
} else {
newParams[index++] = parameters[i];
arguments.addExpression(
new CastExpression(
parameters[i].getType(),
new VariableExpression(parameters[i].getName())
)
);
}