void HandleMultipleParameters(ParseNode astNode, CleanupAstNodeStates states) { var typeNode = states[0]; var commaPositions = new List<int>(); var isInSquares = false; states.EachWithIndex((node, id) => { var isComma = node.Token == TokenKind.Comma; var isOpen = node.Token == TokenKind.OpenSquared; var isClosed = node.Token == TokenKind.CloseSquared; if (isOpen) isInSquares = true; if (isClosed) isInSquares = false; if (isComma && !isInSquares) commaPositions.Add(id); }); commaPositions.Add(states.Count - 1); var functionBlockNode = typeNode.GetParentFunctionBlockNode(); if (functionBlockNode == null) functionBlockNode = typeNode.GetRootNode(); var startPos = 1; foreach (var commaPosition in commaPositions) { ExtractArrayParameter(typeNode, states, startPos, commaPosition - 1, functionBlockNode); startPos = commaPosition + 1; } astNode.RemoveFromParent(); }