int cnArgs = 2 + names.length - 3; // "-2" because both FUN, X, Y
RSymbol[] cnNames = new RSymbol[cnArgs];
RNode[] cnExprs = new RNode[cnArgs];
cnNames[0] = null;
ValueProvider xArgProvider = new ValueProvider(call);
cnExprs[0] = xArgProvider;
ValueProvider yArgProvider = new ValueProvider(call);
cnExprs[1] = yArgProvider;
ValueProvider[] constantArgProviders = new ValueProvider[cnArgs];
int j = 0;
for (int i = 0; i < names.length; i++) {
if (ia.position("X") == i || ia.position("Y") == i || ia.position("FUN") == i) {
continue;
}
cnNames[2 + j] = names[i];
ValueProvider vp = new ValueProvider(call);
cnExprs[2 + j] = vp;
constantArgProviders[j] = vp;
j++;
}