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 resetRefinementStats(int template, ArithmeticDecoderStats previousStats)
        {
            int size = referredToContextSize[template];

            if (previousStats != null && previousStats.getContextSize() == size)
            {
                if (refinementRegionStats.getContextSize() == size)
                {
                    refinementRegionStats.overwrite(previousStats);
                }
                else
                {
                    refinementRegionStats = previousStats.copy();
                }
            }
            else
            {
                if (refinementRegionStats.getContextSize() == size)
                {
                    refinementRegionStats.reset();
                }
                else
                {
                    refinementRegionStats = new ArithmeticDecoderStats(1 << size);
                }
            }
        }