You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@parquet.apache.org by fo...@apache.org on 2020/01/09 08:31:50 UTC

[parquet-mr] branch master updated: PARQUET-1735: Clean Up parquet-columns Module (#723)

This is an automated email from the ASF dual-hosted git repository.

fokko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/parquet-mr.git


The following commit(s) were added to refs/heads/master by this push:
     new 72738f5  PARQUET-1735: Clean Up parquet-columns Module (#723)
72738f5 is described below

commit 72738f59920cb8a875757d5fbb0a70bd7115fdcf
Author: belugabehr <12...@users.noreply.github.com>
AuthorDate: Thu Jan 9 03:31:39 2020 -0500

    PARQUET-1735: Clean Up parquet-columns Module (#723)
    
    * PARQUET-1735: Clean Up parquet-columns Module
    
    * Remove superfluous parentheses
---
 .../org/apache/parquet/column/EncodingStats.java   | 10 +--
 .../parquet/column/impl/ColumnReaderBase.java      | 30 +++++++
 .../parquet/column/impl/ColumnWriteStoreBase.java  |  4 +-
 .../bitpacking/ByteBitPackingValuesWriter.java     |  1 -
 .../delta/DeltaBinaryPackingValuesWriter.java      |  3 -
 .../DeltaBinaryPackingValuesWriterForLong.java     |  1 -
 .../values/deltastrings/DeltaByteArrayReader.java  |  4 +-
 .../values/deltastrings/DeltaByteArrayWriter.java  |  1 -
 .../values/dictionary/DictionaryValuesReader.java  |  2 -
 .../values/dictionary/DictionaryValuesWriter.java  |  4 +-
 .../parquet/column/values/dictionary/IntList.java  |  2 +-
 .../values/fallback/FallbackValuesWriter.java      | 10 ++-
 .../column/values/rle/ZeroIntegerValuesReader.java |  1 +
 .../parquet/example/DummyRecordConverter.java      |  3 +
 .../org/apache/parquet/example/data/Group.java     |  2 +
 .../parquet/example/data/simple/SimpleGroup.java   |  2 +-
 .../parquet/filter2/predicate/FilterApi.java       | 16 ++--
 .../parquet/filter2/predicate/LogicalInverter.java | 14 ++--
 .../filter2/predicate/PrimitiveToBoxedClass.java   |  2 +-
 .../predicate/SchemaCompatibilityValidator.java    |  5 +-
 .../parquet/filter2/predicate/ValidTypeMap.java    |  8 +-
 .../recordlevel/FilteringGroupConverter.java       |  2 +-
 ...ementallyUpdatedFilterPredicateBuilderBase.java |  4 +-
 .../columnindex/BinaryColumnIndexBuilder.java      |  2 +-
 .../columnindex/BooleanColumnIndexBuilder.java     |  2 +-
 .../columnindex/DoubleColumnIndexBuilder.java      |  2 +-
 .../columnindex/FloatColumnIndexBuilder.java       |  2 +-
 .../column/columnindex/IntColumnIndexBuilder.java  |  2 +-
 .../column/columnindex/LongColumnIndexBuilder.java |  2 +-
 .../org/apache/parquet/io/ColumnIOFactory.java     |  2 +-
 .../java/org/apache/parquet/io/GroupColumnIO.java  | 12 +--
 .../org/apache/parquet/io/MessageColumnIO.java     | 15 ++--
 .../parquet/io/RecordReaderImplementation.java     | 10 +--
 .../parquet/io/ValidatingRecordConsumer.java       | 20 ++++-
 .../java/org/apache/parquet/io/api/Binary.java     |  1 +
 .../java/org/apache/parquet/schema/GroupType.java  | 12 +--
 .../org/apache/parquet/schema/MessageType.java     |  4 +-
 .../org/apache/parquet/schema/PrimitiveType.java   |  1 -
 .../main/java/org/apache/parquet/schema/Type.java  |  3 +-
 .../main/java/org/apache/parquet/schema/Types.java | 90 ++++++++++----------
 .../apache/parquet/column/TestEncodingStats.java   |  8 +-
 .../parquet/column/impl/TestColumnReaderImpl.java  |  4 +-
 .../column/impl/TestCorruptDeltaByteArrays.java    |  4 +-
 .../apache/parquet/column/mem/TestMemColumn.java   |  3 +-
 .../parquet/column/page/mem/MemPageStore.java      |  4 +-
 .../parquet/column/page/mem/MemPageWriter.java     |  2 +-
 .../parquet/column/statistics/TestStatistics.java  |  4 +-
 .../column/values/TestValuesReaderImpl.java        |  2 -
 .../org/apache/parquet/column/values/Utils.java    |  1 -
 .../values/bitpacking/TestBitPackingColumn.java    |  4 +
 .../values/delta/benchmark/BenchMarkTest.java      |  2 -
 .../benchmark/BenchmarkDeltaLengthByteArray.java   |  4 +-
 .../values/deltastrings/TestDeltaByteArray.java    |  2 -
 .../benchmark/BenchmarkDeltaByteArray.java         |  8 +-
 .../RunLengthBitPackingHybridIntegrationTest.java  | 12 ---
 .../rle/TestRunLengthBitPackingHybridEncoder.java  |  2 +-
 .../predicate/TestLogicalInverseRewriter.java      |  4 +-
 .../filter2/predicate/TestLogicalInverter.java     |  6 +-
 .../org/apache/parquet/io/ConverterConsumer.java   |  4 +-
 .../parquet/io/ExpectationValidatingConverter.java |  2 +-
 .../java/org/apache/parquet/io/TestColumnIO.java   | 18 ++--
 .../java/org/apache/parquet/io/TestFiltered.java   |  6 +-
 .../apache/parquet/schema/TestTypeBuilders.java    | 96 +++++++++++-----------
 63 files changed, 277 insertions(+), 238 deletions(-)

diff --git a/parquet-column/src/main/java/org/apache/parquet/column/EncodingStats.java b/parquet-column/src/main/java/org/apache/parquet/column/EncodingStats.java
index b9f9b67..d775145 100644
--- a/parquet-column/src/main/java/org/apache/parquet/column/EncodingStats.java
+++ b/parquet-column/src/main/java/org/apache/parquet/column/EncodingStats.java
@@ -81,7 +81,7 @@ public class EncodingStats {
     }
 
     // this modifies the set, so copy it
-    Set<Encoding> encodings = new HashSet<Encoding>(dataStats.keySet());
+    Set<Encoding> encodings = new HashSet<>(dataStats.keySet());
     if (!encodings.remove(RLE_DICTIONARY) &&
         !encodings.remove(PLAIN_DICTIONARY)) {
       return true; // not dictionary encoded
@@ -103,8 +103,8 @@ public class EncodingStats {
    * Used to build {@link EncodingStats} from metadata or to accumulate stats as pages are written.
    */
   public static class Builder {
-    private final Map<Encoding, Integer> dictStats = new LinkedHashMap<Encoding, Integer>();
-    private final Map<Encoding, Integer> dataStats = new LinkedHashMap<Encoding, Integer>();
+    private final Map<Encoding, Integer> dictStats = new LinkedHashMap<>();
+    private final Map<Encoding, Integer> dataStats = new LinkedHashMap<>();
     private boolean usesV2Pages = false;
 
     public Builder clear() {
@@ -148,8 +148,8 @@ public class EncodingStats {
 
     public EncodingStats build() {
       return new EncodingStats(
-          Collections.unmodifiableMap(new LinkedHashMap<Encoding, Integer>(dictStats)),
-          Collections.unmodifiableMap(new LinkedHashMap<Encoding, Integer>(dataStats)),
+          Collections.unmodifiableMap(new LinkedHashMap<>(dictStats)),
+          Collections.unmodifiableMap(new LinkedHashMap<>(dataStats)),
           usesV2Pages);
     }
   }
diff --git a/parquet-column/src/main/java/org/apache/parquet/column/impl/ColumnReaderBase.java b/parquet-column/src/main/java/org/apache/parquet/column/impl/ColumnReaderBase.java
index c929431..4f8b50e 100644
--- a/parquet-column/src/main/java/org/apache/parquet/column/impl/ColumnReaderBase.java
+++ b/parquet-column/src/main/java/org/apache/parquet/column/impl/ColumnReaderBase.java
@@ -165,9 +165,11 @@ abstract class ColumnReaderBase implements ColumnReader {
   private void bindToDictionary(final Dictionary dictionary) {
     binding =
         new Binding() {
+          @Override
           void read() {
             dictionaryId = dataColumn.readValueDictionaryId();
           }
+          @Override
           public void skip() {
             dataColumn.skip();
           }
@@ -175,27 +177,35 @@ abstract class ColumnReaderBase implements ColumnReader {
           void skip(int n) {
             dataColumn.skip(n);
           }
+          @Override
           public int getDictionaryId() {
             return dictionaryId;
           }
+          @Override
           void writeValue() {
             converter.addValueFromDictionary(dictionaryId);
           }
+          @Override
           public int getInteger() {
             return dictionary.decodeToInt(dictionaryId);
           }
+          @Override
           public boolean getBoolean() {
             return dictionary.decodeToBoolean(dictionaryId);
           }
+          @Override
           public long getLong() {
             return dictionary.decodeToLong(dictionaryId);
           }
+          @Override
           public Binary getBinary() {
             return dictionary.decodeToBinary(dictionaryId);
           }
+          @Override
           public float getFloat() {
             return dictionary.decodeToFloat(dictionaryId);
           }
+          @Override
           public double getDouble() {
             return dictionary.decodeToDouble(dictionaryId);
           }
@@ -208,9 +218,11 @@ abstract class ColumnReaderBase implements ColumnReader {
       public Binding convertFLOAT(PrimitiveTypeName primitiveTypeName) throws RuntimeException {
         return new Binding() {
           float current;
+          @Override
           void read() {
             current = dataColumn.readFloat();
           }
+          @Override
           public void skip() {
             current = 0;
             dataColumn.skip();
@@ -220,9 +232,11 @@ abstract class ColumnReaderBase implements ColumnReader {
             current = 0;
             dataColumn.skip(n);
           }
+          @Override
           public float getFloat() {
             return current;
           }
+          @Override
           void writeValue() {
             converter.addFloat(current);
           }
@@ -232,9 +246,11 @@ abstract class ColumnReaderBase implements ColumnReader {
       public Binding convertDOUBLE(PrimitiveTypeName primitiveTypeName) throws RuntimeException {
         return new Binding() {
           double current;
+          @Override
           void read() {
             current = dataColumn.readDouble();
           }
+          @Override
           public void skip() {
             current = 0;
             dataColumn.skip();
@@ -244,9 +260,11 @@ abstract class ColumnReaderBase implements ColumnReader {
             current = 0;
             dataColumn.skip(n);
           }
+          @Override
           public double getDouble() {
             return current;
           }
+          @Override
           void writeValue() {
             converter.addDouble(current);
           }
@@ -256,9 +274,11 @@ abstract class ColumnReaderBase implements ColumnReader {
       public Binding convertINT32(PrimitiveTypeName primitiveTypeName) throws RuntimeException {
         return new Binding() {
           int current;
+          @Override
           void read() {
             current = dataColumn.readInteger();
           }
+          @Override
           public void skip() {
             current = 0;
             dataColumn.skip();
@@ -272,6 +292,7 @@ abstract class ColumnReaderBase implements ColumnReader {
           public int getInteger() {
             return current;
           }
+          @Override
           void writeValue() {
             converter.addInt(current);
           }
@@ -281,9 +302,11 @@ abstract class ColumnReaderBase implements ColumnReader {
       public Binding convertINT64(PrimitiveTypeName primitiveTypeName) throws RuntimeException {
         return new Binding() {
           long current;
+          @Override
           void read() {
             current = dataColumn.readLong();
           }
+          @Override
           public void skip() {
             current = 0;
             dataColumn.skip();
@@ -297,6 +320,7 @@ abstract class ColumnReaderBase implements ColumnReader {
           public long getLong() {
             return current;
           }
+          @Override
           void writeValue() {
             converter.addLong(current);
           }
@@ -315,9 +339,11 @@ abstract class ColumnReaderBase implements ColumnReader {
       public Binding convertBOOLEAN(PrimitiveTypeName primitiveTypeName) throws RuntimeException {
         return new Binding() {
           boolean current;
+          @Override
           void read() {
             current = dataColumn.readBoolean();
           }
+          @Override
           public void skip() {
             current = false;
             dataColumn.skip();
@@ -331,6 +357,7 @@ abstract class ColumnReaderBase implements ColumnReader {
           public boolean getBoolean() {
             return current;
           }
+          @Override
           void writeValue() {
             converter.addBoolean(current);
           }
@@ -340,9 +367,11 @@ abstract class ColumnReaderBase implements ColumnReader {
       public Binding convertBINARY(PrimitiveTypeName primitiveTypeName) throws RuntimeException {
         return new Binding() {
           Binary current;
+          @Override
           void read() {
             current = dataColumn.readBytes();
           }
+          @Override
           public void skip() {
             current = null;
             dataColumn.skip();
@@ -356,6 +385,7 @@ abstract class ColumnReaderBase implements ColumnReader {
           public Binary getBinary() {
             return current;
           }
+          @Override
           void writeValue() {
             converter.addBinary(current);
           }
diff --git a/parquet-column/src/main/java/org/apache/parquet/column/impl/ColumnWriteStoreBase.java b/parquet-column/src/main/java/org/apache/parquet/column/impl/ColumnWriteStoreBase.java
index 2670c31..2018c01 100644
--- a/parquet-column/src/main/java/org/apache/parquet/column/impl/ColumnWriteStoreBase.java
+++ b/parquet-column/src/main/java/org/apache/parquet/column/impl/ColumnWriteStoreBase.java
@@ -107,6 +107,7 @@ abstract class ColumnWriteStoreBase implements ColumnWriteStore {
 
   abstract ColumnWriterBase createColumnWriter(ColumnDescriptor path, PageWriter pageWriter, ParquetProperties props);
 
+  @Override
   public ColumnWriter getColumnWriter(ColumnDescriptor path) {
     return columnWriterProvider.getColumnWriter(path);
   }
@@ -155,6 +156,7 @@ abstract class ColumnWriteStoreBase implements ColumnWriteStore {
     }
   }
 
+  @Override
   public String memUsageString() {
     StringBuilder b = new StringBuilder("Store {\n");
     for (ColumnWriterBase memColumn : columns.values()) {
@@ -205,7 +207,7 @@ abstract class ColumnWriteStoreBase implements ColumnWriteStore {
       long rowsToFillPage =
           usedMem == 0 ?
               props.getMaxRowCountForPageSizeCheck()
-              : (long) ((float) rows) / usedMem * remainingMem;
+              : (long) rows / usedMem * remainingMem;
       if (rowsToFillPage < minRecordToWait) {
         minRecordToWait = rowsToFillPage;
       }
diff --git a/parquet-column/src/main/java/org/apache/parquet/column/values/bitpacking/ByteBitPackingValuesWriter.java b/parquet-column/src/main/java/org/apache/parquet/column/values/bitpacking/ByteBitPackingValuesWriter.java
index a33e22c..d0240bb 100644
--- a/parquet-column/src/main/java/org/apache/parquet/column/values/bitpacking/ByteBitPackingValuesWriter.java
+++ b/parquet-column/src/main/java/org/apache/parquet/column/values/bitpacking/ByteBitPackingValuesWriter.java
@@ -22,7 +22,6 @@ import static org.apache.parquet.column.Encoding.BIT_PACKED;
 
 import java.io.IOException;
 
-import org.apache.parquet.bytes.ByteBufferAllocator;
 import org.apache.parquet.bytes.BytesInput;
 import org.apache.parquet.bytes.BytesUtils;
 import org.apache.parquet.column.Encoding;
diff --git a/parquet-column/src/main/java/org/apache/parquet/column/values/delta/DeltaBinaryPackingValuesWriter.java b/parquet-column/src/main/java/org/apache/parquet/column/values/delta/DeltaBinaryPackingValuesWriter.java
index 45b7a93..a615fc8 100644
--- a/parquet-column/src/main/java/org/apache/parquet/column/values/delta/DeltaBinaryPackingValuesWriter.java
+++ b/parquet-column/src/main/java/org/apache/parquet/column/values/delta/DeltaBinaryPackingValuesWriter.java
@@ -19,13 +19,10 @@
 package org.apache.parquet.column.values.delta;
 
 import org.apache.parquet.bytes.ByteBufferAllocator;
-import org.apache.parquet.bytes.BytesInput;
 import org.apache.parquet.bytes.BytesUtils;
 import org.apache.parquet.bytes.CapacityByteArrayOutputStream;
 import org.apache.parquet.column.Encoding;
 import org.apache.parquet.column.values.ValuesWriter;
-import org.apache.parquet.column.values.bitpacking.BytePackerForLong;
-import org.apache.parquet.column.values.bitpacking.Packer;
 import org.apache.parquet.io.ParquetEncodingException;
 
 import java.io.IOException;
diff --git a/parquet-column/src/main/java/org/apache/parquet/column/values/delta/DeltaBinaryPackingValuesWriterForLong.java b/parquet-column/src/main/java/org/apache/parquet/column/values/delta/DeltaBinaryPackingValuesWriterForLong.java
index 2f26103..b095c10 100644
--- a/parquet-column/src/main/java/org/apache/parquet/column/values/delta/DeltaBinaryPackingValuesWriterForLong.java
+++ b/parquet-column/src/main/java/org/apache/parquet/column/values/delta/DeltaBinaryPackingValuesWriterForLong.java
@@ -20,7 +20,6 @@ package org.apache.parquet.column.values.delta;
 
 import java.io.IOException;
 
-import org.apache.parquet.Preconditions;
 import org.apache.parquet.bytes.ByteBufferAllocator;
 import org.apache.parquet.bytes.BytesInput;
 import org.apache.parquet.bytes.BytesUtils;
diff --git a/parquet-column/src/main/java/org/apache/parquet/column/values/deltastrings/DeltaByteArrayReader.java b/parquet-column/src/main/java/org/apache/parquet/column/values/deltastrings/DeltaByteArrayReader.java
index 8f7bbf9..2798ce3 100644
--- a/parquet-column/src/main/java/org/apache/parquet/column/values/deltastrings/DeltaByteArrayReader.java
+++ b/parquet-column/src/main/java/org/apache/parquet/column/values/deltastrings/DeltaByteArrayReader.java
@@ -19,10 +19,7 @@
 package org.apache.parquet.column.values.deltastrings;
 
 import java.io.IOException;
-import java.nio.ByteBuffer;
-
 import org.apache.parquet.bytes.ByteBufferInputStream;
-import org.apache.parquet.bytes.BytesInput;
 import org.apache.parquet.column.values.RequiresPreviousReader;
 import org.apache.parquet.column.values.ValuesReader;
 import org.apache.parquet.column.values.delta.DeltaBinaryPackingValuesReader;
@@ -90,6 +87,7 @@ public class DeltaByteArrayReader extends ValuesReader implements RequiresPrevio
    * new page we need to recover the previous page's last value to use it (if needed) to
    * read the first value.
    */
+  @Override
   public void setPreviousReader(ValuesReader reader) {
     if (reader != null) {
       this.previous = ((DeltaByteArrayReader) reader).previous;
diff --git a/parquet-column/src/main/java/org/apache/parquet/column/values/deltastrings/DeltaByteArrayWriter.java b/parquet-column/src/main/java/org/apache/parquet/column/values/deltastrings/DeltaByteArrayWriter.java
index be7748f..0d8ab5a 100644
--- a/parquet-column/src/main/java/org/apache/parquet/column/values/deltastrings/DeltaByteArrayWriter.java
+++ b/parquet-column/src/main/java/org/apache/parquet/column/values/deltastrings/DeltaByteArrayWriter.java
@@ -22,7 +22,6 @@ import org.apache.parquet.bytes.ByteBufferAllocator;
 import org.apache.parquet.bytes.BytesInput;
 import org.apache.parquet.column.Encoding;
 import org.apache.parquet.column.values.ValuesWriter;
-import org.apache.parquet.column.values.delta.DeltaBinaryPackingValuesWriter;
 import org.apache.parquet.column.values.delta.DeltaBinaryPackingValuesWriterForInteger;
 import org.apache.parquet.column.values.deltalengthbytearray.DeltaLengthByteArrayValuesWriter;
 import org.apache.parquet.io.api.Binary;
diff --git a/parquet-column/src/main/java/org/apache/parquet/column/values/dictionary/DictionaryValuesReader.java b/parquet-column/src/main/java/org/apache/parquet/column/values/dictionary/DictionaryValuesReader.java
index 489c97c..d0641c7 100644
--- a/parquet-column/src/main/java/org/apache/parquet/column/values/dictionary/DictionaryValuesReader.java
+++ b/parquet-column/src/main/java/org/apache/parquet/column/values/dictionary/DictionaryValuesReader.java
@@ -20,8 +20,6 @@ package org.apache.parquet.column.values.dictionary;
 
 
 import java.io.IOException;
-import java.nio.ByteBuffer;
-
 import org.apache.parquet.bytes.ByteBufferInputStream;
 import org.apache.parquet.bytes.BytesUtils;
 import org.apache.parquet.column.Dictionary;
diff --git a/parquet-column/src/main/java/org/apache/parquet/column/values/dictionary/DictionaryValuesWriter.java b/parquet-column/src/main/java/org/apache/parquet/column/values/dictionary/DictionaryValuesWriter.java
index 5eda9d0..2999f3c 100644
--- a/parquet-column/src/main/java/org/apache/parquet/column/values/dictionary/DictionaryValuesWriter.java
+++ b/parquet-column/src/main/java/org/apache/parquet/column/values/dictionary/DictionaryValuesWriter.java
@@ -98,7 +98,7 @@ public abstract class DictionaryValuesWriter extends ValuesWriter implements Req
   protected ByteBufferAllocator allocator;
   /* Track the list of writers used so they can be appropriately closed when necessary
      (currently used for off-heap memory which is not garbage collected) */
-  private List<RunLengthBitPackingHybridEncoder> encoders = new ArrayList<RunLengthBitPackingHybridEncoder>();
+  private List<RunLengthBitPackingHybridEncoder> encoders = new ArrayList<>();
 
   protected DictionaryValuesWriter(int maxDictionaryByteSize, Encoding encodingForDataPage, Encoding encodingForDictionaryPage, ByteBufferAllocator allocator) {
     this.allocator = allocator;
@@ -235,7 +235,7 @@ public abstract class DictionaryValuesWriter extends ValuesWriter implements Req
   public static class PlainBinaryDictionaryValuesWriter extends DictionaryValuesWriter {
 
     /* type specific dictionary content */
-    protected Object2IntMap<Binary> binaryDictionaryContent = new Object2IntLinkedOpenHashMap<Binary>();
+    protected Object2IntMap<Binary> binaryDictionaryContent = new Object2IntLinkedOpenHashMap<>();
 
     public PlainBinaryDictionaryValuesWriter(int maxDictionaryByteSize, Encoding encodingForDataPage, Encoding encodingForDictionaryPage, ByteBufferAllocator allocator) {
       super(maxDictionaryByteSize, encodingForDataPage, encodingForDictionaryPage, allocator);
diff --git a/parquet-column/src/main/java/org/apache/parquet/column/values/dictionary/IntList.java b/parquet-column/src/main/java/org/apache/parquet/column/values/dictionary/IntList.java
index 5735ca5..c36fe2a 100644
--- a/parquet-column/src/main/java/org/apache/parquet/column/values/dictionary/IntList.java
+++ b/parquet-column/src/main/java/org/apache/parquet/column/values/dictionary/IntList.java
@@ -92,7 +92,7 @@ public class IntList {
     }
   }
 
-  private List<int[]> slabs = new ArrayList<int[]>();
+  private List<int[]> slabs = new ArrayList<>();
 
   // Lazy initialize currentSlab only when needed to save on memory in cases where items might
   // not be added
diff --git a/parquet-column/src/main/java/org/apache/parquet/column/values/fallback/FallbackValuesWriter.java b/parquet-column/src/main/java/org/apache/parquet/column/values/fallback/FallbackValuesWriter.java
index 19fed7d..cf5dbcf 100644
--- a/parquet-column/src/main/java/org/apache/parquet/column/values/fallback/FallbackValuesWriter.java
+++ b/parquet-column/src/main/java/org/apache/parquet/column/values/fallback/FallbackValuesWriter.java
@@ -28,7 +28,7 @@ import org.apache.parquet.io.api.Binary;
 public class FallbackValuesWriter<I extends ValuesWriter & RequiresFallback, F extends ValuesWriter> extends ValuesWriter {
 
   public static <I extends ValuesWriter & RequiresFallback, F extends ValuesWriter> FallbackValuesWriter<I, F> of(I initialWriter, F fallBackWriter) {
-    return new FallbackValuesWriter<I, F>(initialWriter, fallBackWriter);
+    return new FallbackValuesWriter<>(initialWriter, fallBackWriter);
   }
 
   /** writer to start with */
@@ -103,6 +103,7 @@ public class FallbackValuesWriter<I extends ValuesWriter & RequiresFallback, F e
     fallBackWriter.close();
   }
 
+  @Override
   public DictionaryPage toDictPageAndClose() {
     if (initialUsedAndHadDictionary) {
       return initialWriter.toDictPageAndClose();
@@ -111,6 +112,7 @@ public class FallbackValuesWriter<I extends ValuesWriter & RequiresFallback, F e
     }
   }
 
+  @Override
   public void resetDictionary() {
     if (initialUsedAndHadDictionary) {
       initialWriter.resetDictionary();
@@ -156,12 +158,14 @@ public class FallbackValuesWriter<I extends ValuesWriter & RequiresFallback, F e
 
   // passthrough writing the value
 
+  @Override
   public void writeByte(int value) {
     rawDataByteSize += 1;
     currentWriter.writeByte(value);
     checkFallback();
   }
 
+  @Override
   public void writeBytes(Binary v) {
     //for rawdata, length(4 bytes int) is stored, followed by the binary content itself
     rawDataByteSize += v.length() + 4;
@@ -169,24 +173,28 @@ public class FallbackValuesWriter<I extends ValuesWriter & RequiresFallback, F e
     checkFallback();
   }
 
+  @Override
   public void writeInteger(int v) {
     rawDataByteSize += 4;
     currentWriter.writeInteger(v);
     checkFallback();
   }
 
+  @Override
   public void writeLong(long v) {
     rawDataByteSize += 8;
     currentWriter.writeLong(v);
     checkFallback();
   }
 
+  @Override
   public void writeFloat(float v) {
     rawDataByteSize += 4;
     currentWriter.writeFloat(v);
     checkFallback();
   }
 
+  @Override
   public void writeDouble(double v) {
     rawDataByteSize += 8;
     currentWriter.writeDouble(v);
diff --git a/parquet-column/src/main/java/org/apache/parquet/column/values/rle/ZeroIntegerValuesReader.java b/parquet-column/src/main/java/org/apache/parquet/column/values/rle/ZeroIntegerValuesReader.java
index 09ca8a1..1bded77 100644
--- a/parquet-column/src/main/java/org/apache/parquet/column/values/rle/ZeroIntegerValuesReader.java
+++ b/parquet-column/src/main/java/org/apache/parquet/column/values/rle/ZeroIntegerValuesReader.java
@@ -29,6 +29,7 @@ import org.apache.parquet.column.values.ValuesReader;
  */
 public class ZeroIntegerValuesReader extends ValuesReader {
   
+  @Override
   public int readInteger() {
     return 0;
   }
diff --git a/parquet-column/src/main/java/org/apache/parquet/example/DummyRecordConverter.java b/parquet-column/src/main/java/org/apache/parquet/example/DummyRecordConverter.java
index c4a20c7..77244c3 100644
--- a/parquet-column/src/main/java/org/apache/parquet/example/DummyRecordConverter.java
+++ b/parquet-column/src/main/java/org/apache/parquet/example/DummyRecordConverter.java
@@ -76,14 +76,17 @@ public final class DummyRecordConverter extends RecordMaterializer<Object> {
       public Converter convertGroupType(List<GroupType> path, GroupType groupType, final List<Converter> converters) {
         return new GroupConverter() {
 
+          @Override
           public Converter getConverter(int fieldIndex) {
             return converters.get(fieldIndex);
           }
 
+          @Override
           public void start() {
             a = "start()";
           }
 
+          @Override
           public void end() {
             a = "end()";
           }
diff --git a/parquet-column/src/main/java/org/apache/parquet/example/data/Group.java b/parquet-column/src/main/java/org/apache/parquet/example/data/Group.java
index 61f6317..8fdfe32 100644
--- a/parquet-column/src/main/java/org/apache/parquet/example/data/Group.java
+++ b/parquet-column/src/main/java/org/apache/parquet/example/data/Group.java
@@ -70,6 +70,7 @@ abstract public class Group extends GroupValueSource {
     return addGroup(getType().getFieldIndex(field));
   }
 
+  @Override
   public Group getGroup(String field, int index) {
     return getGroup(getType().getFieldIndex(field), index);
   }
@@ -94,6 +95,7 @@ abstract public class Group extends GroupValueSource {
 
   abstract public Group addGroup(int fieldIndex);
 
+  @Override
   abstract public Group getGroup(int fieldIndex, int index);
 
   public Group asGroup() {
diff --git a/parquet-column/src/main/java/org/apache/parquet/example/data/simple/SimpleGroup.java b/parquet-column/src/main/java/org/apache/parquet/example/data/simple/SimpleGroup.java
index 2e58edc..1bfe8d3 100644
--- a/parquet-column/src/main/java/org/apache/parquet/example/data/simple/SimpleGroup.java
+++ b/parquet-column/src/main/java/org/apache/parquet/example/data/simple/SimpleGroup.java
@@ -38,7 +38,7 @@ public class SimpleGroup extends Group {
     this.schema = schema;
     this.data = new List[schema.getFields().size()];
     for (int i = 0; i < schema.getFieldCount(); i++) {
-       this.data[i] = new ArrayList<Object>();
+       this.data[i] = new ArrayList<>();
     }
   }
 
diff --git a/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/FilterApi.java b/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/FilterApi.java
index 60529bd..b209fc7 100644
--- a/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/FilterApi.java
+++ b/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/FilterApi.java
@@ -104,7 +104,7 @@ public final class FilterApi {
    * @return an equals predicate for the given column and value
    */
   public static <T extends Comparable<T>, C extends Column<T> & SupportsEqNotEq> Eq<T> eq(C column, T value) {
-    return new Eq<T>(column, value);
+    return new Eq<>(column, value);
   }
 
   /**
@@ -129,7 +129,7 @@ public final class FilterApi {
    * @return a not-equals predicate for the given column and value
    */
   public static <T extends Comparable<T>, C extends Column<T> & SupportsEqNotEq> NotEq<T> notEq(C column, T value) {
-    return new NotEq<T>(column, value);
+    return new NotEq<>(column, value);
   }
 
   /**
@@ -147,7 +147,7 @@ public final class FilterApi {
    * @return a less-than predicate for the given column and value
    */
   public static <T extends Comparable<T>, C extends Column<T> & SupportsLtGt> Lt<T> lt(C column, T value) {
-    return new Lt<T>(column, value);
+    return new Lt<>(column, value);
   }
 
   /**
@@ -165,7 +165,7 @@ public final class FilterApi {
    * @return a less-than-or-equal predicate for the given column and value
    */
   public static <T extends Comparable<T>, C extends Column<T> & SupportsLtGt> LtEq<T> ltEq(C column, T value) {
-    return new LtEq<T>(column, value);
+    return new LtEq<>(column, value);
   }
 
   /**
@@ -183,7 +183,7 @@ public final class FilterApi {
    * @return a greater-than predicate for the given column and value
    */
   public static <T extends Comparable<T>, C extends Column<T> & SupportsLtGt> Gt<T> gt(C column, T value) {
-    return new Gt<T>(column, value);
+    return new Gt<>(column, value);
   }
 
   /**
@@ -201,7 +201,7 @@ public final class FilterApi {
    * @return a greater-than-or-equal predicate for the given column and value
    */
   public static <T extends Comparable<T>, C extends Column<T> & SupportsLtGt> GtEq<T> gtEq(C column, T value) {
-    return new GtEq<T>(column, value);
+    return new GtEq<>(column, value);
   }
 
   /**
@@ -218,7 +218,7 @@ public final class FilterApi {
    */
   public static <T extends Comparable<T>, U extends UserDefinedPredicate<T>>
     UserDefined<T, U> userDefined(Column<T> column, Class<U> clazz) {
-    return new UserDefinedByClass<T, U>(column, clazz);
+    return new UserDefinedByClass<>(column, clazz);
   }
   
   /**
@@ -234,7 +234,7 @@ public final class FilterApi {
    */
   public static <T extends Comparable<T>, U extends UserDefinedPredicate<T> & Serializable>
     UserDefined<T, U> userDefined(Column<T> column, U udp) {
-    return new UserDefinedByInstance<T, U>(column, udp);
+    return new UserDefinedByInstance<>(column, udp);
   }
 
   /**
diff --git a/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/LogicalInverter.java b/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/LogicalInverter.java
index 266bb0c..eb57c7e 100644
--- a/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/LogicalInverter.java
+++ b/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/LogicalInverter.java
@@ -53,32 +53,32 @@ public final class LogicalInverter implements Visitor<FilterPredicate> {
 
   @Override
   public <T extends Comparable<T>> FilterPredicate visit(Eq<T> eq) {
-    return new NotEq<T>(eq.getColumn(), eq.getValue());
+    return new NotEq<>(eq.getColumn(), eq.getValue());
   }
 
   @Override
   public <T extends Comparable<T>> FilterPredicate visit(NotEq<T> notEq) {
-    return new Eq<T>(notEq.getColumn(), notEq.getValue());
+    return new Eq<>(notEq.getColumn(), notEq.getValue());
   }
 
   @Override
   public <T extends Comparable<T>> FilterPredicate visit(Lt<T> lt) {
-    return new GtEq<T>(lt.getColumn(), lt.getValue());
+    return new GtEq<>(lt.getColumn(), lt.getValue());
   }
 
   @Override
   public <T extends Comparable<T>> FilterPredicate visit(LtEq<T> ltEq) {
-    return new Gt<T>(ltEq.getColumn(), ltEq.getValue());
+    return new Gt<>(ltEq.getColumn(), ltEq.getValue());
   }
 
   @Override
   public <T extends Comparable<T>> FilterPredicate visit(Gt<T> gt) {
-    return new LtEq<T>(gt.getColumn(), gt.getValue());
+    return new LtEq<>(gt.getColumn(), gt.getValue());
   }
 
   @Override
   public <T extends Comparable<T>> FilterPredicate visit(GtEq<T> gtEq) {
-    return new Lt<T>(gtEq.getColumn(), gtEq.getValue());
+    return new Lt<>(gtEq.getColumn(), gtEq.getValue());
   }
 
   @Override
@@ -98,7 +98,7 @@ public final class LogicalInverter implements Visitor<FilterPredicate> {
 
   @Override
   public <T extends Comparable<T>,  U extends UserDefinedPredicate<T>> FilterPredicate visit(UserDefined<T, U> udp) {
-    return new LogicalNotUserDefined<T, U>(udp);
+    return new LogicalNotUserDefined<>(udp);
   }
 
   @Override
diff --git a/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/PrimitiveToBoxedClass.java b/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/PrimitiveToBoxedClass.java
index f034f37..0c37920 100644
--- a/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/PrimitiveToBoxedClass.java
+++ b/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/PrimitiveToBoxedClass.java
@@ -28,7 +28,7 @@ import static org.apache.parquet.Preconditions.checkArgument;
  * {@code Class<int>} to {@code Class<Integer>}
  */
 public class PrimitiveToBoxedClass {
-  private static final Map<Class<?>, Class<?>> primitiveToBoxed = new HashMap<Class<?>, Class<?>>();
+  private static final Map<Class<?>, Class<?>> primitiveToBoxed = new HashMap<>();
 
   static {
     primitiveToBoxed.put(boolean.class, Boolean.class);
diff --git a/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/SchemaCompatibilityValidator.java b/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/SchemaCompatibilityValidator.java
index 64477f5..fe8cf98 100644
--- a/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/SchemaCompatibilityValidator.java
+++ b/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/SchemaCompatibilityValidator.java
@@ -38,7 +38,6 @@ import org.apache.parquet.filter2.predicate.Operators.UserDefined;
 import org.apache.parquet.hadoop.metadata.ColumnPath;
 import org.apache.parquet.schema.MessageType;
 
-import static org.apache.parquet.Preconditions.checkArgument;
 import static org.apache.parquet.Preconditions.checkNotNull;
 
 /**
@@ -66,11 +65,11 @@ public class SchemaCompatibilityValidator implements FilterPredicate.Visitor<Voi
   // A map of column name to the type the user supplied for this column.
   // Used to validate that the user did not provide different types for the same
   // column.
-  private final Map<ColumnPath, Class<?>> columnTypesEncountered = new HashMap<ColumnPath, Class<?>>();
+  private final Map<ColumnPath, Class<?>> columnTypesEncountered = new HashMap<>();
 
   // the columns (keyed by path) according to the file's schema. This is the source of truth, and
   // we are validating that what the user provided agrees with these.
-  private final Map<ColumnPath, ColumnDescriptor> columnsAccordingToSchema = new HashMap<ColumnPath, ColumnDescriptor>();
+  private final Map<ColumnPath, ColumnDescriptor> columnsAccordingToSchema = new HashMap<>();
 
   private SchemaCompatibilityValidator(MessageType schema) {
 
diff --git a/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/ValidTypeMap.java b/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/ValidTypeMap.java
index 62c174e..7a3800a 100644
--- a/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/ValidTypeMap.java
+++ b/parquet-column/src/main/java/org/apache/parquet/filter2/predicate/ValidTypeMap.java
@@ -41,21 +41,21 @@ public class ValidTypeMap {
   private ValidTypeMap() { }
 
   // classToParquetType and parquetTypeToClass are used as a bi-directional map
-  private static final Map<Class<?>, Set<PrimitiveTypeName>> classToParquetType = new HashMap<Class<?>, Set<PrimitiveTypeName>>();
-  private static final Map<PrimitiveTypeName, Set<Class<?>>> parquetTypeToClass = new HashMap<PrimitiveTypeName, Set<Class<?>>>();
+  private static final Map<Class<?>, Set<PrimitiveTypeName>> classToParquetType = new HashMap<>();
+  private static final Map<PrimitiveTypeName, Set<Class<?>>> parquetTypeToClass = new HashMap<>();
 
   // set up the mapping in both directions
   private static void add(Class<?> c, PrimitiveTypeName p) {
     Set<PrimitiveTypeName> descriptors = classToParquetType.get(c);
     if (descriptors == null) {
-      descriptors = new HashSet<PrimitiveTypeName>();
+      descriptors = new HashSet<>();
       classToParquetType.put(c, descriptors);
     }
     descriptors.add(p);
 
     Set<Class<?>> classes = parquetTypeToClass.get(p);
     if (classes == null) {
-      classes = new HashSet<Class<?>>();
+      classes = new HashSet<>();
       parquetTypeToClass.put(p, classes);
     }
     classes.add(c);
diff --git a/parquet-column/src/main/java/org/apache/parquet/filter2/recordlevel/FilteringGroupConverter.java b/parquet-column/src/main/java/org/apache/parquet/filter2/recordlevel/FilteringGroupConverter.java
index 87f7cf1..0c3556c 100644
--- a/parquet-column/src/main/java/org/apache/parquet/filter2/recordlevel/FilteringGroupConverter.java
+++ b/parquet-column/src/main/java/org/apache/parquet/filter2/recordlevel/FilteringGroupConverter.java
@@ -73,7 +73,7 @@ public class FilteringGroupConverter extends GroupConverter {
 
     // determine the indexFieldPath for the converter proxy we're about to make, which is
     // this converter's path + the requested fieldIndex
-    List<Integer> newIndexFieldPath = new ArrayList<Integer>(indexFieldPath.size() + 1);
+    List<Integer> newIndexFieldPath = new ArrayList<>(indexFieldPath.size() + 1);
     newIndexFieldPath.addAll(indexFieldPath);
     newIndexFieldPath.add(fieldIndex);
 
diff --git a/parquet-column/src/main/java/org/apache/parquet/filter2/recordlevel/IncrementallyUpdatedFilterPredicateBuilderBase.java b/parquet-column/src/main/java/org/apache/parquet/filter2/recordlevel/IncrementallyUpdatedFilterPredicateBuilderBase.java
index 8707b7e..481ddef 100644
--- a/parquet-column/src/main/java/org/apache/parquet/filter2/recordlevel/IncrementallyUpdatedFilterPredicateBuilderBase.java
+++ b/parquet-column/src/main/java/org/apache/parquet/filter2/recordlevel/IncrementallyUpdatedFilterPredicateBuilderBase.java
@@ -57,7 +57,7 @@ import static org.apache.parquet.Preconditions.checkArgument;
  */
 public abstract class IncrementallyUpdatedFilterPredicateBuilderBase implements Visitor<IncrementallyUpdatedFilterPredicate> {
   private boolean built = false;
-  private final Map<ColumnPath, List<ValueInspector>> valueInspectorsByColumn = new HashMap<ColumnPath, List<ValueInspector>>();
+  private final Map<ColumnPath, List<ValueInspector>> valueInspectorsByColumn = new HashMap<>();
   private final Map<ColumnPath, PrimitiveComparator<?>> comparatorsByColumn = new HashMap<>();
 
   @Deprecated
@@ -82,7 +82,7 @@ public abstract class IncrementallyUpdatedFilterPredicateBuilderBase implements
   protected final void addValueInspector(ColumnPath columnPath, ValueInspector valueInspector) {
     List<ValueInspector> valueInspectors = valueInspectorsByColumn.get(columnPath);
     if (valueInspectors == null) {
-      valueInspectors = new ArrayList<ValueInspector>();
+      valueInspectors = new ArrayList<>();
       valueInspectorsByColumn.put(columnPath, valueInspectors);
     }
     valueInspectors.add(valueInspector);
diff --git a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/BinaryColumnIndexBuilder.java b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/BinaryColumnIndexBuilder.java
index c5aa8a7..012d012 100644
--- a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/BinaryColumnIndexBuilder.java
+++ b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/BinaryColumnIndexBuilder.java
@@ -59,7 +59,7 @@ class BinaryColumnIndexBuilder extends ColumnIndexBuilder {
     @Override
     @SuppressWarnings("unchecked")
     <T extends Comparable<T>> Statistics<T> createStats(int arrayIndex) {
-      return (Statistics<T>) new Statistics<Binary>(minValues[arrayIndex], maxValues[arrayIndex], comparator);
+      return (Statistics<T>) new Statistics<>(minValues[arrayIndex], maxValues[arrayIndex], comparator);
     }
 
     @Override
diff --git a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/BooleanColumnIndexBuilder.java b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/BooleanColumnIndexBuilder.java
index 233bd1b..cacffd7 100644
--- a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/BooleanColumnIndexBuilder.java
+++ b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/BooleanColumnIndexBuilder.java
@@ -59,7 +59,7 @@ class BooleanColumnIndexBuilder extends ColumnIndexBuilder {
     @Override
     @SuppressWarnings("unchecked")
     <T extends Comparable<T>> Statistics<T> createStats(int arrayIndex) {
-      return (Statistics<T>) new Statistics<Boolean>(minValues[arrayIndex], maxValues[arrayIndex], comparator);
+      return (Statistics<T>) new Statistics<>(minValues[arrayIndex], maxValues[arrayIndex], comparator);
     }
 
     @Override
diff --git a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/DoubleColumnIndexBuilder.java b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/DoubleColumnIndexBuilder.java
index 074d025..5a5e7c5 100644
--- a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/DoubleColumnIndexBuilder.java
+++ b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/DoubleColumnIndexBuilder.java
@@ -62,7 +62,7 @@ class DoubleColumnIndexBuilder extends ColumnIndexBuilder {
     @Override
     @SuppressWarnings("unchecked")
     <T extends Comparable<T>> Statistics<T> createStats(int arrayIndex) {
-      return (Statistics<T>) new Statistics<Double>(minValues[arrayIndex], maxValues[arrayIndex], comparator);
+      return (Statistics<T>) new Statistics<>(minValues[arrayIndex], maxValues[arrayIndex], comparator);
     }
 
     @Override
diff --git a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/FloatColumnIndexBuilder.java b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/FloatColumnIndexBuilder.java
index cbcdf94..8bc21cd 100644
--- a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/FloatColumnIndexBuilder.java
+++ b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/FloatColumnIndexBuilder.java
@@ -62,7 +62,7 @@ class FloatColumnIndexBuilder extends ColumnIndexBuilder {
     @Override
     @SuppressWarnings("unchecked")
     <T extends Comparable<T>> Statistics<T> createStats(int arrayIndex) {
-      return (Statistics<T>) new Statistics<Float>(minValues[arrayIndex], maxValues[arrayIndex], comparator);
+      return (Statistics<T>) new Statistics<>(minValues[arrayIndex], maxValues[arrayIndex], comparator);
     }
 
     @Override
diff --git a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/IntColumnIndexBuilder.java b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/IntColumnIndexBuilder.java
index 2d19d27..9e4621c 100644
--- a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/IntColumnIndexBuilder.java
+++ b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/IntColumnIndexBuilder.java
@@ -62,7 +62,7 @@ class IntColumnIndexBuilder extends ColumnIndexBuilder {
     @Override
     @SuppressWarnings("unchecked")
     <T extends Comparable<T>> Statistics<T> createStats(int arrayIndex) {
-      return (Statistics<T>) new Statistics<Integer>(minValues[arrayIndex], maxValues[arrayIndex], comparator);
+      return (Statistics<T>) new Statistics<>(minValues[arrayIndex], maxValues[arrayIndex], comparator);
     }
 
     @Override
diff --git a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/LongColumnIndexBuilder.java b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/LongColumnIndexBuilder.java
index b0189b7..01b4e6e 100644
--- a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/LongColumnIndexBuilder.java
+++ b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/LongColumnIndexBuilder.java
@@ -62,7 +62,7 @@ class LongColumnIndexBuilder extends ColumnIndexBuilder {
     @Override
     @SuppressWarnings("unchecked")
     <T extends Comparable<T>> Statistics<T> createStats(int arrayIndex) {
-      return (Statistics<T>) new Statistics<Long>(minValues[arrayIndex], maxValues[arrayIndex], comparator);
+      return (Statistics<T>) new Statistics<>(minValues[arrayIndex], maxValues[arrayIndex], comparator);
     }
 
     @Override
diff --git a/parquet-column/src/main/java/org/apache/parquet/io/ColumnIOFactory.java b/parquet-column/src/main/java/org/apache/parquet/io/ColumnIOFactory.java
index dcf1e87..3257138 100644
--- a/parquet-column/src/main/java/org/apache/parquet/io/ColumnIOFactory.java
+++ b/parquet-column/src/main/java/org/apache/parquet/io/ColumnIOFactory.java
@@ -36,7 +36,7 @@ public class ColumnIOFactory {
 
     private MessageColumnIO columnIO;
     private GroupColumnIO current;
-    private List<PrimitiveColumnIO> leaves = new ArrayList<PrimitiveColumnIO>();
+    private List<PrimitiveColumnIO> leaves = new ArrayList<>();
     private final boolean validating;
     private final MessageType requestedSchema;
     private final String createdBy;
diff --git a/parquet-column/src/main/java/org/apache/parquet/io/GroupColumnIO.java b/parquet-column/src/main/java/org/apache/parquet/io/GroupColumnIO.java
index 8e7cb80..32e4c00 100644
--- a/parquet-column/src/main/java/org/apache/parquet/io/GroupColumnIO.java
+++ b/parquet-column/src/main/java/org/apache/parquet/io/GroupColumnIO.java
@@ -37,8 +37,8 @@ import org.slf4j.LoggerFactory;
 public class GroupColumnIO extends ColumnIO {
   private static final Logger LOG = LoggerFactory.getLogger(GroupColumnIO.class);
 
-  private final Map<String, ColumnIO> childrenByName = new HashMap<String, ColumnIO>();
-  private final List<ColumnIO> children = new ArrayList<ColumnIO>();
+  private final Map<String, ColumnIO> childrenByName = new HashMap<>();
+  private final List<ColumnIO> children = new ArrayList<>();
   private int childrenSize = 0;
 
   GroupColumnIO(GroupType groupType, GroupColumnIO parent, int index) {
@@ -61,12 +61,12 @@ public class GroupColumnIO extends ColumnIO {
       newIndexFieldPath[indexFieldPath.length] = child.getIndex();
       List<ColumnIO> newRepetition;
       if (child.getType().isRepetition(REPEATED)) {
-        newRepetition = new ArrayList<ColumnIO>(repetition);
+        newRepetition = new ArrayList<>(repetition);
         newRepetition.add(child);
       } else {
         newRepetition = repetition;
       }
-      List<ColumnIO> newPath = new ArrayList<ColumnIO>(path);
+      List<ColumnIO> newPath = new ArrayList<>(path);
       newPath.add(child);
       child.setLevels(
           // the type repetition level increases whenever there's a possible repetition
@@ -84,17 +84,19 @@ public class GroupColumnIO extends ColumnIO {
 
   @Override
   List<String[]> getColumnNames() {
-    ArrayList<String[]> result = new ArrayList<String[]>();
+    ArrayList<String[]> result = new ArrayList<>();
     for (ColumnIO c : children) {
       result.addAll(c.getColumnNames());
     }
     return result;
   }
 
+  @Override
   PrimitiveColumnIO getLast() {
     return children.get(children.size()-1).getLast();
   }
 
+  @Override
   PrimitiveColumnIO getFirst() {
     return children.get(0).getFirst();
   }
diff --git a/parquet-column/src/main/java/org/apache/parquet/io/MessageColumnIO.java b/parquet-column/src/main/java/org/apache/parquet/io/MessageColumnIO.java
index 8fc4f91..15d79c3 100644
--- a/parquet-column/src/main/java/org/apache/parquet/io/MessageColumnIO.java
+++ b/parquet-column/src/main/java/org/apache/parquet/io/MessageColumnIO.java
@@ -71,6 +71,7 @@ public class MessageColumnIO extends GroupColumnIO {
     this.createdBy = createdBy;
   }
 
+  @Override
   public List<String[]> getColumnNames() {
     return super.getColumnNames();
   }
@@ -103,7 +104,7 @@ public class MessageColumnIO extends GroupColumnIO {
     checkNotNull(filter, "filter");
 
     if (leaves.isEmpty()) {
-      return new EmptyRecordReader<T>(recordMaterializer);
+      return new EmptyRecordReader<>(recordMaterializer);
     }
 
     return filter.accept(new Visitor<RecordReader<T>>() {
@@ -119,7 +120,7 @@ public class MessageColumnIO extends GroupColumnIO {
             builder.getValueInspectorsByColumn(),
             streamingPredicate);
 
-        return new RecordReaderImplementation<T>(
+        return new RecordReaderImplementation<>(
             MessageColumnIO.this,
             filteringRecordMaterializer,
             validating,
@@ -128,7 +129,7 @@ public class MessageColumnIO extends GroupColumnIO {
 
       @Override
       public RecordReader<T> visit(UnboundRecordFilterCompat unboundRecordFilterCompat) {
-        return new FilteredRecordReader<T>(
+        return new FilteredRecordReader<>(
             MessageColumnIO.this,
             recordMaterializer,
             validating,
@@ -140,7 +141,7 @@ public class MessageColumnIO extends GroupColumnIO {
 
       @Override
       public RecordReader<T> visit(NoOpFilter noOpFilter) {
-        return new RecordReaderImplementation<T>(
+        return new RecordReaderImplementation<>(
             MessageColumnIO.this,
             recordMaterializer,
             validating,
@@ -217,14 +218,14 @@ public class MessageColumnIO extends GroupColumnIO {
      * Maintain a map of groups and all the leaf nodes underneath it. It's used to optimize writing null for a group node.
      * Instead of using recursion calls, all the leaves can be called directly without traversing the sub tree of the group node
      */
-    private Map<GroupColumnIO, List<ColumnWriter>> groupToLeafWriter = new HashMap<GroupColumnIO, List<ColumnWriter>>();
+    private Map<GroupColumnIO, List<ColumnWriter>> groupToLeafWriter = new HashMap<>();
 
 
     /*
      * Cache nulls for each group node. It only stores the repetition level, since the definition level
      * should always be the definition level of the group node.
      */
-    private Map<GroupColumnIO, IntArrayList> groupNullCache = new HashMap<GroupColumnIO, IntArrayList>();
+    private Map<GroupColumnIO, IntArrayList> groupNullCache = new HashMap<>();
     private final ColumnWriteStore columns;
     private boolean emptyField = true;
 
@@ -239,7 +240,7 @@ public class MessageColumnIO extends GroupColumnIO {
     private List<ColumnWriter> getLeafWriters(GroupColumnIO group) {
       List<ColumnWriter> writers = groupToLeafWriter.get(group);
       if (writers == null) {
-        writers = new ArrayList<ColumnWriter>();
+        writers = new ArrayList<>();
         groupToLeafWriter.put(group, writers);
       }
       return writers;
diff --git a/parquet-column/src/main/java/org/apache/parquet/io/RecordReaderImplementation.java b/parquet-column/src/main/java/org/apache/parquet/io/RecordReaderImplementation.java
index 9bca6e8..4ba09f2 100644
--- a/parquet-column/src/main/java/org/apache/parquet/io/RecordReaderImplementation.java
+++ b/parquet-column/src/main/java/org/apache/parquet/io/RecordReaderImplementation.java
@@ -107,7 +107,7 @@ class RecordReaderImplementation<T> extends RecordReader<T> {
         return equals((Case)obj);
       }
       return false;
-    };
+    }
 
     // see comment for hashCode above
 //    public boolean equals(Case other) {
@@ -334,8 +334,8 @@ class RecordReaderImplementation<T> extends RecordReader<T> {
     }
     for (int i = 0; i < states.length; i++) {
       State state = states[i];
-      final Map<Case, Case> definedCases = new HashMap<Case, Case>();
-      final Map<Case, Case> undefinedCases = new HashMap<Case, Case>();
+      final Map<Case, Case> definedCases = new HashMap<>();
+      final Map<Case, Case> undefinedCases = new HashMap<>();
       Case[][][] caseLookup = new Case[state.fieldPath.length][][];
       for (int currentLevel = 0; currentLevel < state.fieldPath.length; ++ currentLevel) {
         caseLookup[currentLevel] = new Case[state.maxDefinitionLevel+1][];
@@ -358,8 +358,8 @@ class RecordReaderImplementation<T> extends RecordReader<T> {
         }
       }
       state.caseLookup = caseLookup;
-      state.definedCases = new ArrayList<Case>(definedCases.values());
-      state.undefinedCases = new ArrayList<Case>(undefinedCases.values());
+      state.definedCases = new ArrayList<>(definedCases.values());
+      state.undefinedCases = new ArrayList<>(undefinedCases.values());
       Comparator<Case> caseComparator = new Comparator<Case>() {
         @Override
         public int compare(Case o1, Case o2) {
diff --git a/parquet-column/src/main/java/org/apache/parquet/io/ValidatingRecordConsumer.java b/parquet-column/src/main/java/org/apache/parquet/io/ValidatingRecordConsumer.java
index e382a40..0e2a5ae 100644
--- a/parquet-column/src/main/java/org/apache/parquet/io/ValidatingRecordConsumer.java
+++ b/parquet-column/src/main/java/org/apache/parquet/io/ValidatingRecordConsumer.java
@@ -42,10 +42,10 @@ public class ValidatingRecordConsumer extends RecordConsumer {
 
   private final RecordConsumer delegate;
 
-  private Deque<Type> types = new ArrayDeque<Type>();
-  private Deque<Integer> fields = new ArrayDeque<Integer>();
-  private Deque<Integer> previousField = new ArrayDeque<Integer>();
-  private Deque<Integer> fieldValueCount = new ArrayDeque<Integer>();
+  private Deque<Type> types = new ArrayDeque<>();
+  private Deque<Integer> fields = new ArrayDeque<>();
+  private Deque<Integer> previousField = new ArrayDeque<>();
+  private Deque<Integer> fieldValueCount = new ArrayDeque<>();
 
   /**
    *
@@ -60,6 +60,7 @@ public class ValidatingRecordConsumer extends RecordConsumer {
   /**
    * {@inheritDoc}
    */
+  @Override
   public void startMessage() {
     previousField.push(-1);
     delegate.startMessage();
@@ -68,6 +69,7 @@ public class ValidatingRecordConsumer extends RecordConsumer {
   /**
    * {@inheritDoc}
    */
+  @Override
   public void endMessage() {
     delegate.endMessage();
     validateMissingFields(types.peek().asGroupType().getFieldCount());
@@ -77,6 +79,7 @@ public class ValidatingRecordConsumer extends RecordConsumer {
   /**
    * {@inheritDoc}
    */
+  @Override
   public void startField(String field, int index) {
     if (index <= previousField.peek()) {
       throw new InvalidRecordException("fields must be added in order " + field + " index " + index + " is before previous field " + previousField.peek());
@@ -99,6 +102,7 @@ public class ValidatingRecordConsumer extends RecordConsumer {
   /**
    * {@inheritDoc}
    */
+  @Override
   public void endField(String field, int index) {
     delegate.endField(field, index);
     fieldValueCount.pop();
@@ -108,6 +112,7 @@ public class ValidatingRecordConsumer extends RecordConsumer {
   /**
    * {@inheritDoc}
    */
+  @Override
   public void startGroup() {
     previousField.push(-1);
     types.push(types.peek().asGroupType().getType(fields.peek()));
@@ -117,6 +122,7 @@ public class ValidatingRecordConsumer extends RecordConsumer {
   /**
    * {@inheritDoc}
    */
+  @Override
   public void endGroup() {
     delegate.endGroup();
     validateMissingFields(types.peek().asGroupType().getFieldCount());
@@ -187,6 +193,7 @@ public class ValidatingRecordConsumer extends RecordConsumer {
   /**
    * {@inheritDoc}
    */
+  @Override
   public void addInteger(int value) {
     validate(INT32);
     delegate.addInteger(value);
@@ -195,6 +202,7 @@ public class ValidatingRecordConsumer extends RecordConsumer {
   /**
    * {@inheritDoc}
    */
+  @Override
   public void addLong(long value) {
     validate(INT64);
     delegate.addLong(value);
@@ -203,6 +211,7 @@ public class ValidatingRecordConsumer extends RecordConsumer {
   /**
    * {@inheritDoc}
    */
+  @Override
   public void addBoolean(boolean value) {
     validate(BOOLEAN);
     delegate.addBoolean(value);
@@ -211,6 +220,7 @@ public class ValidatingRecordConsumer extends RecordConsumer {
   /**
    * {@inheritDoc}
    */
+  @Override
   public void addBinary(Binary value) {
     validate(BINARY, INT96, FIXED_LEN_BYTE_ARRAY);
     delegate.addBinary(value);
@@ -219,6 +229,7 @@ public class ValidatingRecordConsumer extends RecordConsumer {
   /**
    * {@inheritDoc}
    */
+  @Override
   public void addFloat(float value) {
     validate(FLOAT);
     delegate.addFloat(value);
@@ -227,6 +238,7 @@ public class ValidatingRecordConsumer extends RecordConsumer {
   /**
    * {@inheritDoc}
    */
+  @Override
   public void addDouble(double value) {
     validate(DOUBLE);
     delegate.addDouble(value);
diff --git a/parquet-column/src/main/java/org/apache/parquet/io/api/Binary.java b/parquet-column/src/main/java/org/apache/parquet/io/api/Binary.java
index a6f0145..8afc8f2 100644
--- a/parquet-column/src/main/java/org/apache/parquet/io/api/Binary.java
+++ b/parquet-column/src/main/java/org/apache/parquet/io/api/Binary.java
@@ -73,6 +73,7 @@ abstract public class Binary implements Comparable<Binary>, Serializable {
    * might not be correct. The {@link java.util.Comparator} implementation for the related type available at
    * {@link org.apache.parquet.schema.PrimitiveType#comparator} should be used instead.
    */
+  @Override
   @Deprecated
   abstract public int compareTo(Binary other);
 
diff --git a/parquet-column/src/main/java/org/apache/parquet/schema/GroupType.java b/parquet-column/src/main/java/org/apache/parquet/schema/GroupType.java
index 897fdf8..b084b5f 100644
--- a/parquet-column/src/main/java/org/apache/parquet/schema/GroupType.java
+++ b/parquet-column/src/main/java/org/apache/parquet/schema/GroupType.java
@@ -108,7 +108,7 @@ public class GroupType extends Type {
   GroupType(Repetition repetition, String name, OriginalType originalType, List<Type> fields, ID id) {
     super(name, repetition, originalType, id);
     this.fields = fields;
-    this.indexByName = new HashMap<String, Integer>();
+    this.indexByName = new HashMap<>();
     for (int i = 0; i < fields.size(); i++) {
       indexByName.put(fields.get(i).getName(), i);
     }
@@ -117,7 +117,7 @@ public class GroupType extends Type {
   GroupType(Repetition repetition, String name, LogicalTypeAnnotation logicalTypeAnnotation, List<Type> fields, ID id) {
     super(name, repetition, logicalTypeAnnotation, id);
     this.fields = fields;
-    this.indexByName = new HashMap<String, Integer>();
+    this.indexByName = new HashMap<>();
     for (int i = 0; i < fields.size(); i++) {
       indexByName.put(fields.get(i).getName(), i);
     }
@@ -322,7 +322,7 @@ public class GroupType extends Type {
 
   @Override
   protected List<String[]> getPaths(int depth) {
-    List<String[]> result = new ArrayList<String[]>();
+    List<String[]> result = new ArrayList<>();
     for (Type field : fields) {
       List<String[]> paths = field.getPaths(depth + 1);
       for (String[] path : paths) {
@@ -352,14 +352,14 @@ public class GroupType extends Type {
 
   @Override
   <T> T convert(List<GroupType> path, TypeConverter<T> converter) {
-    List<GroupType> childrenPath = new ArrayList<GroupType>(path);
+    List<GroupType> childrenPath = new ArrayList<>(path);
     childrenPath.add(this);
     final List<T> children = convertChildren(childrenPath, converter);
     return converter.convertGroupType(path, this, children);
   }
 
   protected <T> List<T> convertChildren(List<GroupType> path, TypeConverter<T> converter) {
-    List<T> children = new ArrayList<T>(fields.size());
+    List<T> children = new ArrayList<>(fields.size());
     for (Type field : fields) {
       children.add(field.convert(path, converter));
     }
@@ -395,7 +395,7 @@ public class GroupType extends Type {
    * @return the merged list
    */
   List<Type> mergeFields(GroupType toMerge, boolean strict) {
-    List<Type> newFields = new ArrayList<Type>();
+    List<Type> newFields = new ArrayList<>();
     // merge existing fields
     for (Type type : this.getFields()) {
       Type merged;
diff --git a/parquet-column/src/main/java/org/apache/parquet/schema/MessageType.java b/parquet-column/src/main/java/org/apache/parquet/schema/MessageType.java
index 83f98d7..af5650e 100644
--- a/parquet-column/src/main/java/org/apache/parquet/schema/MessageType.java
+++ b/parquet-column/src/main/java/org/apache/parquet/schema/MessageType.java
@@ -103,7 +103,7 @@ public final class MessageType extends GroupType {
 
   public List<ColumnDescriptor> getColumns() {
     List<String[]> paths = this.getPaths(0);
-    List<ColumnDescriptor> columns = new ArrayList<ColumnDescriptor>(paths.size());
+    List<ColumnDescriptor> columns = new ArrayList<>(paths.size());
     for (String[] path : paths) {
       // TODO: optimize this
       PrimitiveType primitiveType = getType(path).asPrimitiveType();
@@ -125,7 +125,7 @@ public final class MessageType extends GroupType {
   }
 
   public <T> T convertWith(TypeConverter<T> converter) {
-    final ArrayList<GroupType> path = new ArrayList<GroupType>();
+    final ArrayList<GroupType> path = new ArrayList<>();
     path.add(this);
     return converter.convertMessageType(this, convertChildren(path, converter));
   }
diff --git a/parquet-column/src/main/java/org/apache/parquet/schema/PrimitiveType.java b/parquet-column/src/main/java/org/apache/parquet/schema/PrimitiveType.java
index b59fdec..21502d8 100644
--- a/parquet-column/src/main/java/org/apache/parquet/schema/PrimitiveType.java
+++ b/parquet-column/src/main/java/org/apache/parquet/schema/PrimitiveType.java
@@ -35,7 +35,6 @@ import org.apache.parquet.schema.ColumnOrder.ColumnOrderName;
 
 import static java.util.Optional.empty;
 import static java.util.Optional.of;
-import static org.apache.parquet.schema.LogicalTypeAnnotation.TimeUnit.MICROS;
 import static org.apache.parquet.schema.LogicalTypeAnnotation.TimeUnit.MILLIS;
 
 
diff --git a/parquet-column/src/main/java/org/apache/parquet/schema/Type.java b/parquet-column/src/main/java/org/apache/parquet/schema/Type.java
index dd13ec1..0b6d905 100644
--- a/parquet-column/src/main/java/org/apache/parquet/schema/Type.java
+++ b/parquet-column/src/main/java/org/apache/parquet/schema/Type.java
@@ -20,7 +20,6 @@ package org.apache.parquet.schema;
 
 import static org.apache.parquet.Preconditions.checkNotNull;
 
-import java.util.Arrays;
 import java.util.List;
 
 import org.apache.parquet.io.InvalidRecordException;
@@ -302,7 +301,7 @@ abstract public class Type {
         && eqOrBothNull(repetition, other.repetition)
         && eqOrBothNull(id, other.id)
         && eqOrBothNull(logicalTypeAnnotation, other.logicalTypeAnnotation);
-  };
+  }
 
   @Override
   public boolean equals(Object other) {
diff --git a/parquet-column/src/main/java/org/apache/parquet/schema/Types.java b/parquet-column/src/main/java/org/apache/parquet/schema/Types.java
index 456bf14..28773ae 100644
--- a/parquet-column/src/main/java/org/apache/parquet/schema/Types.java
+++ b/parquet-column/src/main/java/org/apache/parquet/schema/Types.java
@@ -646,12 +646,12 @@ public class Types {
 
     private BaseGroupBuilder(P parent) {
       super(parent);
-      this.fields = new ArrayList<Type>();
+      this.fields = new ArrayList<>();
     }
 
     private BaseGroupBuilder(Class<P> returnType) {
       super(returnType);
-      this.fields = new ArrayList<Type>();
+      this.fields = new ArrayList<>();
     }
 
     @Override
@@ -659,7 +659,7 @@ public class Types {
 
     public PrimitiveBuilder<THIS> primitive(
         PrimitiveTypeName type, Type.Repetition repetition) {
-      return new PrimitiveBuilder<THIS> (self(), type)
+      return new PrimitiveBuilder<> (self(), type)
           .repetition(repetition);
     }
 
@@ -673,7 +673,7 @@ public class Types {
      */
     public PrimitiveBuilder<THIS> required(
         PrimitiveTypeName type) {
-      return new PrimitiveBuilder<THIS>(self(), type)
+      return new PrimitiveBuilder<>(self(), type)
           .repetition(Type.Repetition.REQUIRED);
     }
 
@@ -687,7 +687,7 @@ public class Types {
      */
     public PrimitiveBuilder<THIS> optional(
         PrimitiveTypeName type) {
-      return new PrimitiveBuilder<THIS>(self(), type)
+      return new PrimitiveBuilder<>(self(), type)
           .repetition(Type.Repetition.OPTIONAL);
     }
 
@@ -701,12 +701,12 @@ public class Types {
      */
     public PrimitiveBuilder<THIS> repeated(
         PrimitiveTypeName type) {
-      return new PrimitiveBuilder<THIS>(self(), type)
+      return new PrimitiveBuilder<>(self(), type)
           .repetition(Type.Repetition.REPEATED);
     }
 
     public GroupBuilder<THIS> group(Type.Repetition repetition) {
-      return new GroupBuilder<THIS>(self())
+      return new GroupBuilder<>(self())
           .repetition(repetition);
     }
 
@@ -717,7 +717,7 @@ public class Types {
      *          fields.
      */
     public GroupBuilder<THIS> requiredGroup() {
-      return new GroupBuilder<THIS>(self())
+      return new GroupBuilder<>(self())
           .repetition(Type.Repetition.REQUIRED);
     }
 
@@ -728,7 +728,7 @@ public class Types {
      *          fields.
      */
     public GroupBuilder<THIS> optionalGroup() {
-      return new GroupBuilder<THIS>(self())
+      return new GroupBuilder<>(self())
           .repetition(Type.Repetition.OPTIONAL);
     }
 
@@ -739,7 +739,7 @@ public class Types {
      *          fields.
      */
     public GroupBuilder<THIS> repeatedGroup() {
-      return new GroupBuilder<THIS>(self())
+      return new GroupBuilder<>(self())
           .repetition(Type.Repetition.REPEATED);
     }
 
@@ -776,21 +776,21 @@ public class Types {
 
     public MapBuilder<THIS> map(
         Type.Repetition repetition) {
-      return new MapBuilder<THIS>(self()).repetition(repetition);
+      return new MapBuilder<>(self()).repetition(repetition);
     }
 
     public MapBuilder<THIS> requiredMap() {
-      return new MapBuilder<THIS>(self())
+      return new MapBuilder<>(self())
           .repetition(Type.Repetition.REQUIRED);
     }
 
     public MapBuilder<THIS> optionalMap() {
-      return new MapBuilder<THIS>(self())
+      return new MapBuilder<>(self())
           .repetition(Type.Repetition.OPTIONAL);
     }
 
     public ListBuilder<THIS> list(Type.Repetition repetition) {
-      return new ListBuilder<THIS>(self()).repetition(repetition);
+      return new ListBuilder<>(self()).repetition(repetition);
     }
 
     public ListBuilder<THIS> requiredList() {
@@ -842,7 +842,7 @@ public class Types {
       public ValueBuilder<MP, M> value(PrimitiveTypeName type,
                                        Type.Repetition repetition) {
         mapBuilder.setKeyType(build("key"));
-        return new ValueBuilder<MP, M>(mapBuilder, type).repetition(repetition);
+        return new ValueBuilder<>(mapBuilder, type).repetition(repetition);
       }
 
       public ValueBuilder<MP, M> requiredValue(PrimitiveTypeName type) {
@@ -855,7 +855,7 @@ public class Types {
 
       public GroupValueBuilder<MP, M> groupValue(Type.Repetition repetition) {
         mapBuilder.setKeyType(build("key"));
-        return new GroupValueBuilder<MP, M>(mapBuilder).repetition(repetition);
+        return new GroupValueBuilder<>(mapBuilder).repetition(repetition);
       }
 
       public GroupValueBuilder<MP, M> requiredGroupValue() {
@@ -868,7 +868,7 @@ public class Types {
 
       public MapValueBuilder<MP, M> mapValue(Type.Repetition repetition) {
         mapBuilder.setKeyType(build("key"));
-        return new MapValueBuilder<MP, M>(mapBuilder).repetition(repetition);
+        return new MapValueBuilder<>(mapBuilder).repetition(repetition);
       }
 
       public MapValueBuilder<MP, M> requiredMapValue() {
@@ -881,7 +881,7 @@ public class Types {
 
       public ListValueBuilder<MP, M> listValue(Type.Repetition repetition) {
         mapBuilder.setKeyType(build("key"));
-        return new ListValueBuilder<MP, M>(mapBuilder).repetition(repetition);
+        return new ListValueBuilder<>(mapBuilder).repetition(repetition);
       }
 
       public ListValueBuilder<MP, M> requiredListValue() {
@@ -919,6 +919,7 @@ public class Types {
         this.mapBuilder = mapBuilder;
       }
 
+      @Override
       public MP named(String name) {
         mapBuilder.setValueType(build("value"));
         return mapBuilder.named(name);
@@ -948,7 +949,7 @@ public class Types {
       public ValueBuilder<MP, M> value(PrimitiveTypeName type,
                                        Type.Repetition repetition) {
         mapBuilder.setKeyType(build("key"));
-        return new ValueBuilder<MP, M>(mapBuilder, type).repetition(repetition);
+        return new ValueBuilder<>(mapBuilder, type).repetition(repetition);
       }
 
       public ValueBuilder<MP, M> requiredValue(PrimitiveTypeName type) {
@@ -961,7 +962,7 @@ public class Types {
 
       public GroupValueBuilder<MP, M> groupValue(Type.Repetition repetition) {
         mapBuilder.setKeyType(build("key"));
-        return new GroupValueBuilder<MP, M>(mapBuilder).repetition(repetition);
+        return new GroupValueBuilder<>(mapBuilder).repetition(repetition);
       }
 
       public GroupValueBuilder<MP, M> requiredGroupValue() {
@@ -974,7 +975,7 @@ public class Types {
 
       public MapValueBuilder<MP, M> mapValue(Type.Repetition repetition) {
         mapBuilder.setKeyType(build("key"));
-        return new MapValueBuilder<MP, M>(mapBuilder).repetition(repetition);
+        return new MapValueBuilder<>(mapBuilder).repetition(repetition);
       }
 
       public MapValueBuilder<MP, M> requiredMapValue() {
@@ -987,7 +988,7 @@ public class Types {
 
       public ListValueBuilder<MP, M> listValue(Type.Repetition repetition) {
         mapBuilder.setKeyType(build("key"));
-        return new ListValueBuilder<MP, M>(mapBuilder).repetition(repetition);
+        return new ListValueBuilder<>(mapBuilder).repetition(repetition);
       }
 
       public ListValueBuilder<MP, M> requiredListValue() {
@@ -1020,6 +1021,7 @@ public class Types {
         this.mapBuilder = mapBuilder;
       }
 
+      @Override
       public MP named(String name) {
         mapBuilder.setValueType(build("value"));
         return mapBuilder.named(name);
@@ -1040,6 +1042,7 @@ public class Types {
         this.mapBuilder = mapBuilder;
       }
 
+      @Override
       public MP named(String name) {
         mapBuilder.setValueType(build("value"));
         return mapBuilder.named(name);
@@ -1060,6 +1063,7 @@ public class Types {
         this.mapBuilder = mapBuilder;
       }
 
+      @Override
       public MP named(String name) {
         mapBuilder.setValueType(build("value"));
         return mapBuilder.named(name);
@@ -1098,7 +1102,7 @@ public class Types {
     protected abstract THIS self();
 
     public KeyBuilder<P, THIS> key(PrimitiveTypeName type) {
-      return new KeyBuilder<P, THIS>(self(), type);
+      return new KeyBuilder<>(self(), type);
     }
 
     public THIS key(Type type) {
@@ -1107,12 +1111,12 @@ public class Types {
     }
 
     public GroupKeyBuilder<P, THIS> groupKey() {
-      return new GroupKeyBuilder<P, THIS>(self());
+      return new GroupKeyBuilder<>(self());
     }
 
     public ValueBuilder<P, THIS> value(PrimitiveTypeName type,
                                        Type.Repetition repetition) {
-      return new ValueBuilder<P, THIS>(self(), type).repetition(repetition);
+      return new ValueBuilder<>(self(), type).repetition(repetition);
     }
 
     public ValueBuilder<P, THIS> requiredValue(PrimitiveTypeName type) {
@@ -1124,7 +1128,7 @@ public class Types {
     }
 
     public GroupValueBuilder<P, THIS> groupValue(Type.Repetition repetition) {
-      return new GroupValueBuilder<P, THIS>(self()).repetition(repetition);
+      return new GroupValueBuilder<>(self()).repetition(repetition);
     }
 
     public GroupValueBuilder<P, THIS> requiredGroupValue() {
@@ -1136,7 +1140,7 @@ public class Types {
     }
 
     public MapValueBuilder<P, THIS> mapValue(Type.Repetition repetition) {
-      return new MapValueBuilder<P, THIS>(self()).repetition(repetition);
+      return new MapValueBuilder<>(self()).repetition(repetition);
     }
 
     public MapValueBuilder<P, THIS> requiredMapValue() {
@@ -1148,7 +1152,7 @@ public class Types {
     }
 
     public ListValueBuilder<P, THIS> listValue(Type.Repetition repetition) {
-      return new ListValueBuilder<P, THIS>(self()).repetition(repetition);
+      return new ListValueBuilder<>(self()).repetition(repetition);
     }
 
     public ListValueBuilder<P, THIS> requiredListValue() {
@@ -1234,6 +1238,7 @@ public class Types {
         this.listBuilder = listBuilder;
       }
 
+      @Override
       public LP named(String name) {
         listBuilder.setElementType(build("element"));
         return listBuilder.named(name);
@@ -1254,6 +1259,7 @@ public class Types {
         this.listBuilder = listBuilder;
       }
 
+      @Override
       public LP named(String name) {
         listBuilder.setElementType(build("element"));
         return listBuilder.named(name);
@@ -1330,7 +1336,7 @@ public class Types {
 
     public ElementBuilder<P, THIS> element(PrimitiveTypeName type,
                                            Type.Repetition repetition) {
-      return new ElementBuilder<P, THIS>(self(), type).repetition(repetition);
+      return new ElementBuilder<>(self(), type).repetition(repetition);
     }
 
     public ElementBuilder<P, THIS> requiredElement(PrimitiveTypeName type) {
@@ -1342,7 +1348,7 @@ public class Types {
     }
 
     public GroupElementBuilder<P, THIS> groupElement(Type.Repetition repetition) {
-      return new GroupElementBuilder<P, THIS>(self()).repetition(repetition);
+      return new GroupElementBuilder<>(self()).repetition(repetition);
     }
 
     public GroupElementBuilder<P, THIS> requiredGroupElement() {
@@ -1354,7 +1360,7 @@ public class Types {
     }
 
     public MapElementBuilder<P, THIS> mapElement(Type.Repetition repetition) {
-      return new MapElementBuilder<P, THIS>(self()).repetition(repetition);
+      return new MapElementBuilder<>(self()).repetition(repetition);
     }
 
     public MapElementBuilder<P, THIS> requiredMapElement() {
@@ -1366,7 +1372,7 @@ public class Types {
     }
 
     public ListElementBuilder<P, THIS> listElement(Type.Repetition repetition) {
-      return new ListElementBuilder<P, THIS>(self()).repetition(repetition);
+      return new ListElementBuilder<>(self()).repetition(repetition);
     }
 
     public ListElementBuilder<P, THIS> requiredListElement() {
@@ -1431,7 +1437,7 @@ public class Types {
 
   public static PrimitiveBuilder<PrimitiveType> primitive(PrimitiveTypeName type,
                                                           Type.Repetition repetition) {
-    return new PrimitiveBuilder<PrimitiveType>(PrimitiveType.class, type)
+    return new PrimitiveBuilder<>(PrimitiveType.class, type)
         .repetition(repetition);
   }
 
@@ -1442,7 +1448,7 @@ public class Types {
    * @return a {@link PrimitiveBuilder}
    */
   public static PrimitiveBuilder<PrimitiveType> required(PrimitiveTypeName type) {
-    return new PrimitiveBuilder<PrimitiveType>(PrimitiveType.class, type)
+    return new PrimitiveBuilder<>(PrimitiveType.class, type)
         .repetition(Type.Repetition.REQUIRED);
   }
 
@@ -1453,7 +1459,7 @@ public class Types {
    * @return a {@link PrimitiveBuilder}
    */
   public static PrimitiveBuilder<PrimitiveType> optional(PrimitiveTypeName type) {
-    return new PrimitiveBuilder<PrimitiveType>(PrimitiveType.class, type)
+    return new PrimitiveBuilder<>(PrimitiveType.class, type)
         .repetition(Type.Repetition.OPTIONAL);
   }
 
@@ -1464,13 +1470,13 @@ public class Types {
    * @return a {@link PrimitiveBuilder}
    */
   public static PrimitiveBuilder<PrimitiveType> repeated(PrimitiveTypeName type) {
-    return new PrimitiveBuilder<PrimitiveType>(PrimitiveType.class, type)
+    return new PrimitiveBuilder<>(PrimitiveType.class, type)
         .repetition(Type.Repetition.REPEATED);
   }
 
   public static GroupBuilder<GroupType> buildGroup(
       Type.Repetition repetition) {
-    return new GroupBuilder<GroupType>(GroupType.class).repetition(repetition);
+    return new GroupBuilder<>(GroupType.class).repetition(repetition);
   }
 
   /**
@@ -1479,7 +1485,7 @@ public class Types {
    * @return a {@link GroupBuilder}
    */
   public static GroupBuilder<GroupType> requiredGroup() {
-    return new GroupBuilder<GroupType>(GroupType.class)
+    return new GroupBuilder<>(GroupType.class)
         .repetition(Type.Repetition.REQUIRED);
   }
 
@@ -1489,7 +1495,7 @@ public class Types {
    * @return a {@link GroupBuilder}
    */
   public static GroupBuilder<GroupType> optionalGroup() {
-    return new GroupBuilder<GroupType>(GroupType.class)
+    return new GroupBuilder<>(GroupType.class)
         .repetition(Type.Repetition.OPTIONAL);
   }
 
@@ -1499,13 +1505,13 @@ public class Types {
    * @return a {@link GroupBuilder}
    */
   public static GroupBuilder<GroupType> repeatedGroup() {
-    return new GroupBuilder<GroupType>(GroupType.class)
+    return new GroupBuilder<>(GroupType.class)
         .repetition(Type.Repetition.REPEATED);
   }
 
 
   public static MapBuilder<GroupType> map(Type.Repetition repetition) {
-    return new MapBuilder<GroupType>(GroupType.class).repetition(repetition);
+    return new MapBuilder<>(GroupType.class).repetition(repetition);
   }
 
   public static MapBuilder<GroupType> requiredMap() {
@@ -1517,7 +1523,7 @@ public class Types {
   }
 
   public static ListBuilder<GroupType> list(Type.Repetition repetition) {
-    return new ListBuilder<GroupType>(GroupType.class).repetition(repetition);
+    return new ListBuilder<>(GroupType.class).repetition(repetition);
   }
 
   public static ListBuilder<GroupType> requiredList() {
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/TestEncodingStats.java b/parquet-column/src/test/java/org/apache/parquet/column/TestEncodingStats.java
index 4c46688..434da33 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/TestEncodingStats.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/TestEncodingStats.java
@@ -39,9 +39,9 @@ public class TestEncodingStats {
     builder.addDataEncoding(Encoding.DELTA_BYTE_ARRAY);
     EncodingStats stats1 = builder.build();
 
-    Map<Encoding, Integer> expectedDictStats1 = new HashMap<Encoding, Integer>();
+    Map<Encoding, Integer> expectedDictStats1 = new HashMap<>();
     expectedDictStats1.put(Encoding.PLAIN, 1);
-    Map<Encoding, Integer> expectedDataStats1 = new HashMap<Encoding, Integer>();
+    Map<Encoding, Integer> expectedDataStats1 = new HashMap<>();
     expectedDataStats1.put(Encoding.RLE_DICTIONARY, 3);
     expectedDataStats1.put(Encoding.DELTA_BYTE_ARRAY, 2);
 
@@ -52,8 +52,8 @@ public class TestEncodingStats {
     builder.addDataEncoding(Encoding.PLAIN);
     EncodingStats stats2 = builder.build();
 
-    Map<Encoding, Integer> expectedDictStats2 = new HashMap<Encoding, Integer>();
-    Map<Encoding, Integer> expectedDataStats2 = new HashMap<Encoding, Integer>();
+    Map<Encoding, Integer> expectedDictStats2 = new HashMap<>();
+    Map<Encoding, Integer> expectedDataStats2 = new HashMap<>();
     expectedDataStats2.put(Encoding.PLAIN, 4);
 
     assertEquals("Dictionary stats should be correct", expectedDictStats2, stats2.dictStats);
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/impl/TestColumnReaderImpl.java b/parquet-column/src/test/java/org/apache/parquet/column/impl/TestColumnReaderImpl.java
index 35fddaf..d57744e 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/impl/TestColumnReaderImpl.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/impl/TestColumnReaderImpl.java
@@ -79,7 +79,7 @@ public class TestColumnReaderImpl {
     }
     assertEquals(rows, rowCount);
     assertEquals(rows, valueCount);
-    MemPageReader pageReader = new MemPageReader((long)rows, pages.iterator(), pageWriter.getDictionaryPage());
+    MemPageReader pageReader = new MemPageReader(rows, pages.iterator(), pageWriter.getDictionaryPage());
     ValidatingConverter converter = new ValidatingConverter();
     ColumnReader columnReader = new ColumnReaderImpl(col, pageReader, converter, VersionParser.parse(Version.FULL_VERSION));
     for (int i = 0; i < rows; i++) {
@@ -117,7 +117,7 @@ public class TestColumnReaderImpl {
     }
     assertEquals(rows, rowCount);
     assertEquals(rows, valueCount);
-    MemPageReader pageReader = new MemPageReader((long)rows, pages.iterator(), pageWriter.getDictionaryPage());
+    MemPageReader pageReader = new MemPageReader(rows, pages.iterator(), pageWriter.getDictionaryPage());
     ValidatingConverter converter = new ValidatingConverter();
     ColumnReader columnReader = new ColumnReaderImpl(col, pageReader, converter, VersionParser.parse(Version.FULL_VERSION));
     for (int i = 0; i < rows; i++) {
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/impl/TestCorruptDeltaByteArrays.java b/parquet-column/src/test/java/org/apache/parquet/column/impl/TestCorruptDeltaByteArrays.java
index 5bcbb88..e1339dd 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/impl/TestCorruptDeltaByteArrays.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/impl/TestCorruptDeltaByteArrays.java
@@ -205,7 +205,7 @@ public class TestCorruptDeltaByteArrays {
     BytesInput rd = BytesInput.from(rdValues.getBytes().toByteArray());
     DeltaByteArrayWriter writer = getDeltaByteArrayWriter();
     String lastValue = null;
-    List<String> values = new ArrayList<String>();
+    List<String> values = new ArrayList<>();
     for (int i = 0; i < 10; i += 1) {
       lastValue = str(i);
       writer.writeBytes(Binary.fromString(lastValue));
@@ -236,7 +236,7 @@ public class TestCorruptDeltaByteArrays {
         writer.getEncoding());
     pages.addRowCount(10);
 
-    final List<String> actualValues = new ArrayList<String>();
+    final List<String> actualValues = new ArrayList<>();
     PrimitiveConverter converter = new PrimitiveConverter() {
       @Override
       public void addBinary(Binary value) {
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/mem/TestMemColumn.java b/parquet-column/src/test/java/org/apache/parquet/column/mem/TestMemColumn.java
index f89d0cb..3b750a0 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/mem/TestMemColumn.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/mem/TestMemColumn.java
@@ -38,7 +38,6 @@ import org.apache.parquet.example.DummyRecordConverter;
 import org.apache.parquet.io.api.Binary;
 import org.apache.parquet.schema.MessageType;
 import org.apache.parquet.schema.MessageTypeParser;
-import org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName;
 import org.apache.parquet.schema.Types;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -168,7 +167,7 @@ public class TestMemColumn {
       assertEquals("r row " + i, r, columnReader.getCurrentRepetitionLevel());
       assertEquals("d row " + i, d, columnReader.getCurrentDefinitionLevel());
       if (d == 2) {
-        assertEquals("data row " + i, (long)i, columnReader.getLong());
+        assertEquals("data row " + i, i, columnReader.getLong());
       }
       columnReader.consume();
       ++ i;
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/page/mem/MemPageStore.java b/parquet-column/src/test/java/org/apache/parquet/column/page/mem/MemPageStore.java
index cdde894..3e7e745 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/page/mem/MemPageStore.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/page/mem/MemPageStore.java
@@ -37,7 +37,7 @@ import java.util.Map;
 public class MemPageStore implements PageReadStore, PageWriteStore {
   private static final Logger LOG = LoggerFactory.getLogger(MemPageStore.class);
 
-  private Map<ColumnDescriptor, MemPageWriter> pageWriters = new HashMap<ColumnDescriptor, MemPageWriter>();
+  private Map<ColumnDescriptor, MemPageWriter> pageWriters = new HashMap<>();
 
   private long rowCount;
 
@@ -62,7 +62,7 @@ public class MemPageStore implements PageReadStore, PageWriteStore {
     if (pageWriter == null) {
       throw new UnknownColumnException(descriptor);
     }
-    List<DataPage> pages = new ArrayList<DataPage>(pageWriter.getPages());
+    List<DataPage> pages = new ArrayList<>(pageWriter.getPages());
     LOG.debug("initialize page reader with {} values and {} pages", pageWriter.getTotalValueCount(), pages.size());
     return new MemPageReader(pageWriter.getTotalValueCount(), pages.iterator(), pageWriter.getDictionaryPage());
   }
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/page/mem/MemPageWriter.java b/parquet-column/src/test/java/org/apache/parquet/column/page/mem/MemPageWriter.java
index 706b001..77bf624 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/page/mem/MemPageWriter.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/page/mem/MemPageWriter.java
@@ -39,7 +39,7 @@ import static org.apache.parquet.bytes.BytesInput.copy;
 public class MemPageWriter implements PageWriter {
   private static final Logger LOG = LoggerFactory.getLogger(MemPageWriter.class);
 
-  private final List<DataPage> pages = new ArrayList<DataPage>();
+  private final List<DataPage> pages = new ArrayList<>();
   private DictionaryPage dictionaryPage;
   private long memSize = 0;
   private long totalValueCount = 0;
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/statistics/TestStatistics.java b/parquet-column/src/test/java/org/apache/parquet/column/statistics/TestStatistics.java
index 4431ea4..9efdbc7 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/statistics/TestStatistics.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/statistics/TestStatistics.java
@@ -394,8 +394,8 @@ public class TestStatistics {
     byte[] boolMaxBytes = statsBoth.getMaxBytes();
     byte[] boolMinBytes = statsBoth.getMinBytes();
 
-    assertEquals((int)(boolMaxBytes[0] & 255), 1);
-    assertEquals((int)(boolMinBytes[0] & 255), 0);
+    assertEquals(boolMaxBytes[0] & 255, 1);
+    assertEquals(boolMinBytes[0] & 255, 0);
 
     BooleanStatistics statsFromBytes = new BooleanStatistics();
     statsFromBytes.setMinMaxFromBytes(boolMinBytes, boolMaxBytes);
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/values/TestValuesReaderImpl.java b/parquet-column/src/test/java/org/apache/parquet/column/values/TestValuesReaderImpl.java
index 27ed7b5..3cf963e 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/values/TestValuesReaderImpl.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/values/TestValuesReaderImpl.java
@@ -24,8 +24,6 @@ import static org.junit.Assert.fail;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
-import java.util.function.Consumer;
-
 import org.apache.parquet.bytes.ByteBufferInputStream;
 import org.apache.parquet.io.api.Binary;
 import org.junit.Assert;
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/values/Utils.java b/parquet-column/src/test/java/org/apache/parquet/column/values/Utils.java
index 05074a9..68e8554 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/values/Utils.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/values/Utils.java
@@ -19,7 +19,6 @@
 package org.apache.parquet.column.values;
 
 import java.io.IOException;
-import java.nio.ByteBuffer;
 import java.util.Random;
 
 import org.apache.parquet.bytes.ByteBufferInputStream;
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/values/bitpacking/TestBitPackingColumn.java b/parquet-column/src/test/java/org/apache/parquet/column/values/bitpacking/TestBitPackingColumn.java
index 3ca3d08..0534415 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/values/bitpacking/TestBitPackingColumn.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/values/bitpacking/TestBitPackingColumn.java
@@ -204,18 +204,22 @@ public class TestBitPackingColumn {
 
   private static enum PACKING_TYPE {
     BYTE_BASED_MANUAL {
+      @Override
       public ValuesReader getReader(final int bound) {
         return new BitPackingValuesReader(bound);
       }
+      @Override
       public ValuesWriter getWriter(final int bound) {
         return new BitPackingValuesWriter(bound, 32*1024, 64*1024, new DirectByteBufferAllocator());
       }
     }
     ,
     BYTE_BASED_GENERATED {
+      @Override
       public ValuesReader getReader(final int bound) {
         return new ByteBitPackingValuesReader(bound, BIG_ENDIAN);
       }
+      @Override
       public ValuesWriter getWriter(final int bound) {
         return new ByteBitPackingValuesWriter(bound, BIG_ENDIAN);
       }
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/values/delta/benchmark/BenchMarkTest.java b/parquet-column/src/test/java/org/apache/parquet/column/values/delta/benchmark/BenchMarkTest.java
index 6b02b9a..21a9bfe 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/values/delta/benchmark/BenchMarkTest.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/values/delta/benchmark/BenchMarkTest.java
@@ -25,7 +25,6 @@ public abstract class BenchMarkTest {
 
   protected void runWriteTest(ValuesWriter writer){
     int pageCount = 10;
-    double avg = 0.0;
     for (int i = 0; i < pageCount ; i++) {
       writer.reset();
       long startTime = System.nanoTime();
@@ -34,7 +33,6 @@ public abstract class BenchMarkTest {
       }
       long endTime = System.nanoTime();
       long duration = endTime - startTime;
-      avg += (double) duration / pageCount;
     }
 
     System.out.println("size is "+writer.getBytes().size());
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/values/deltalengthbytearray/benchmark/BenchmarkDeltaLengthByteArray.java b/parquet-column/src/test/java/org/apache/parquet/column/values/deltalengthbytearray/benchmark/BenchmarkDeltaLengthByteArray.java
index 08d04e6..1604ce38 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/values/deltalengthbytearray/benchmark/BenchmarkDeltaLengthByteArray.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/values/deltalengthbytearray/benchmark/BenchmarkDeltaLengthByteArray.java
@@ -54,7 +54,7 @@ public class BenchmarkDeltaLengthByteArray {
 
     Utils.writeData(writer, values);
     ByteBufferInputStream data = writer.getBytes().toInputStream();
-    Binary[] bin = Utils.readData(reader, data, values.length);
+    Utils.readData(reader, data, values.length);
     System.out.println("size " + data.position());
   }
 
@@ -66,7 +66,7 @@ public class BenchmarkDeltaLengthByteArray {
 
     Utils.writeData(writer, values);
     ByteBufferInputStream data = writer.getBytes().toInputStream();
-    Binary[] bin = Utils.readData(reader, data, values.length);
+    Utils.readData(reader, data, values.length);
     System.out.println("size " + data.position());
   }
 
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/values/deltastrings/TestDeltaByteArray.java b/parquet-column/src/test/java/org/apache/parquet/column/values/deltastrings/TestDeltaByteArray.java
index a5a22a8..23c8e35 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/values/deltastrings/TestDeltaByteArray.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/values/deltastrings/TestDeltaByteArray.java
@@ -19,8 +19,6 @@
 package org.apache.parquet.column.values.deltastrings;
 
 import java.io.IOException;
-import java.nio.ByteBuffer;
-
 import org.apache.parquet.bytes.ByteBufferInputStream;
 import org.junit.Test;
 import org.junit.Assert;
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/values/deltastrings/benchmark/BenchmarkDeltaByteArray.java b/parquet-column/src/test/java/org/apache/parquet/column/values/deltastrings/benchmark/BenchmarkDeltaByteArray.java
index 53578f0..5b30963 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/values/deltastrings/benchmark/BenchmarkDeltaByteArray.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/values/deltastrings/benchmark/BenchmarkDeltaByteArray.java
@@ -61,7 +61,7 @@ public class BenchmarkDeltaByteArray {
 
     Utils.writeData(writer, values);
     ByteBufferInputStream data = writer.getBytes().toInputStream();
-    Binary[] bin = Utils.readData(reader, data, values.length);
+    Utils.readData(reader, data, values.length);
     System.out.println("size " + data.position());
   }
 
@@ -73,7 +73,7 @@ public class BenchmarkDeltaByteArray {
 
     Utils.writeData(writer, values);
     ByteBufferInputStream data = writer.getBytes().toInputStream();
-    Binary[] bin = Utils.readData(reader, data, values.length);
+    Utils.readData(reader, data, values.length);
     System.out.println("size " + data.position());
   }
 
@@ -85,7 +85,7 @@ public class BenchmarkDeltaByteArray {
 
     Utils.writeData(writer, sortedVals);
     ByteBufferInputStream data = writer.getBytes().toInputStream();
-    Binary[] bin = Utils.readData(reader, data, values.length);
+    Utils.readData(reader, data, values.length);
     System.out.println("size " + data.position());
   }
 
@@ -97,7 +97,7 @@ public class BenchmarkDeltaByteArray {
 
     Utils.writeData(writer, sortedVals);
     ByteBufferInputStream data = writer.getBytes().toInputStream();
-    Binary[] bin = Utils.readData(reader, data, values.length);
+    Utils.readData(reader, data, values.length);
     System.out.println("size " + data.position());
   }
 }
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/values/rle/RunLengthBitPackingHybridIntegrationTest.java b/parquet-column/src/test/java/org/apache/parquet/column/values/rle/RunLengthBitPackingHybridIntegrationTest.java
index 6c94f14..078888e 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/values/rle/RunLengthBitPackingHybridIntegrationTest.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/values/rle/RunLengthBitPackingHybridIntegrationTest.java
@@ -39,35 +39,23 @@ public class RunLengthBitPackingHybridIntegrationTest {
     long modValue = 1L << bitWidth;
 
     RunLengthBitPackingHybridEncoder encoder = new RunLengthBitPackingHybridEncoder(bitWidth, 1000, 64000, new DirectByteBufferAllocator());
-    int numValues = 0;
-
     for (int i = 0; i < 100; i++) {
       encoder.writeInt((int) (i % modValue));
     }
-    numValues += 100;
-
     for (int i = 0; i < 100; i++) {
       encoder.writeInt((int) (77 % modValue));
     }
-    numValues += 100;
-
     for (int i = 0; i < 100; i++) {
       encoder.writeInt((int) (88 % modValue));
     }
-    numValues += 100;
-
     for (int i = 0; i < 1000; i++) {
       encoder.writeInt((int) (i % modValue));
       encoder.writeInt((int) (i % modValue));
       encoder.writeInt((int) (i % modValue));
     }
-    numValues += 3000;
-
     for (int i = 0; i < 1000; i++) {
       encoder.writeInt((int) (17 % modValue));
     }
-    numValues += 1000;
-
     ByteBuffer encodedBytes = encoder.toBytes().toByteBuffer();
     ByteBufferInputStream in = ByteBufferInputStream.wrap(encodedBytes);
 
diff --git a/parquet-column/src/test/java/org/apache/parquet/column/values/rle/TestRunLengthBitPackingHybridEncoder.java b/parquet-column/src/test/java/org/apache/parquet/column/values/rle/TestRunLengthBitPackingHybridEncoder.java
index 1ab09f5..bfa9482 100644
--- a/parquet-column/src/test/java/org/apache/parquet/column/values/rle/TestRunLengthBitPackingHybridEncoder.java
+++ b/parquet-column/src/test/java/org/apache/parquet/column/values/rle/TestRunLengthBitPackingHybridEncoder.java
@@ -309,7 +309,7 @@ public class TestRunLengthBitPackingHybridEncoder {
     int[] unpacked = new int[8];
     byte[] next8Values = new byte[bitWidth];
 
-    List<Integer> values = new ArrayList<Integer>(numValues);
+    List<Integer> values = new ArrayList<>(numValues);
 
     while(values.size() < numValues) {
       for (int i = 0; i < bitWidth; i++) {
diff --git a/parquet-column/src/test/java/org/apache/parquet/filter2/predicate/TestLogicalInverseRewriter.java b/parquet-column/src/test/java/org/apache/parquet/filter2/predicate/TestLogicalInverseRewriter.java
index f2f7745..d7484b4 100644
--- a/parquet-column/src/test/java/org/apache/parquet/filter2/predicate/TestLogicalInverseRewriter.java
+++ b/parquet-column/src/test/java/org/apache/parquet/filter2/predicate/TestLogicalInverseRewriter.java
@@ -58,7 +58,7 @@ public class TestLogicalInverseRewriter {
           and(gt(doubleColumn, 12.0),
               or(
                   or(eq(intColumn, 7), notEq(intColumn, 17)),
-                  new LogicalNotUserDefined<Integer, DummyUdp>(userDefined(intColumn, DummyUdp.class)))),
+                  new LogicalNotUserDefined<>(userDefined(intColumn, DummyUdp.class)))),
           or(gt(doubleColumn, 100.0), lt(intColumn, 77)));
 
   private static void assertNoOp(FilterPredicate p) {
@@ -85,7 +85,7 @@ public class TestLogicalInverseRewriter {
     assertEquals(gt(intColumn, 17), rewrite(not(ltEq(intColumn, 17))));
     assertEquals(ltEq(intColumn, 17), rewrite(not(gt(intColumn, 17))));
     assertEquals(lt(intColumn, 17), rewrite(not(gtEq(intColumn, 17))));
-    assertEquals(new LogicalNotUserDefined<Integer, DummyUdp>(ud), rewrite(not(ud)));
+    assertEquals(new LogicalNotUserDefined<>(ud), rewrite(not(ud)));
 
     FilterPredicate notedAnd = not(and(eq(intColumn, 17), eq(doubleColumn, 12.0)));
     FilterPredicate distributedAnd = or(notEq(intColumn, 17), notEq(doubleColumn, 12.0));
diff --git a/parquet-column/src/test/java/org/apache/parquet/filter2/predicate/TestLogicalInverter.java b/parquet-column/src/test/java/org/apache/parquet/filter2/predicate/TestLogicalInverter.java
index 6b8da78..372fa2a 100644
--- a/parquet-column/src/test/java/org/apache/parquet/filter2/predicate/TestLogicalInverter.java
+++ b/parquet-column/src/test/java/org/apache/parquet/filter2/predicate/TestLogicalInverter.java
@@ -59,7 +59,7 @@ public class TestLogicalInverter {
           and(gt(doubleColumn, 12.0),
               or(
                   or(eq(intColumn, 7), notEq(intColumn, 17)),
-                  new LogicalNotUserDefined<Integer, DummyUdp>(userDefined(intColumn, DummyUdp.class)))),
+                  new LogicalNotUserDefined<>(userDefined(intColumn, DummyUdp.class)))),
           and(ltEq(doubleColumn, 100.0), eq(intColumn, 77)));
 
   @Test
@@ -82,9 +82,9 @@ public class TestLogicalInverter {
     assertEquals(eq(intColumn, 17), invert(not(eq(intColumn, 17))));
 
     UserDefined<Integer, DummyUdp> ud = userDefined(intColumn, DummyUdp.class);
-    assertEquals(new LogicalNotUserDefined<Integer, DummyUdp>(ud), invert(ud));
+    assertEquals(new LogicalNotUserDefined<>(ud), invert(ud));
     assertEquals(ud, invert(not(ud)));
-    assertEquals(ud, invert(new LogicalNotUserDefined<Integer, DummyUdp>(ud)));
+    assertEquals(ud, invert(new LogicalNotUserDefined<>(ud)));
   }
 
   @Test
diff --git a/parquet-column/src/test/java/org/apache/parquet/io/ConverterConsumer.java b/parquet-column/src/test/java/org/apache/parquet/io/ConverterConsumer.java
index 85e894f..1b082ab 100644
--- a/parquet-column/src/test/java/org/apache/parquet/io/ConverterConsumer.java
+++ b/parquet-column/src/test/java/org/apache/parquet/io/ConverterConsumer.java
@@ -33,8 +33,8 @@ public class ConverterConsumer extends RecordConsumer {
   private final GroupConverter root;
   private final MessageType schema;
 
-  private Deque<GroupConverter> path = new ArrayDeque<GroupConverter>();
-  private Deque<Type> typePath = new ArrayDeque<Type>();
+  private Deque<GroupConverter> path = new ArrayDeque<>();
+  private Deque<Type> typePath = new ArrayDeque<>();
   private GroupConverter current;
   private PrimitiveConverter currentPrimitive;
   private Type currentType;
diff --git a/parquet-column/src/test/java/org/apache/parquet/io/ExpectationValidatingConverter.java b/parquet-column/src/test/java/org/apache/parquet/io/ExpectationValidatingConverter.java
index 914d521..e99da98 100644
--- a/parquet-column/src/test/java/org/apache/parquet/io/ExpectationValidatingConverter.java
+++ b/parquet-column/src/test/java/org/apache/parquet/io/ExpectationValidatingConverter.java
@@ -49,7 +49,7 @@ public class ExpectationValidatingConverter extends RecordMaterializer<Void> {
   }
 
   public ExpectationValidatingConverter(String[] expectations, MessageType schema) {
-    this(new ArrayDeque<String>(Arrays.asList(expectations)), schema);
+    this(new ArrayDeque<>(Arrays.asList(expectations)), schema);
   }
 
   public ExpectationValidatingConverter(Deque<String> expectations, MessageType schema) {
diff --git a/parquet-column/src/test/java/org/apache/parquet/io/TestColumnIO.java b/parquet-column/src/test/java/org/apache/parquet/io/TestColumnIO.java
index 0aa3420..3ba36a5 100644
--- a/parquet-column/src/test/java/org/apache/parquet/io/TestColumnIO.java
+++ b/parquet-column/src/test/java/org/apache/parquet/io/TestColumnIO.java
@@ -184,7 +184,7 @@ public class TestColumnIO {
     writeGroups(schemaWithExtraField, memPageStoreForSchemaWithExtraField, groupFactory2.newGroup().append("a", 1).append("b", 2).append("c",3));
 
     {
-      List<Group> groups = new ArrayList<Group>();
+      List<Group> groups = new ArrayList<>();
       groups.addAll(readGroups(memPageStoreForOriginalSchema, orginalSchema, schemaWithExtraField, 1));
       groups.addAll(readGroups(memPageStoreForSchemaWithExtraField, schemaWithExtraField, schemaWithExtraField, 1));
       // TODO: add once we have the support for empty projection
@@ -248,7 +248,7 @@ public class TestColumnIO {
     writeGroups(orginalSchema, store, groupFactory.newGroup().append("a", 1).append("b", 2));
 
     {
-      List<Group> groups = new ArrayList<Group>();
+      List<Group> groups = new ArrayList<>();
       groups.addAll(readGroups(store, orginalSchema, projectedSchema, 1));
       Object[][] expected = {
               {2},
@@ -278,7 +278,7 @@ public class TestColumnIO {
     ColumnIOFactory columnIOFactory = new ColumnIOFactory(true);
     MessageColumnIO columnIO = columnIOFactory.getColumnIO(requestedSchema, fileSchema);
     RecordReaderImplementation<Group> recordReader = getRecordReader(columnIO, requestedSchema, memPageStore);
-    List<Group> groups = new ArrayList<Group>();
+    List<Group> groups = new ArrayList<>();
     for (int i = 0; i < n; i++) {
       groups.add(recordReader.read());
     }
@@ -327,7 +327,7 @@ public class TestColumnIO {
 
       validateFSA(expectedFSA, columnIO, recordReader);
 
-      List<Group> records = new ArrayList<Group>();
+      List<Group> records = new ArrayList<>();
       records.add(recordReader.read());
       records.add(recordReader.read());
 
@@ -342,7 +342,7 @@ public class TestColumnIO {
     {
       MessageColumnIO columnIO2 = columnIOFactory.getColumnIO(schema2);
 
-      List<Group> records = new ArrayList<Group>();
+      List<Group> records = new ArrayList<>();
       RecordReaderImplementation<Group> recordReader = getRecordReader(columnIO2, schema2, memPageStore);
 
       validateFSA(expectedFSA2, columnIO2, recordReader);
@@ -402,7 +402,7 @@ public class TestColumnIO {
       }
       MessageType groupSchema = new MessageType("schema"+i, current);
       GroupFactory gf = new SimpleGroupFactory(groupSchema);
-      List<Group> groups = new ArrayList<Group>();
+      List<Group> groups = new ArrayList<>();
       Group root = gf.newGroup();
       Group currentGroup = root;
       for (int j = 0; j < i; j++) {
@@ -419,7 +419,7 @@ public class TestColumnIO {
       }
       MessageType groupSchema = new MessageType("schema"+(i+6), current);
       GroupFactory gf = new SimpleGroupFactory(groupSchema);
-      List<Group> groups = new ArrayList<Group>();
+      List<Group> groups = new ArrayList<>();
       Group rootDefined = gf.newGroup();
       Group rootUndefined = gf.newGroup();
       Group currentDefinedGroup = rootDefined;
@@ -440,7 +440,7 @@ public class TestColumnIO {
       }
       MessageType groupSchema = new MessageType("schema"+(i+12), current);
       GroupFactory gf = new SimpleGroupFactory(groupSchema);
-      List<Group> groups = new ArrayList<Group>();
+      List<Group> groups = new ArrayList<>();
       Group rootDefined = gf.newGroup();
       Group rootUndefined = gf.newGroup();
       Group currentDefinedGroup = rootDefined;
@@ -556,7 +556,7 @@ public class TestColumnIO {
 
   @Test
   public void testGroupWriter() {
-    List<Group> result = new ArrayList<Group>();
+    List<Group> result = new ArrayList<>();
     final GroupRecordConverter groupRecordConverter = new GroupRecordConverter(schema);
     RecordConsumer groupConsumer = new ConverterConsumer(groupRecordConverter.getRootConverter(), schema);
     GroupWriter groupWriter = new GroupWriter(new RecordConsumerLoggingWrapper(groupConsumer), schema);
diff --git a/parquet-column/src/test/java/org/apache/parquet/io/TestFiltered.java b/parquet-column/src/test/java/org/apache/parquet/io/TestFiltered.java
index ab5a575..b3f059f 100644
--- a/parquet-column/src/test/java/org/apache/parquet/io/TestFiltered.java
+++ b/parquet-column/src/test/java/org/apache/parquet/io/TestFiltered.java
@@ -56,7 +56,7 @@ public class TestFiltered {
     public boolean functionToApply(long input) {
       return input > 15;
     }
-  };
+  }
 
   /* Class that implements applyFunction filter for string. Checks for string ending in 'A'. */
   public class StringEndsWithAPredicate implements PredicateFunction<String> {
@@ -64,10 +64,10 @@ public class TestFiltered {
     public boolean functionToApply(String input) {
       return input.endsWith("A");
     }
-  };
+  }
 
   private List<Group> readAll(RecordReader<Group> reader) {
-    List<Group> result = new ArrayList<Group>();
+    List<Group> result = new ArrayList<>();
     Group g;
     while ((g = reader.read()) != null) {
       result.add(g);
diff --git a/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeBuilders.java b/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeBuilders.java
index d0254b8..a881635 100644
--- a/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeBuilders.java
+++ b/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeBuilders.java
@@ -482,7 +482,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testRequiredMap() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
     typeList.add(new PrimitiveType(REQUIRED, INT64, "key"));
     typeList.add(new PrimitiveType(REQUIRED, INT64, "value"));
     GroupType expected = new GroupType(REQUIRED, "myMap", OriginalType.MAP, new GroupType(REPEATED,
@@ -497,7 +497,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testOptionalMap() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
     typeList.add(new PrimitiveType(REQUIRED, INT64, "key"));
     typeList.add(new PrimitiveType(REQUIRED, INT64, "value"));
     GroupType expected = new GroupType(OPTIONAL, "myMap", OriginalType.MAP, new GroupType(REPEATED,
@@ -512,7 +512,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithRequiredValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
     typeList.add(new PrimitiveType(REQUIRED, INT64, "key"));
     typeList.add(new PrimitiveType(REQUIRED, INT64, "value"));
     GroupType map = new GroupType(REQUIRED, "myMap", OriginalType.MAP, new GroupType(REPEATED, "map",
@@ -527,7 +527,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithOptionalValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
     typeList.add(new PrimitiveType(REQUIRED, INT64, "key"));
     typeList.add(new PrimitiveType(OPTIONAL, INT64, "value"));
     GroupType map = new GroupType(REQUIRED, "myMap", OriginalType.MAP, new GroupType(REPEATED, "map",
@@ -542,14 +542,14 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithGroupKeyAndOptionalGroupValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
-    List<Type> keyFields = new ArrayList<Type>();
+    List<Type> keyFields = new ArrayList<>();
     keyFields.add(new PrimitiveType(OPTIONAL, INT64, "first"));
     keyFields.add(new PrimitiveType(OPTIONAL, DOUBLE, "second"));
     typeList.add(new GroupType(REQUIRED, "key", keyFields));
 
-    List<Type> valueFields = new ArrayList<Type>();
+    List<Type> valueFields = new ArrayList<>();
     valueFields.add(new PrimitiveType(OPTIONAL, DOUBLE, "one"));
     valueFields.add(new PrimitiveType(OPTIONAL, INT32, "two"));
     typeList.add(new GroupType(OPTIONAL, "value", valueFields));
@@ -570,14 +570,14 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithGroupKeyAndRequiredGroupValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
-    List<Type> keyFields = new ArrayList<Type>();
+    List<Type> keyFields = new ArrayList<>();
     keyFields.add(new PrimitiveType(OPTIONAL, INT64, "first"));
     keyFields.add(new PrimitiveType(OPTIONAL, DOUBLE, "second"));
     typeList.add(new GroupType(REQUIRED, "key", keyFields));
 
-    List<Type> valueFields = new ArrayList<Type>();
+    List<Type> valueFields = new ArrayList<>();
     valueFields.add(new PrimitiveType(OPTIONAL, DOUBLE, "one"));
     valueFields.add(new PrimitiveType(OPTIONAL, INT32, "two"));
     typeList.add(new GroupType(REQUIRED, "value", valueFields));
@@ -602,9 +602,9 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithGroupKeyAndOptionalValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
-    List<Type> keyFields = new ArrayList<Type>();
+    List<Type> keyFields = new ArrayList<>();
     keyFields.add(new PrimitiveType(OPTIONAL, INT64, "first"));
     keyFields.add(new PrimitiveType(OPTIONAL, DOUBLE, "second"));
     typeList.add(new GroupType(REQUIRED, "key", keyFields));
@@ -628,9 +628,9 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithGroupKeyAndRequiredValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
-    List<Type> keyFields = new ArrayList<Type>();
+    List<Type> keyFields = new ArrayList<>();
     keyFields.add(new PrimitiveType(OPTIONAL, INT64, "first"));
     keyFields.add(new PrimitiveType(OPTIONAL, DOUBLE, "second"));
     typeList.add(new GroupType(REQUIRED, "key", keyFields));
@@ -654,14 +654,14 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithOptionalGroupValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
-    List<Type> keyFields = new ArrayList<Type>();
+    List<Type> keyFields = new ArrayList<>();
     keyFields.add(new PrimitiveType(OPTIONAL, INT64, "first"));
     keyFields.add(new PrimitiveType(OPTIONAL, DOUBLE, "second"));
     typeList.add(new PrimitiveType(REQUIRED, INT64, "key"));
 
-    List<Type> valueFields = new ArrayList<Type>();
+    List<Type> valueFields = new ArrayList<>();
     valueFields.add(new PrimitiveType(OPTIONAL, DOUBLE, "one"));
     valueFields.add(new PrimitiveType(OPTIONAL, INT32, "two"));
     typeList.add(new GroupType(OPTIONAL, "value", valueFields));
@@ -684,11 +684,11 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithRequiredGroupValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
     typeList.add(new PrimitiveType(REQUIRED, INT64, "key"));
 
-    List<Type> valueFields = new ArrayList<Type>();
+    List<Type> valueFields = new ArrayList<>();
     valueFields.add(new PrimitiveType(OPTIONAL, DOUBLE, "one"));
     valueFields.add(new PrimitiveType(OPTIONAL, INT32, "two"));
     typeList.add(new GroupType(REQUIRED, "value", valueFields));
@@ -711,18 +711,18 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithNestedGroupKeyAndNestedGroupValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
-    List<Type> innerFields = new ArrayList<Type>();
+    List<Type> innerFields = new ArrayList<>();
     innerFields.add(new PrimitiveType(REQUIRED, FLOAT, "inner_key_1"));
     innerFields.add(new PrimitiveType(OPTIONAL, INT32, "inner_key_2"));
 
-    List<Type> keyFields = new ArrayList<Type>();
+    List<Type> keyFields = new ArrayList<>();
     keyFields.add(new PrimitiveType(OPTIONAL, INT64, "first"));
     keyFields.add(new GroupType(REQUIRED, "second", innerFields));
     typeList.add(new GroupType(REQUIRED, "key", keyFields));
 
-    List<Type> valueFields = new ArrayList<Type>();
+    List<Type> valueFields = new ArrayList<>();
     valueFields.add(new GroupType(OPTIONAL, "one", innerFields));
     valueFields.add(new PrimitiveType(OPTIONAL, INT32, "two"));
     typeList.add(new GroupType(OPTIONAL, "value", valueFields));
@@ -753,7 +753,7 @@ public class TestTypeBuilders {
 
     @Test
     public void testMapWithRequiredListValue() {
-        List<Type> typeList = new ArrayList<Type>();
+        List<Type> typeList = new ArrayList<>();
 
         typeList.add(new PrimitiveType(REQUIRED, INT64, "key"));
         typeList.add(new GroupType(REQUIRED, "value", OriginalType.LIST,
@@ -778,7 +778,7 @@ public class TestTypeBuilders {
 
     @Test
     public void testMapWithOptionalListValue() {
-        List<Type> typeList = new ArrayList<Type>();
+        List<Type> typeList = new ArrayList<>();
 
         typeList.add(new PrimitiveType(REQUIRED, INT64, "key"));
         typeList.add(new GroupType(OPTIONAL, "value", OriginalType.LIST,
@@ -803,9 +803,9 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithRequiredMapValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
-    List<Type> innerMapTypeList = new ArrayList<Type>();
+    List<Type> innerMapTypeList = new ArrayList<>();
     innerMapTypeList.add(new PrimitiveType(REQUIRED, INT64, "key"));
     innerMapTypeList.add(new PrimitiveType(REQUIRED, INT64, "value"));
 
@@ -831,9 +831,9 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithOptionalMapValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
-    List<Type> innerMapTypeList = new ArrayList<Type>();
+    List<Type> innerMapTypeList = new ArrayList<>();
     innerMapTypeList.add(new PrimitiveType(REQUIRED, INT64, "key"));
     innerMapTypeList.add(new PrimitiveType(REQUIRED, INT64, "value"));
 
@@ -859,7 +859,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithGroupKeyAndRequiredListValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
     typeList.add(new GroupType(REQUIRED, "key", new PrimitiveType(REQUIRED, INT64,
         "first"
@@ -888,7 +888,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithGroupKeyAndOptionalListValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
     typeList.add(new GroupType(REQUIRED, "key", new PrimitiveType(REQUIRED, INT64,
         "first"
@@ -917,9 +917,9 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithGroupKeyAndRequiredMapValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
-    List<Type> innerMapTypeList = new ArrayList<Type>();
+    List<Type> innerMapTypeList = new ArrayList<>();
     innerMapTypeList.add(new PrimitiveType(REQUIRED, INT64, "key"));
     innerMapTypeList.add(new PrimitiveType(REQUIRED, INT64, "value"));
 
@@ -950,9 +950,9 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithGroupKeyAndOptionalMapValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
-    List<Type> innerMapTypeList = new ArrayList<Type>();
+    List<Type> innerMapTypeList = new ArrayList<>();
     innerMapTypeList.add(new PrimitiveType(REQUIRED, INT64, "key"));
     innerMapTypeList.add(new PrimitiveType(REQUIRED, INT64, "value"));
 
@@ -983,7 +983,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithNullValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
     typeList.add(new PrimitiveType(REQUIRED, INT64, "key"));
     GroupType map = new GroupType(OPTIONAL, "myMap", OriginalType.MAP, new GroupType(REPEATED, "map",
@@ -1001,7 +1001,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testMapWithDefaultKeyAndNullValue() {
-    List<Type> typeList = new ArrayList<Type>();
+    List<Type> typeList = new ArrayList<>();
 
     typeList.add(new PrimitiveType(REQUIRED, BINARY, "key", OriginalType.UTF8));
     GroupType map = new GroupType(OPTIONAL, "myMap", OriginalType.MAP, new GroupType(REPEATED, "map",
@@ -1077,7 +1077,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testListOfReqGroup() {
-    List<Type> fields = new ArrayList<Type>();
+    List<Type> fields = new ArrayList<>();
     fields.add(new PrimitiveType(OPTIONAL, BOOLEAN, "field"));
     GroupType expected = new GroupType(REQUIRED, "myList", OriginalType.LIST,
         new GroupType(REPEATED,
@@ -1093,7 +1093,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testListOfOptionalGroup() {
-    List<Type> fields = new ArrayList<Type>();
+    List<Type> fields = new ArrayList<>();
     fields.add(new PrimitiveType(OPTIONAL, BOOLEAN, "field"));
     GroupType expected = new GroupType(REQUIRED, "myList", OriginalType.LIST,
         new GroupType(REPEATED,
@@ -1109,7 +1109,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testRequiredNestedList() {
-    List<Type> fields = new ArrayList<Type>();
+    List<Type> fields = new ArrayList<>();
     fields.add(new GroupType(REQUIRED, "element", OriginalType.LIST,
         new GroupType(REPEATED,
             "list",
@@ -1130,7 +1130,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testOptionalNestedList() {
-    List<Type> fields = new ArrayList<Type>();
+    List<Type> fields = new ArrayList<>();
     fields.add(new GroupType(OPTIONAL, "element", OriginalType.LIST,
         new GroupType(REPEATED,
             "list",
@@ -1151,7 +1151,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testRequiredListWithinGroup() {
-    List<Type> fields = new ArrayList<Type>();
+    List<Type> fields = new ArrayList<>();
     fields.add(new GroupType(REQUIRED, "element", OriginalType.LIST,
         new GroupType(REPEATED,
             "list",
@@ -1166,7 +1166,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testOptionalListWithinGroup() {
-    List<Type> fields = new ArrayList<Type>();
+    List<Type> fields = new ArrayList<>();
     fields.add(new GroupType(OPTIONAL, "element", OriginalType.LIST,
         new GroupType(REPEATED,
             "list",
@@ -1181,7 +1181,7 @@ public class TestTypeBuilders {
 
   @Test
   public void testOptionalListWithinGroupWithReqElement() {
-    List<Type> fields = new ArrayList<Type>();
+    List<Type> fields = new ArrayList<>();
     fields.add(new GroupType(OPTIONAL, "element", OriginalType.LIST,
         new GroupType(REPEATED,
             "list",
@@ -1197,11 +1197,11 @@ public class TestTypeBuilders {
 
   @Test
   public void testRequiredMapWithinList() {
-    List<Type> innerFields = new ArrayList<Type>();
+    List<Type> innerFields = new ArrayList<>();
     innerFields.add(new PrimitiveType(REQUIRED, DOUBLE, "key"));
     innerFields.add(new PrimitiveType(REQUIRED, INT32, "value"));
 
-    List<Type> fields = new ArrayList<Type>();
+    List<Type> fields = new ArrayList<>();
     fields.add(new GroupType(REQUIRED, "element", OriginalType.MAP,
         new GroupType(REPEATED,
             "map",
@@ -1223,11 +1223,11 @@ public class TestTypeBuilders {
 
   @Test
   public void testOptionalMapWithinList() {
-    List<Type> innerFields = new ArrayList<Type>();
+    List<Type> innerFields = new ArrayList<>();
     innerFields.add(new PrimitiveType(REQUIRED, DOUBLE, "key"));
     innerFields.add(new PrimitiveType(REQUIRED, INT32, "value"));
 
-    List<Type> fields = new ArrayList<Type>();
+    List<Type> fields = new ArrayList<>();
     fields.add(new GroupType(OPTIONAL, "element", OriginalType.MAP,
         new GroupType(REPEATED,
             "map",