public static void ParseArray(string source, ParseArrayArguments args)
        {
            // how many dimensions?
            var rank = 0;

            Notification FoundArray = null;



            FoundArray =
                a =>
            {
                rank++;

                var index = -1;

                a(
                    new ParseArguments
                {
                    FoundArray  = FoundArray,
                    FoundString = value =>
                    {
                        index++;

                        args.FoundString(rank, index, value);
                    }
                }
                    );

                rank--;
            };

            Parse(source,
                  new ParseArguments
            {
                FoundArray  = FoundArray,
                FoundString = value =>
                {
                    args.FoundString(rank, 0, value);
                }
            }
                  );
        }
		public static void ParseArray(string source, ParseArrayArguments args)
		{
			// how many dimensions?
			var rank = 0;

			Notification FoundArray = null;



			FoundArray =
				a =>
				{
					rank++;

					var index = -1;

					a(
						new ParseArguments
						{
							FoundArray = FoundArray,
							FoundString = value =>
							{
								index++;

								args.FoundString(rank, index, value);
							}
						}
					);

					rank--;
				};

			Parse(source,
				new ParseArguments
				{
					FoundArray = FoundArray,
					FoundString = value =>
					{
						args.FoundString(rank, 0, value);
					}
				}
			);
		}