public override void ExitParameters([NotNull] ParametersContext context)
        {
            logger.Trace(" Exit Params={0}", context._pairs.Aggregate("", (a, r) => a += r.ID().GetText() + " = " + r.pairvalue().GetText() + "\n"));

            var parameter = new Models.ParameterModel("#" + context.ID().GetText());

            //parameter.Section = CurrentSection;
            foreach (var item in context._pairs)
            {
                var p = PairProps.Get(item);
                parameter.Value.Add(p);
            }
            // check for doubles
            var existing = Collector.ParameterModels.FirstOrDefault(p => p.Name == parameter.Name);

            if (existing != null)
            {
                existing.Value.AddRange(parameter.Value);
            }
            else
            {
                Collector.ParameterModels.Add(parameter);
            }

            base.ExitParameters(context);
        }
        public override void ExitObjFull([NotNull] ObjFullContext context)
        {
            var obj     = new List <Models.IModelObject>();
            var orderby = new List <string>();

            if (context.orderstatement() != null)
            {
                foreach (var item in context.orderstatement()._orderby)
                {
                    orderby.Add(item.Text);
                }
            }
            foreach (var item in context._pairs)
            {
                var p = PairProps.Get(item);
                obj.Add(p);
            }
            ObjProps.Put(context, obj);
            ObjOrderByProps.Put(context, orderby);
            base.ExitObjFull(context);
        }