public AnalysisResults(GrammarEngine gren, IntPtr hPack, bool preserveMarkers = false)
        {
            _hPack = hPack;

            int n = GrammarApi.sol_CountRoots(_hPack, 0);

            if (n == 0)
            {
                _nodes = new SyntaxTreeNode[0];
                return;
            }

            int offset = preserveMarkers ? 0 : 1;

            _nodes = new SyntaxTreeNode[n - offset * 2];
            for (int i = offset; i < n - offset; i++)
            {
                _nodes[i - offset] = new SyntaxTreeNode(gren, GrammarApi.sol_GetRoot(_hPack, 0, i));
            }
        }