public static List <CILType> GetTypes(ParseTreeNode node) { var result = new List <CILType>(); var sigArgs1ParseTreeNode = node; var sigArgParseTreeNode = sigArgs1ParseTreeNode.GetFirstChildWithGrammarName(GrammarNames.sigArg); while (sigArgParseTreeNode != null) { var sigArgType = SigArgParseTreeNodeHelper.GetType(sigArgParseTreeNode); result.Add(sigArgType); sigArgs1ParseTreeNode = sigArgs1ParseTreeNode?.GetFirstChildWithGrammarName(GrammarNames.sigArgs1); sigArgParseTreeNode = sigArgs1ParseTreeNode?.GetFirstChildWithGrammarName(GrammarNames.sigArg); } result.Reverse(); return(result); }