public void resetGenericStats(int template, ArithmeticDecoderStats previousStats)
        {
            int size = contextSize[template];

            if (previousStats != null && previousStats.getContextSize() == size)
            {
                if (genericRegionStats.getContextSize() == size)
                {
                    genericRegionStats.overwrite(previousStats);
                }
                else
                {
                    genericRegionStats = previousStats.copy();
                }
            }
            else
            {
                if (genericRegionStats.getContextSize() == size)
                {
                    genericRegionStats.reset();
                }
                else
                {
                    genericRegionStats = new ArithmeticDecoderStats(1 << size);
                }
            }
        }
        public void resetIntStats(int symbolCodeLength)
        {
            iadhStats.reset();
            iadwStats.reset();
            iaexStats.reset();
            iaaiStats.reset();
            iadtStats.reset();
            iaitStats.reset();
            iafsStats.reset();
            iadsStats.reset();
            iardxStats.reset();
            iardyStats.reset();
            iardwStats.reset();
            iardhStats.reset();
            iariStats.reset();

            if (iaidStats.getContextSize() == 1 << (symbolCodeLength + 1))
            {
                iaidStats.reset();
            }
            else
            {
                iaidStats = new ArithmeticDecoderStats(1 << (symbolCodeLength + 1));
            }
        }