int defaultsLen = d == null ? 0 : d.length;
int diff = argsLen - defaultsLen;
fixNode(completeArgs);
for (int i = 0; i < argsLen; i++) {
exprType argName = args[i];
//this is something as >>var:int=10<<
//handle argument
argName.accept(this);
//handle annotation
if (anns != null) {
exprType ann = anns[i];
if (ann != null) {
ann.accept(this); //right after the '='
}
}
//handle defaults
if (i >= diff) {
exprType defaulArgValue = d[i - diff];
if (defaulArgValue != null) {
defaulArgValue.accept(this);
}
}
}
//varargs
if (completeArgs.vararg != null) {
completeArgs.vararg.accept(this);
if (completeArgs.varargannotation != null) {
completeArgs.varargannotation.accept(this);
}
}
//keyword only arguments (after varargs)
if (completeArgs.kwonlyargs != null) {
for (int i = 0; i < completeArgs.kwonlyargs.length; i++) {
exprType kwonlyarg = completeArgs.kwonlyargs[i];
if (kwonlyarg != null) {
kwonlyarg.accept(this);
if (completeArgs.kwonlyargannotation != null && completeArgs.kwonlyargannotation[i] != null) {
completeArgs.kwonlyargannotation[i].accept(this);
}