public static bool TryParseDynamic(
            int maxErrorCount,
            IEnumerable<SubString> lines,
            out HRONObject hronObject,
            out HRONDynamicParseError[] errors
            )
        {
            hronObject = null;
            errors = Array<HRONDynamicParseError>.Empty;

            var visitor = new HRONDynamicBuilderVisitor(maxErrorCount);

            Parse(maxErrorCount, lines, visitor);

            if (visitor.Errors.Count > 0)
            {
                errors = visitor.Errors.ToArray();
                return false;
            }

            hronObject = new HRONObject(visitor.Top.Pairs.ToArray());

            return true;
        }
        public static bool TryParseDynamic(
            int maxErrorCount,
            IEnumerable<SubString> lines,
            out dynamic dyn,
            out HRONDynamicParseError[] errors
            )
        {
            HRONObject hronObject;

            if (!TryParseDynamic(maxErrorCount, lines, out hronObject, out errors))
            {
                dyn = null;
                return false;
            }

            dyn = hronObject;
            return true;
        }