void (@NotNull List<? extends PyCallableParameter> parameters, @NotNull ParamWalker walker) { int i = 0; for (PyCallableParameter parameter : parameters) { final PyParameter psi = parameter.getParameter(); final boolean first = i == 0; final boolean last = i == parameters.size() - 1; if (psi instanceof PyTupleParameter tupleParameter) { walker.enterTupleParameter(tupleParameter, first, last); walkDownParamArray(tupleParameter.getContents(), walker); walker.leaveTupleParameter(tupleParameter, first, last); } else if (psi instanceof PyNamedParameter) { walker.visitNamedParameter((PyNamedParameter)psi, first, last); } else if (psi instanceof PySlashParameter) { walker.visitSlashParameter((PySlashParameter)psi, first, last); } else if (psi instanceof PySingleStarParameter) { walker.visitSingleStarParameter((PySingleStarParameter)psi, first, last); } else { walker.visitNonPsiParameter(parameter, first, last); } i++; } }