### Question:
PredicateUtils { public static boolean isStatisticsOverflow(Type type, ParquetIntegerStatistics parquetIntegerStatistics) { long min = parquetIntegerStatistics.getMin(); long max = parquetIntegerStatistics.getMax(); if (type == TINYINT) { return min < Byte.MIN_VALUE || max > Byte.MAX_VALUE; } if (type == SMALLINT) { return min < Short.MIN_VALUE || max > Short.MAX_VALUE; } if (type == INTEGER) { return min < Integer.MIN_VALUE || max > Integer.MAX_VALUE; } if (type == BIGINT) { return false; } if (type instanceof DecimalType && ((DecimalType) type).getScale() == 0) { DecimalType decimalType = (DecimalType) type; if (!decimalType.isShort()) { return false; } return BigDecimal.valueOf(min).compareTo(minimalValue(decimalType)) < 0 || BigDecimal.valueOf(max).compareTo(maximalValue(decimalType)) > 0; } throw new IllegalArgumentException("Unsupported type: " + type); } private  PredicateUtils(); static boolean isStatisticsOverflow(Type type, ParquetIntegerStatistics parquetIntegerStatistics); static Predicate buildPredicate(
            MessageType requestedSchema,
            TupleDomain<ColumnDescriptor> parquetTupleDomain,
            Map<List<String>, RichColumnDescriptor> descriptorsByPath,
            DateTimeZone timeZone); static boolean predicateMatches(Predicate parquetPredicate, BlockMetaData block, ParquetDataSource dataSource, Map<List<String>, RichColumnDescriptor> descriptorsByPath, TupleDomain<ColumnDescriptor> parquetTupleDomain, boolean failOnCorruptedParquetStatistics);  }### Answer:
@Test public void testIsStatisticsOverflow() { assertFalse(isStatisticsOverflow(TINYINT, new ParquetIntegerStatistics(-10L, 10L))); assertTrue(isStatisticsOverflow(TINYINT, new ParquetIntegerStatistics(-129L, 10L))); assertTrue(isStatisticsOverflow(TINYINT, new ParquetIntegerStatistics(-10L, 129L))); assertFalse(isStatisticsOverflow(SMALLINT, new ParquetIntegerStatistics(-32_000L, 32_000L))); assertTrue(isStatisticsOverflow(SMALLINT, new ParquetIntegerStatistics(-100_000L, 32_000L))); assertTrue(isStatisticsOverflow(SMALLINT, new ParquetIntegerStatistics(-32_000L, 100_000L))); assertFalse(isStatisticsOverflow(INTEGER, new ParquetIntegerStatistics(-2_000_000_000L, 2_000_000_000L))); assertTrue(isStatisticsOverflow(INTEGER, new ParquetIntegerStatistics(-3_000_000_000L, 2_000_000_000L))); assertTrue(isStatisticsOverflow(INTEGER, new ParquetIntegerStatistics(-2_000_000_000L, 3_000_000_000L))); assertFalse(isStatisticsOverflow(createDecimalType(5, 0), new ParquetIntegerStatistics(-10_000L, 10_000L))); assertTrue(isStatisticsOverflow(createDecimalType(5, 0), new ParquetIntegerStatistics(-100_000L, 10_000L))); assertTrue(isStatisticsOverflow(createDecimalType(5, 0), new ParquetIntegerStatistics(-10_000L, 100_000L))); assertFalse(isStatisticsOverflow(createDecimalType(19, 0), new ParquetIntegerStatistics(-1_000_000_000_000_000_000L, 1_000_000_000_000_000_000L))); }