http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql/fun/SqlTimestampDiffFunction.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/sql/fun/SqlTimestampDiffFunction.java 
b/core/src/main/java/org/apache/calcite/sql/fun/SqlTimestampDiffFunction.java
index d4aefa0..1a95317 100644
--- 
a/core/src/main/java/org/apache/calcite/sql/fun/SqlTimestampDiffFunction.java
+++ 
b/core/src/main/java/org/apache/calcite/sql/fun/SqlTimestampDiffFunction.java
@@ -17,12 +17,10 @@
 package org.apache.calcite.sql.fun;
 
 import org.apache.calcite.avatica.util.TimeUnit;
-import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rel.type.RelDataTypeFactory;
 import org.apache.calcite.sql.SqlFunction;
 import org.apache.calcite.sql.SqlFunctionCategory;
 import org.apache.calcite.sql.SqlKind;
-import org.apache.calcite.sql.SqlOperatorBinding;
 import org.apache.calcite.sql.type.OperandTypes;
 import org.apache.calcite.sql.type.SqlReturnTypeInference;
 import org.apache.calcite.sql.type.SqlTypeFamily;
@@ -58,18 +56,16 @@ import org.apache.calcite.sql.type.SqlTypeName;
 class SqlTimestampDiffFunction extends SqlFunction {
   /** Creates a SqlTimestampDiffFunction. */
   private static final SqlReturnTypeInference RETURN_TYPE_INFERENCE =
-      new SqlReturnTypeInference() {
-        public RelDataType inferReturnType(SqlOperatorBinding opBinding) {
-          final RelDataTypeFactory typeFactory = opBinding.getTypeFactory();
-          SqlTypeName sqlTypeName =
-              opBinding.getOperandLiteralValue(0, TimeUnit.class) == 
TimeUnit.NANOSECOND
-                  ? SqlTypeName.BIGINT
-                  : SqlTypeName.INTEGER;
-          return typeFactory.createTypeWithNullability(
-              typeFactory.createSqlType(sqlTypeName),
-              opBinding.getOperandType(1).isNullable()
-              || opBinding.getOperandType(2).isNullable());
-        }
+      opBinding -> {
+        final RelDataTypeFactory typeFactory = opBinding.getTypeFactory();
+        SqlTypeName sqlTypeName =
+            opBinding.getOperandLiteralValue(0, TimeUnit.class) == 
TimeUnit.NANOSECOND
+                ? SqlTypeName.BIGINT
+                : SqlTypeName.INTEGER;
+        return typeFactory.createTypeWithNullability(
+            typeFactory.createSqlType(sqlTypeName),
+            opBinding.getOperandType(1).isNullable()
+            || opBinding.getOperandType(2).isNullable());
       };
 
   SqlTimestampDiffFunction() {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql/parser/SqlAbstractParserImpl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/sql/parser/SqlAbstractParserImpl.java 
b/core/src/main/java/org/apache/calcite/sql/parser/SqlAbstractParserImpl.java
index 0785909..12a8dcc 100644
--- 
a/core/src/main/java/org/apache/calcite/sql/parser/SqlAbstractParserImpl.java
+++ 
b/core/src/main/java/org/apache/calcite/sql/parser/SqlAbstractParserImpl.java
@@ -570,20 +570,20 @@ public abstract class SqlAbstractParserImpl {
    * Default implementation of the {@link Metadata} interface.
    */
   public static class MetadataImpl implements Metadata {
-    private final Set<String> reservedFunctionNames = new HashSet<String>();
-    private final Set<String> contextVariableNames = new HashSet<String>();
-    private final Set<String> nonReservedKeyWordSet = new HashSet<String>();
+    private final Set<String> reservedFunctionNames = new HashSet<>();
+    private final Set<String> contextVariableNames = new HashSet<>();
+    private final Set<String> nonReservedKeyWordSet = new HashSet<>();
 
     /**
      * Set of all tokens.
      */
-    private final SortedSet<String> tokenSet = new TreeSet<String>();
+    private final SortedSet<String> tokenSet = new TreeSet<>();
 
     /**
      * Immutable list of all tokens, in alphabetical order.
      */
     private final List<String> tokenList;
-    private final Set<String> reservedWords = new HashSet<String>();
+    private final Set<String> reservedWords = new HashSet<>();
     private final String sql92ReservedWords;
 
     /**
@@ -597,7 +597,7 @@ public abstract class SqlAbstractParserImpl {
       initList(sqlParser, nonReservedKeyWordSet, "NonReservedKeyWord");
       tokenList = ImmutableList.copyOf(tokenSet);
       sql92ReservedWords = constructSql92ReservedWordList();
-      Set<String> reservedWordSet = new TreeSet<String>();
+      Set<String> reservedWordSet = new TreeSet<>();
       reservedWordSet.addAll(tokenSet);
       reservedWordSet.removeAll(nonReservedKeyWordSet);
       reservedWords.addAll(reservedWordSet);
@@ -670,7 +670,7 @@ public abstract class SqlAbstractParserImpl {
      */
     private String constructSql92ReservedWordList() {
       StringBuilder sb = new StringBuilder();
-      TreeSet<String> jdbcReservedSet = new TreeSet<String>();
+      TreeSet<String> jdbcReservedSet = new TreeSet<>();
       jdbcReservedSet.addAll(tokenSet);
       jdbcReservedSet.removeAll(SQL_92_RESERVED_WORD_SET);
       jdbcReservedSet.removeAll(nonReservedKeyWordSet);

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql/parser/SqlParseException.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/sql/parser/SqlParseException.java 
b/core/src/main/java/org/apache/calcite/sql/parser/SqlParseException.java
index 9900200..09dc441 100644
--- a/core/src/main/java/org/apache/calcite/sql/parser/SqlParseException.java
+++ b/core/src/main/java/org/apache/calcite/sql/parser/SqlParseException.java
@@ -123,7 +123,7 @@ public class SqlParseException extends Exception
     for (int[] expectedTokenSequence : expectedTokenSequences) {
       maxLength = Math.max(expectedTokenSequence.length, maxLength);
     }
-    final Set<String> set = new TreeSet<String>();
+    final Set<String> set = new TreeSet<>();
     for (int[] expectedTokenSequence : expectedTokenSequences) {
       if (expectedTokenSequence.length == maxLength) {
         set.add(

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java 
b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
index c774c61..dea7d8c 100644
--- a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
+++ b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
@@ -144,7 +144,7 @@ public abstract class SqlTypeUtil {
       List<SqlNode> operands) {
     // NOTE: Do not use an AbstractList. Don't want to be lazy. We want
     // errors.
-    List<RelDataType> types = new ArrayList<RelDataType>();
+    List<RelDataType> types = new ArrayList<>();
     for (SqlNode operand : operands) {
       types.add(validator.deriveType(scope, operand));
     }
@@ -885,7 +885,7 @@ public abstract class SqlTypeUtil {
     if (!recordType.isStruct()) {
       return recordType;
     }
-    List<RelDataTypeField> fieldList = new ArrayList<RelDataTypeField>();
+    List<RelDataTypeField> fieldList = new ArrayList<>();
     boolean nested =
         flattenFields(
             typeFactory,
@@ -895,8 +895,8 @@ public abstract class SqlTypeUtil {
     if (!nested) {
       return recordType;
     }
-    List<RelDataType> types = new ArrayList<RelDataType>();
-    List<String> fieldNames = new ArrayList<String>();
+    List<RelDataType> types = new ArrayList<>();
+    List<String> fieldNames = new ArrayList<>();
     int i = -1;
     for (RelDataTypeField field : fieldList) {
       ++i;

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql/type/TableFunctionReturnTypeInference.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/sql/type/TableFunctionReturnTypeInference.java
 
b/core/src/main/java/org/apache/calcite/sql/type/TableFunctionReturnTypeInference.java
index 7702c03..4201349 100644
--- 
a/core/src/main/java/org/apache/calcite/sql/type/TableFunctionReturnTypeInference.java
+++ 
b/core/src/main/java/org/apache/calcite/sql/type/TableFunctionReturnTypeInference.java
@@ -63,11 +63,11 @@ public class TableFunctionReturnTypeInference
 
   public RelDataType inferReturnType(
       SqlOperatorBinding opBinding) {
-    columnMappings = new HashSet<RelColumnMapping>();
+    columnMappings = new HashSet<>();
     RelDataType unexpandedOutputType =
         protoType.apply(opBinding.getTypeFactory());
-    List<RelDataType> expandedOutputTypes = new ArrayList<RelDataType>();
-    List<String> expandedFieldNames = new ArrayList<String>();
+    List<RelDataType> expandedOutputTypes = new ArrayList<>();
+    List<String> expandedFieldNames = new ArrayList<>();
     for (RelDataTypeField field : unexpandedOutputType.getFieldList()) {
       RelDataType fieldType = field.getType();
       String fieldName = field.getName();
@@ -96,7 +96,7 @@ public class TableFunctionReturnTypeInference
 
       // Translate to actual argument type.
       boolean isRowOp = false;
-      List<String> columnNames = new ArrayList<String>();
+      List<String> columnNames = new ArrayList<>();
       RelDataType cursorType = opBinding.getCursorOperand(paramOrdinal);
       if (cursorType == null) {
         isRowOp = true;

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql/util/ListSqlOperatorTable.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/sql/util/ListSqlOperatorTable.java 
b/core/src/main/java/org/apache/calcite/sql/util/ListSqlOperatorTable.java
index fe0aea0..2b36f36 100644
--- a/core/src/main/java/org/apache/calcite/sql/util/ListSqlOperatorTable.java
+++ b/core/src/main/java/org/apache/calcite/sql/util/ListSqlOperatorTable.java
@@ -38,7 +38,7 @@ public class ListSqlOperatorTable implements SqlOperatorTable 
{
   //~ Constructors -----------------------------------------------------------
 
   public ListSqlOperatorTable() {
-    this(new ArrayList<SqlOperator>());
+    this(new ArrayList<>());
   }
 
   public ListSqlOperatorTable(List<SqlOperator> operatorList) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql/util/SqlShuttle.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/sql/util/SqlShuttle.java 
b/core/src/main/java/org/apache/calcite/sql/util/SqlShuttle.java
index 064883b..8d4f8a3 100644
--- a/core/src/main/java/org/apache/calcite/sql/util/SqlShuttle.java
+++ b/core/src/main/java/org/apache/calcite/sql/util/SqlShuttle.java
@@ -71,7 +71,7 @@ public class SqlShuttle extends SqlBasicVisitor<SqlNode> {
     boolean update = false;
     List<SqlNode> exprs = nodeList.getList();
     int exprCount = exprs.size();
-    List<SqlNode> newList = new ArrayList<SqlNode>(exprCount);
+    List<SqlNode> newList = new ArrayList<>(exprCount);
     for (SqlNode operand : exprs) {
       SqlNode clonedOperand;
       if (operand == null) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql/validate/AliasNamespace.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/sql/validate/AliasNamespace.java 
b/core/src/main/java/org/apache/calcite/sql/validate/AliasNamespace.java
index a2192c9..c7afbca 100644
--- a/core/src/main/java/org/apache/calcite/sql/validate/AliasNamespace.java
+++ b/core/src/main/java/org/apache/calcite/sql/validate/AliasNamespace.java
@@ -64,7 +64,7 @@ public class AliasNamespace extends AbstractNamespace {
   //~ Methods ----------------------------------------------------------------
 
   protected RelDataType validateImpl(RelDataType targetRowType) {
-    final List<String> nameList = new ArrayList<String>();
+    final List<String> nameList = new ArrayList<>();
     final List<SqlNode> operands = call.getOperandList();
     final SqlValidatorNamespace childNs =
         validator.getNamespace(operands.get(0));
@@ -87,7 +87,7 @@ public class AliasNamespace extends AbstractNamespace {
           RESOURCE.aliasListDegree(rowType.getFieldCount(), getString(rowType),
               nameList.size()));
     }
-    final List<RelDataType> typeList = new ArrayList<RelDataType>();
+    final List<RelDataType> typeList = new ArrayList<>();
     for (RelDataTypeField field : rowType.getFieldList()) {
       typeList.add(field.getType());
     }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql/validate/SqlNameMatchers.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/sql/validate/SqlNameMatchers.java 
b/core/src/main/java/org/apache/calcite/sql/validate/SqlNameMatchers.java
index 99d85ad..d4e21fa 100644
--- a/core/src/main/java/org/apache/calcite/sql/validate/SqlNameMatchers.java
+++ b/core/src/main/java/org/apache/calcite/sql/validate/SqlNameMatchers.java
@@ -134,7 +134,7 @@ public class SqlNameMatchers {
 
     public Set<String> createSet() {
       return isCaseSensitive()
-          ? new LinkedHashSet<String>()
+          ? new LinkedHashSet<>()
           : new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
     }
   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorImpl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorImpl.java 
b/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorImpl.java
index 70b8d97..f7ce4d6 100644
--- a/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorImpl.java
+++ b/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorImpl.java
@@ -4908,7 +4908,7 @@ public class SqlValidatorImpl implements 
SqlValidatorWithHints {
     if (orderBy != null) {
       for (SqlNode node : orderBy) {
         node.validate(this, scope);
-        SqlIdentifier identifier = null;
+        SqlIdentifier identifier;
         if (node instanceof SqlBasicCall) {
           identifier = (SqlIdentifier) ((SqlBasicCall) node).getOperands()[0];
         } else {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java 
b/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java
index 9deb7e0..c347b64 100644
--- a/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java
+++ b/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java
@@ -1121,6 +1121,7 @@ public class RelDecorrelator implements ReflectiveVisitor 
{
     int oldLeftFieldCount = oldLeft.getRowType().getFieldCount();
 
     int oldRightFieldCount = oldRight.getRowType().getFieldCount();
+    //noinspection AssertWithSideEffects
     assert rel.getRowType().getFieldCount()
         == oldLeftFieldCount + oldRightFieldCount;
 
@@ -1180,6 +1181,7 @@ public class RelDecorrelator implements ReflectiveVisitor 
{
     int newLeftFieldCount = leftFrame.r.getRowType().getFieldCount();
 
     int oldRightFieldCount = oldRight.getRowType().getFieldCount();
+    //noinspection AssertWithSideEffects
     assert rel.getRowType().getFieldCount()
         == oldLeftFieldCount + oldRightFieldCount;
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java 
b/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
index 2f12223..dff1d4f 100644
--- a/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
+++ b/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
@@ -2217,7 +2217,7 @@ public class SqlToRelConverter {
       SqlIdentifier left = (SqlIdentifier) operands.get(0);
       patternVarsSet.add(left.getSimple());
       SqlNodeList rights = (SqlNodeList) operands.get(1);
-      final TreeSet<String> list = new TreeSet<String>();
+      final TreeSet<String> list = new TreeSet<>();
       for (SqlNode right : rights) {
         assert right instanceof SqlIdentifier;
         list.add(((SqlIdentifier) right).getSimple());
@@ -4986,7 +4986,7 @@ public class SqlToRelConverter {
       int filterArg = -1;
       final List<RelDataType> argTypes =
           call.getOperator() instanceof SqlCountAggFunction
-              ? new ArrayList<RelDataType>(call.getOperandList().size())
+              ? new ArrayList<>(call.getOperandList().size())
               : null;
       try {
         // switch out of agg mode

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/BarfingInvocationHandler.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/util/BarfingInvocationHandler.java 
b/core/src/main/java/org/apache/calcite/util/BarfingInvocationHandler.java
index 94c50a6..c472b0d 100644
--- a/core/src/main/java/org/apache/calcite/util/BarfingInvocationHandler.java
+++ b/core/src/main/java/org/apache/calcite/util/BarfingInvocationHandler.java
@@ -44,15 +44,13 @@ public class BarfingInvocationHandler implements 
InvocationHandler {
       Method method,
       Object[] args) throws Throwable {
     Class clazz = getClass();
-    Method matchingMethod = null;
+    Method matchingMethod;
     try {
       matchingMethod =
           clazz.getMethod(
               method.getName(),
               method.getParameterTypes());
-    } catch (NoSuchMethodException e) {
-      throw noMethod(method);
-    } catch (SecurityException e) {
+    } catch (NoSuchMethodException | SecurityException e) {
       throw noMethod(method);
     }
     if (matchingMethod.getReturnType() != method.getReturnType()) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/Benchmark.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/Benchmark.java 
b/core/src/main/java/org/apache/calcite/util/Benchmark.java
index 513123e..58edafb 100644
--- a/core/src/main/java/org/apache/calcite/util/Benchmark.java
+++ b/core/src/main/java/org/apache/calcite/util/Benchmark.java
@@ -74,7 +74,7 @@ public class Benchmark {
    */
   public static class Statistician {
     private final String desc;
-    private final List<Long> durations = new ArrayList<Long>();
+    private final List<Long> durations = new ArrayList<>();
 
     public Statistician(String desc) {
       super();

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/CaseInsensitiveComparator.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/util/CaseInsensitiveComparator.java 
b/core/src/main/java/org/apache/calcite/util/CaseInsensitiveComparator.java
index ad28da1..c5bf7fd 100644
--- a/core/src/main/java/org/apache/calcite/util/CaseInsensitiveComparator.java
+++ b/core/src/main/java/org/apache/calcite/util/CaseInsensitiveComparator.java
@@ -27,8 +27,8 @@ import java.util.Comparator;
  *
  * <p>In a collection sorted on this comparator, we can find case-insensitive 
matches
  * for a given string using
- * {@link 
org.apache.calcite.util.CaseInsensitiveComparator#floorKey(java.lang.String)}
- * and {@link 
org.apache.calcite.util.CaseInsensitiveComparator#ceilingKey(java.lang.String)}.
+ * {@link #floorKey(java.lang.String)}
+ * and {@link #ceilingKey(java.lang.String)}.
  */
 class CaseInsensitiveComparator implements Comparator {
   static final CaseInsensitiveComparator COMPARATOR = new 
CaseInsensitiveComparator();
@@ -50,11 +50,11 @@ class CaseInsensitiveComparator implements Comparator {
     }
   }
 
-  static Object floorKey(String key) {
+  Object floorKey(String key) {
     return new Key(key, -1);
   }
 
-  static Object ceilingKey(String key) {
+  Object ceilingKey(String key) {
     return new Key(key, 1);
   }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/CompositeList.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/CompositeList.java 
b/core/src/main/java/org/apache/calcite/util/CompositeList.java
index be38249..3050a47 100644
--- a/core/src/main/java/org/apache/calcite/util/CompositeList.java
+++ b/core/src/main/java/org/apache/calcite/util/CompositeList.java
@@ -69,7 +69,7 @@ public class CompositeList<T> extends AbstractList<T> {
    */
   public static <T> CompositeList<T> ofCopy(Iterable<List<T>> lists) {
     final ImmutableList<List<T>> list = ImmutableList.copyOf(lists);
-    return new CompositeList<T>(list);
+    return new CompositeList<>(list);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/CompositeMap.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/CompositeMap.java 
b/core/src/main/java/org/apache/calcite/util/CompositeMap.java
index 66a3e40..f4d2b47 100644
--- a/core/src/main/java/org/apache/calcite/util/CompositeMap.java
+++ b/core/src/main/java/org/apache/calcite/util/CompositeMap.java
@@ -40,10 +40,9 @@ public class CompositeMap<K, V> implements Map<K, V> {
 
   /** Creates a CompositeMap. */
   // Would like to use '@SafeVarargs' but JDK 1.6 doesn't support it.
-  @SuppressWarnings("varargs")
-  public static <K, V> CompositeMap<K, V> of(Map<K, V> map0,
+  @SafeVarargs public static <K, V> CompositeMap<K, V> of(Map<K, V> map0,
       Map<K, V>... maps) {
-    return new CompositeMap<K, V>(list(map0, maps));
+    return new CompositeMap<>(list(map0, maps));
   }
 
   private static <E> ImmutableList<E> list(E e, E[] es) {
@@ -118,7 +117,7 @@ public class CompositeMap<K, V> implements Map<K, V> {
   }
 
   public Set<K> keySet() {
-    final Set<K> keys = new LinkedHashSet<K>();
+    final Set<K> keys = new LinkedHashSet<>();
     for (Map<K, V> map : maps) {
       keys.addAll(map.keySet());
     }
@@ -127,7 +126,7 @@ public class CompositeMap<K, V> implements Map<K, V> {
 
   private Map<K, V> combinedMap() {
     ImmutableMap.Builder<K, V> builder = ImmutableMap.builder();
-    final Set<K> keys = new LinkedHashSet<K>();
+    final Set<K> keys = new LinkedHashSet<>();
     for (Map<K, V> map : maps) {
       for (Entry<K, V> entry : map.entrySet()) {
         if (keys.add(entry.getKey())) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/CompoundClosableAllocation.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/util/CompoundClosableAllocation.java 
b/core/src/main/java/org/apache/calcite/util/CompoundClosableAllocation.java
index 283f064..a4aef8a 100644
--- a/core/src/main/java/org/apache/calcite/util/CompoundClosableAllocation.java
+++ b/core/src/main/java/org/apache/calcite/util/CompoundClosableAllocation.java
@@ -36,7 +36,7 @@ public class CompoundClosableAllocation implements 
ClosableAllocationOwner {
   //~ Constructors -----------------------------------------------------------
 
   public CompoundClosableAllocation() {
-    allocations = new LinkedList<ClosableAllocation>();
+    allocations = new LinkedList<>();
   }
 
   //~ Methods ----------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/DelegatingInvocationHandler.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/util/DelegatingInvocationHandler.java 
b/core/src/main/java/org/apache/calcite/util/DelegatingInvocationHandler.java
index 8df789f..b350c93 100644
--- 
a/core/src/main/java/org/apache/calcite/util/DelegatingInvocationHandler.java
+++ 
b/core/src/main/java/org/apache/calcite/util/DelegatingInvocationHandler.java
@@ -62,9 +62,7 @@ public abstract class DelegatingInvocationHandler implements 
InvocationHandler {
           clazz.getMethod(
               method.getName(),
               method.getParameterTypes());
-    } catch (NoSuchMethodException e) {
-      matchingMethod = null;
-    } catch (SecurityException e) {
+    } catch (NoSuchMethodException | SecurityException e) {
       matchingMethod = null;
     }
     try {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/Holder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/Holder.java 
b/core/src/main/java/org/apache/calcite/util/Holder.java
index 938fb4d..64884de 100644
--- a/core/src/main/java/org/apache/calcite/util/Holder.java
+++ b/core/src/main/java/org/apache/calcite/util/Holder.java
@@ -48,7 +48,7 @@ public class Holder<E> {
 
   /** Creates a holder containing a given value. */
   public static <E> Holder<E> of(E e) {
-    return new Holder<E>(e);
+    return new Holder<>(e);
   }
 }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/ImmutableNullableList.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/util/ImmutableNullableList.java 
b/core/src/main/java/org/apache/calcite/util/ImmutableNullableList.java
index 109153d..b4e53ab 100644
--- a/core/src/main/java/org/apache/calcite/util/ImmutableNullableList.java
+++ b/core/src/main/java/org/apache/calcite/util/ImmutableNullableList.java
@@ -67,7 +67,7 @@ public class ImmutableNullableList<E> extends AbstractList<E> 
{
       if (object == null) {
         final Object[] objects = elements.toArray();
         //noinspection unchecked
-        return new ImmutableNullableList<E>((E[]) objects);
+        return new ImmutableNullableList<>((E[]) objects);
       }
     }
     return ImmutableList.copyOf(elements);
@@ -112,7 +112,7 @@ public class ImmutableNullableList<E> extends 
AbstractList<E> {
     for (E object : elements) {
       if (object == null) {
         //noinspection unchecked
-        return new ImmutableNullableList<E>(elements.clone());
+        return new ImmutableNullableList<>(elements.clone());
       }
     }
     // There are no nulls. ImmutableList is better.
@@ -181,7 +181,7 @@ public class ImmutableNullableList<E> extends 
AbstractList<E> {
     array[7] = e8;
     System.arraycopy(others, 0, array, 8, others.length);
     //noinspection unchecked
-    return new ImmutableNullableList<E>((E[]) array);
+    return new ImmutableNullableList<>((E[]) array);
   }
 
   @Override public E get(int index) {
@@ -197,7 +197,7 @@ public class ImmutableNullableList<E> extends 
AbstractList<E> {
    * created by the {@link Builder} constructor.
    */
   public static <E> Builder<E> builder() {
-    return new Builder<E>();
+    return new Builder<>();
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/JsonBuilder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/JsonBuilder.java 
b/core/src/main/java/org/apache/calcite/util/JsonBuilder.java
index 6f42300..0156d36 100644
--- a/core/src/main/java/org/apache/calcite/util/JsonBuilder.java
+++ b/core/src/main/java/org/apache/calcite/util/JsonBuilder.java
@@ -33,14 +33,14 @@ public class JsonBuilder {
    */
   public Map<String, Object> map() {
     // Use LinkedHashMap to preserve order.
-    return new LinkedHashMap<String, Object>();
+    return new LinkedHashMap<>();
   }
 
   /**
    * Creates a JSON object (represented by a {@link List}).
    */
   public List<Object> list() {
-    return new ArrayList<Object>();
+    return new ArrayList<>();
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/Permutation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/Permutation.java 
b/core/src/main/java/org/apache/calcite/util/Permutation.java
index 1a2ede1..92d37e5 100644
--- a/core/src/main/java/org/apache/calcite/util/Permutation.java
+++ b/core/src/main/java/org/apache/calcite/util/Permutation.java
@@ -471,6 +471,7 @@ public class Permutation implements Mapping, 
Mappings.TargetMapping {
         assert !fail : "target " + target + " occurs more than once";
         return false;
       }
+      occurCount[target]++;
     }
     return true;
   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/UnmodifiableArrayList.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/util/UnmodifiableArrayList.java 
b/core/src/main/java/org/apache/calcite/util/UnmodifiableArrayList.java
index d7a58fd..9778c42 100644
--- a/core/src/main/java/org/apache/calcite/util/UnmodifiableArrayList.java
+++ b/core/src/main/java/org/apache/calcite/util/UnmodifiableArrayList.java
@@ -43,7 +43,7 @@ public class UnmodifiableArrayList<E>
   }
 
   public static <E> UnmodifiableArrayList<E> of(E... elements) {
-    return new UnmodifiableArrayList<E>(elements);
+    return new UnmodifiableArrayList<>(elements);
   }
 
   @Override public E get(int index) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/Util.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/Util.java 
b/core/src/main/java/org/apache/calcite/util/Util.java
index 32e5e7b..1dcb567 100644
--- a/core/src/main/java/org/apache/calcite/util/Util.java
+++ b/core/src/main/java/org/apache/calcite/util/Util.java
@@ -1571,7 +1571,7 @@ public class Util {
    * @return A list whose members are of the desired type.
    */
   public static <E> List<E> cast(List<? super E> list, Class<E> clazz) {
-    return new CastingList<E>(list, clazz);
+    return new CastingList<>(list, clazz);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/XmlOutput.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/XmlOutput.java 
b/core/src/main/java/org/apache/calcite/util/XmlOutput.java
index 1a32205..8cd5671 100644
--- a/core/src/main/java/org/apache/calcite/util/XmlOutput.java
+++ b/core/src/main/java/org/apache/calcite/util/XmlOutput.java
@@ -547,7 +547,7 @@ public class XmlOutput {
      * Identity transform
      */
     StringEscaper() {
-      translationVector = new ArrayList<String>();
+      translationVector = new ArrayList<>();
     }
 
     /**
@@ -597,7 +597,7 @@ public class XmlOutput {
         } else {
           if (sb == null) {
             sb = new StringBuilder(n * 2);
-            sb.append(s.substring(0, i));
+            sb.append(s, 0, i);
           }
           sb.append(escape);
         }
@@ -613,7 +613,7 @@ public class XmlOutput {
     protected StringEscaper clone() {
       StringEscaper clone = new StringEscaper();
       if (translationVector != null) {
-        clone.translationVector = new ArrayList<String>(translationVector);
+        clone.translationVector = new ArrayList<>(translationVector);
       }
       if (translationTable != null) {
         clone.translationTable = translationTable.clone();

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/graph/BreadthFirstIterator.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/util/graph/BreadthFirstIterator.java 
b/core/src/main/java/org/apache/calcite/util/graph/BreadthFirstIterator.java
index 3a7260f..712516e 100644
--- a/core/src/main/java/org/apache/calcite/util/graph/BreadthFirstIterator.java
+++ b/core/src/main/java/org/apache/calcite/util/graph/BreadthFirstIterator.java
@@ -31,8 +31,8 @@ import java.util.Set;
 public class BreadthFirstIterator<V, E extends DefaultEdge>
     implements Iterator<V> {
   private final DirectedGraph<V, E> graph;
-  private final Deque<V> deque = new ArrayDeque<V>();
-  private final Set<V> set = new HashSet<V>();
+  private final Deque<V> deque = new ArrayDeque<>();
+  private final Set<V> set = new HashSet<>();
 
   public BreadthFirstIterator(DirectedGraph<V, E> graph, V root) {
     this.graph = graph;
@@ -41,13 +41,13 @@ public class BreadthFirstIterator<V, E extends DefaultEdge>
 
   public static <V, E extends DefaultEdge> Iterable<V> of(
       final DirectedGraph<V, E> graph, final V root) {
-    return () -> new BreadthFirstIterator<V, E>(graph, root);
+    return () -> new BreadthFirstIterator<>(graph, root);
   }
 
   /** Populates a set with the nodes reachable from a given node. */
   public static <V, E extends DefaultEdge> void reachable(Set<V> set,
       final DirectedGraph<V, E> graph, final V root) {
-    final Deque<V> deque = new ArrayDeque<V>();
+    final Deque<V> deque = new ArrayDeque<>();
     deque.add(root);
     set.add(root);
     while (!deque.isEmpty()) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/graph/CycleDetector.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/util/graph/CycleDetector.java 
b/core/src/main/java/org/apache/calcite/util/graph/CycleDetector.java
index 4e9fcc5..e411e58 100644
--- a/core/src/main/java/org/apache/calcite/util/graph/CycleDetector.java
+++ b/core/src/main/java/org/apache/calcite/util/graph/CycleDetector.java
@@ -32,7 +32,7 @@ public class CycleDetector<V, E extends DefaultEdge> {
   }
 
   public Set<V> findCycles() {
-    return new TopologicalOrderIterator<V, E>(graph).findCycles();
+    return new TopologicalOrderIterator<>(graph).findCycles();
   }
 }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/graph/DefaultDirectedGraph.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/util/graph/DefaultDirectedGraph.java 
b/core/src/main/java/org/apache/calcite/util/graph/DefaultDirectedGraph.java
index 77eef3e..1da04d9 100644
--- a/core/src/main/java/org/apache/calcite/util/graph/DefaultDirectedGraph.java
+++ b/core/src/main/java/org/apache/calcite/util/graph/DefaultDirectedGraph.java
@@ -19,7 +19,6 @@ package org.apache.calcite.util.graph;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -34,9 +33,9 @@ import java.util.Set;
  */
 public class DefaultDirectedGraph<V, E extends DefaultEdge>
     implements DirectedGraph<V, E> {
-  final Set<E> edges = new LinkedHashSet<E>();
+  final Set<E> edges = new LinkedHashSet<>();
   final Map<V, VertexInfo<V, E>> vertexMap =
-      new LinkedHashMap<V, VertexInfo<V, E>>();
+      new LinkedHashMap<>();
   final EdgeFactory<V, E> edgeFactory;
 
   /** Creates a graph. */
@@ -50,7 +49,7 @@ public class DefaultDirectedGraph<V, E extends DefaultEdge>
 
   public static <V, E extends DefaultEdge> DefaultDirectedGraph<V, E> create(
       EdgeFactory<V, E> edgeFactory) {
-    return new DefaultDirectedGraph<V, E>(edgeFactory);
+    return new DefaultDirectedGraph<>(edgeFactory);
   }
 
   @Override public String toString() {
@@ -68,7 +67,7 @@ public class DefaultDirectedGraph<V, E extends DefaultEdge>
     if (vertexMap.containsKey(vertex)) {
       return false;
     } else {
-      vertexMap.put(vertex, new VertexInfo<V, E>());
+      vertexMap.put(vertex, new VertexInfo<>());
       return true;
     }
   }
@@ -127,14 +126,8 @@ public class DefaultDirectedGraph<V, E extends DefaultEdge>
   public void removeAllVertices(Collection<V> collection) {
     vertexMap.keySet().removeAll(collection);
     for (VertexInfo<V, E> info : vertexMap.values()) {
-      for (Iterator<E> iterator = info.outEdges.iterator();
-           iterator.hasNext();) {
-        E next = iterator.next();
-        //noinspection SuspiciousMethodCalls
-        if (collection.contains(next.target)) {
-          iterator.remove();
-        }
-      }
+      //noinspection SuspiciousMethodCalls
+      info.outEdges.removeIf(next -> collection.contains(next.target));
     }
   }
 
@@ -143,7 +136,7 @@ public class DefaultDirectedGraph<V, E extends DefaultEdge>
   }
 
   public List<E> getInwardEdges(V target) {
-    final ArrayList<E> list = new ArrayList<E>();
+    final ArrayList<E> list = new ArrayList<>();
     for (VertexInfo<V, E> info : vertexMap.values()) {
       for (E edge : info.outEdges) {
         if (edge.target.equals(target)) {
@@ -171,7 +164,7 @@ public class DefaultDirectedGraph<V, E extends DefaultEdge>
    * @param <E> Edge type
    */
   static class VertexInfo<V, E> {
-    public List<E> outEdges = new ArrayList<E>();
+    public List<E> outEdges = new ArrayList<>();
   }
 }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/graph/DepthFirstIterator.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/util/graph/DepthFirstIterator.java 
b/core/src/main/java/org/apache/calcite/util/graph/DepthFirstIterator.java
index 50d6b95..a25c84b 100644
--- a/core/src/main/java/org/apache/calcite/util/graph/DepthFirstIterator.java
+++ b/core/src/main/java/org/apache/calcite/util/graph/DepthFirstIterator.java
@@ -57,7 +57,7 @@ public class DepthFirstIterator<V, E extends DefaultEdge>
   /** Populates a collection with the nodes reachable from a given node. */
   public static <V, E extends DefaultEdge> void reachable(Collection<V> list,
       final DirectedGraph<V, E> graph, final V start) {
-    buildListRecurse(list, new HashSet<V>(), graph, start);
+    buildListRecurse(list, new HashSet<>(), graph, start);
   }
 
   private static <V, E extends DefaultEdge> void buildListRecurse(

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/graph/Graphs.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/graph/Graphs.java 
b/core/src/main/java/org/apache/calcite/util/graph/Graphs.java
index cd230c1..396f0cb 100644
--- a/core/src/main/java/org/apache/calcite/util/graph/Graphs.java
+++ b/core/src/main/java/org/apache/calcite/util/graph/Graphs.java
@@ -148,7 +148,7 @@ public class Graphs {
 //      }
       final List<V> prefix = new ArrayList<>();
       prefix.add(from);
-      findPathsExcluding(from, to, list, new HashSet<V>(), prefix);
+      findPathsExcluding(from, to, list, new HashSet<>(), prefix);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/graph/TopologicalOrderIterator.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/util/graph/TopologicalOrderIterator.java
 
b/core/src/main/java/org/apache/calcite/util/graph/TopologicalOrderIterator.java
index 69a6fdf..a5ee3cd 100644
--- 
a/core/src/main/java/org/apache/calcite/util/graph/TopologicalOrderIterator.java
+++ 
b/core/src/main/java/org/apache/calcite/util/graph/TopologicalOrderIterator.java
@@ -31,8 +31,8 @@ import java.util.Set;
  */
 public class TopologicalOrderIterator<V, E extends DefaultEdge>
     implements Iterator<V> {
-  final Map<V, int[]> countMap = new HashMap<V, int[]>();
-  final List<V> empties = new ArrayList<V>();
+  final Map<V, int[]> countMap = new HashMap<>();
+  final List<V> empties = new ArrayList<>();
   private final DefaultDirectedGraph<V, E> graph;
 
   public TopologicalOrderIterator(DirectedGraph<V, E> graph) {
@@ -42,7 +42,7 @@ public class TopologicalOrderIterator<V, E extends 
DefaultEdge>
 
   public static <V, E extends DefaultEdge> Iterable<V> of(
       final DirectedGraph<V, E> graph) {
-    return () -> new TopologicalOrderIterator<V, E>(graph);
+    return () -> new TopologicalOrderIterator<>(graph);
   }
 
   private void populate(Map<V, int[]> countMap, List<V> empties) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/javac/JaninoCompiler.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/util/javac/JaninoCompiler.java 
b/core/src/main/java/org/apache/calcite/util/javac/JaninoCompiler.java
index 74e542a..b94cce1 100644
--- a/core/src/main/java/org/apache/calcite/util/javac/JaninoCompiler.java
+++ b/core/src/main/java/org/apache/calcite/util/javac/JaninoCompiler.java
@@ -45,7 +45,6 @@ public class JaninoCompiler implements JavaCompiler {
   //~ Constructors -----------------------------------------------------------
 
   public JaninoCompiler() {
-    args = new JaninoCompilerArgs();
   }
 
   //~ Methods ----------------------------------------------------------------
@@ -67,7 +66,7 @@ public class JaninoCompiler implements JavaCompiler {
       parentClassLoader = classLoader;
     }
 
-    Map<String, byte[]> sourceMap = new HashMap<String, byte[]>();
+    Map<String, byte[]> sourceMap = new HashMap<>();
     sourceMap.put(
         ClassFile.getSourceResourceName(args.fullClassName),
         args.source.getBytes(StandardCharsets.UTF_8));

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/javac/JavaCompilerArgs.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/util/javac/JavaCompilerArgs.java 
b/core/src/main/java/org/apache/calcite/util/javac/JavaCompilerArgs.java
index e3b03d3..6a87bce 100644
--- a/core/src/main/java/org/apache/calcite/util/javac/JavaCompilerArgs.java
+++ b/core/src/main/java/org/apache/calcite/util/javac/JavaCompilerArgs.java
@@ -32,8 +32,8 @@ import java.util.StringTokenizer;
 public class JavaCompilerArgs {
   //~ Instance fields --------------------------------------------------------
 
-  List<String> argsList = new ArrayList<String>();
-  List<String> fileNameList = new ArrayList<String>();
+  List<String> argsList = new ArrayList<>();
+  List<String> fileNameList = new ArrayList<>();
 
   ClassLoader classLoader;
 
@@ -56,7 +56,7 @@ public class JavaCompilerArgs {
    * dir</i> -verbose [<i>file</i>...]"</code>
    */
   public void setString(String args) {
-    List<String> list = new ArrayList<String>();
+    List<String> list = new ArrayList<>();
     StringTokenizer tok = new StringTokenizer(args);
     while (tok.hasMoreTokens()) {
       list.add(tok.nextToken());

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/util/mapping/Mappings.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/mapping/Mappings.java 
b/core/src/main/java/org/apache/calcite/util/mapping/Mappings.java
index 8381d1c..e952b60 100644
--- a/core/src/main/java/org/apache/calcite/util/mapping/Mappings.java
+++ b/core/src/main/java/org/apache/calcite/util/mapping/Mappings.java
@@ -238,7 +238,7 @@ public abstract class Mappings {
           + " does not match list size " + list.size());
     }
     final int targetCount = mapping.getTargetCount();
-    final List<T> list2 = new ArrayList<T>(targetCount);
+    final List<T> list2 = new ArrayList<>(targetCount);
     for (int target = 0; target < targetCount; ++target) {
       final int source = mapping.getSource(target);
       list2.add(list.get(source));
@@ -1175,8 +1175,8 @@ public abstract class Mappings {
     public int size() {
       int size = 0;
       int[] a = sources.length < targets.length ? sources : targets;
-      for (int i = 0; i < a.length; i++) {
-        if (a[i] >= 0) {
+      for (int i1 : a) {
+        if (i1 >= 0) {
           ++size;
         }
       }
@@ -1568,8 +1568,8 @@ public abstract class Mappings {
 
     public int size() {
       int size = 0;
-      for (int i = 0; i < targets.length; i++) {
-        if (targets[i] >= 0) {
+      for (int target : targets) {
+        if (target >= 0) {
           ++size;
         }
       }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/test/java/org/apache/calcite/util/UtilTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/util/UtilTest.java 
b/core/src/test/java/org/apache/calcite/util/UtilTest.java
index db9f337..72a8554 100644
--- a/core/src/test/java/org/apache/calcite/util/UtilTest.java
+++ b/core/src/test/java/org/apache/calcite/util/UtilTest.java
@@ -1571,6 +1571,7 @@ public class UtilTest {
     checkHash(Double.MIN_VALUE);
   }
 
+  @SuppressWarnings("deprecation")
   public void checkHash(double v) {
     assertThat(Double.valueOf(v).hashCode(), is(Utilities.hashCode(v)));
     final long long_ = (long) v;

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/druid/src/main/java/org/apache/calcite/adapter/druid/DruidSqlCastConverter.java
----------------------------------------------------------------------
diff --git 
a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidSqlCastConverter.java
 
b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidSqlCastConverter.java
index 65a2ab4..e73464e 100644
--- 
a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidSqlCastConverter.java
+++ 
b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidSqlCastConverter.java
@@ -171,7 +171,7 @@ public class DruidSqlCastConverter implements 
DruidSqlOperatorConverter {
       return "yyyy-MM-dd";
     } else if (sqlTypeName == SqlTypeName.TIMESTAMP) {
       return "yyyy-MM-dd HH:mm:ss";
-    } else if (sqlTypeName == sqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE) {
+    } else if (sqlTypeName == SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE) {
       return "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
     } else {
       return null;

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/druid/src/main/java/org/apache/calcite/adapter/druid/DruidTable.java
----------------------------------------------------------------------
diff --git 
a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidTable.java 
b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidTable.java
index 1c402c0..42cdfe2 100644
--- a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidTable.java
+++ b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidTable.java
@@ -220,7 +220,7 @@ public class DruidTable extends AbstractTable implements 
TranslatableTable {
   public List<ComplexMetric> getComplexMetricsFrom(String alias) {
     return complexMetrics.containsKey(alias)
             ? complexMetrics.get(alias)
-            : new ArrayList<ComplexMetric>();
+            : new ArrayList<>();
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/druid/src/main/java/org/apache/calcite/adapter/druid/DruidTableFactory.java
----------------------------------------------------------------------
diff --git 
a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidTableFactory.java 
b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidTableFactory.java
index e714609..86b5faa 100644
--- 
a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidTableFactory.java
+++ 
b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidTableFactory.java
@@ -99,7 +99,7 @@ public class DruidTableFactory implements TableFactory {
       // noinspection unchecked
       final List<String> complexMetricList = (List<String>) complexMetricsRaw;
       for (String metric : complexMetricList) {
-        complexMetrics.put(metric, new ArrayList<ComplexMetric>());
+        complexMetrics.put(metric, new ArrayList<>());
       }
     }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchEnumerators.java
----------------------------------------------------------------------
diff --git 
a/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchEnumerators.java
 
b/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchEnumerators.java
index 16ac92d..a536269 100644
--- 
a/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchEnumerators.java
+++ 
b/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchEnumerators.java
@@ -34,21 +34,13 @@ class ElasticsearchEnumerators {
   private ElasticsearchEnumerators() {}
 
   private static Function1<ElasticsearchJson.SearchHit, Map> mapGetter() {
-    return new Function1<ElasticsearchJson.SearchHit, Map>() {
-      public Map apply(ElasticsearchJson.SearchHit hits) {
-        return hits.sourceOrFields();
-      }
-    };
+    return ElasticsearchJson.SearchHit::sourceOrFields;
   }
 
   private static Function1<ElasticsearchJson.SearchHit, Object> 
singletonGetter(
       final String fieldName,
       final Class fieldClass) {
-    return new Function1<ElasticsearchJson.SearchHit, Object>() {
-      public Object apply(ElasticsearchJson.SearchHit hits) {
-        return convert(hits.valueOrNull(fieldName), fieldClass);
-      }
-    };
+    return hits -> convert(hits.valueOrNull(fieldName), fieldClass);
   }
 
   /**
@@ -61,17 +53,15 @@ class ElasticsearchEnumerators {
    */
   private static Function1<ElasticsearchJson.SearchHit, Object[]> listGetter(
       final List<Map.Entry<String, Class>> fields) {
-    return new Function1<ElasticsearchJson.SearchHit, Object[]>() {
-      public Object[] apply(ElasticsearchJson.SearchHit hit) {
-        Object[] objects = new Object[fields.size()];
-        for (int i = 0; i < fields.size(); i++) {
-          final Map.Entry<String, Class> field = fields.get(i);
-          final String name = field.getKey();
-          final Class type = field.getValue();
-          objects[i] = convert(hit.valueOrNull(name), type);
-        }
-        return objects;
+    return hit -> {
+      Object[] objects = new Object[fields.size()];
+      for (int i = 0; i < fields.size(); i++) {
+        final Map.Entry<String, Class> field = fields.get(i);
+        final String name = field.getKey();
+        final Class type = field.getValue();
+        objects[i] = convert(hit.valueOrNull(name), type);
       }
+      return objects;
     };
   }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvEnumerator.java
----------------------------------------------------------------------
diff --git 
a/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvEnumerator.java 
b/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvEnumerator.java
index d42a979..def1a2d 100644
--- 
a/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvEnumerator.java
+++ 
b/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvEnumerator.java
@@ -112,16 +112,14 @@ class CsvEnumerator<E> implements Enumerator<E> {
       List<CsvFieldType> fieldTypes, Boolean stream) {
     final List<RelDataType> types = new ArrayList<>();
     final List<String> names = new ArrayList<>();
-    CSVReader reader = null;
     if (stream) {
       names.add(CsvSchemaFactory.ROWTIME_COLUMN_NAME);
       types.add(typeFactory.createSqlType(SqlTypeName.TIMESTAMP));
     }
-    try {
-      reader = openCsv(source);
+    try (CSVReader reader = openCsv(source)) {
       String[] strings = reader.readNext();
       if (strings == null) {
-        strings = new String[] {"EmptyFileHasNoColumns:boolean"};
+        strings = new String[]{"EmptyFileHasNoColumns:boolean"};
       }
       for (String string : strings) {
         final String name;
@@ -155,14 +153,6 @@ class CsvEnumerator<E> implements Enumerator<E> {
       }
     } catch (IOException e) {
       // ignore
-    } finally {
-      if (reader != null) {
-        try {
-          reader.close();
-        } catch (IOException e) {
-          // ignore
-        }
-      }
     }
     if (names.isEmpty()) {
       names.add("line");

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvFilterableTable.java
----------------------------------------------------------------------
diff --git 
a/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvFilterableTable.java
 
b/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvFilterableTable.java
index 7adfdfa..46555f0 100644
--- 
a/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvFilterableTable.java
+++ 
b/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvFilterableTable.java
@@ -29,7 +29,6 @@ import org.apache.calcite.schema.FilterableTable;
 import org.apache.calcite.sql.SqlKind;
 import org.apache.calcite.util.Source;
 
-import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
 
@@ -52,12 +51,7 @@ public class CsvFilterableTable extends CsvTable
 
   public Enumerable<Object[]> scan(DataContext root, List<RexNode> filters) {
     final String[] filterValues = new String[fieldTypes.size()];
-    for (final Iterator<RexNode> i = filters.iterator(); i.hasNext();) {
-      final RexNode filter = i.next();
-      if (addFilter(filter, filterValues)) {
-        i.remove();
-      }
-    }
+    filters.removeIf(filter -> addFilter(filter, filterValues));
     final int[] fields = CsvEnumerator.identityList(fieldTypes.size());
     final AtomicBoolean cancelFlag = 
DataContext.Variable.CANCEL_FLAG.get(root);
     return new AbstractEnumerable<Object[]>() {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeFilter.java
----------------------------------------------------------------------
diff --git 
a/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeFilter.java 
b/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeFilter.java
index ca0b482..e69a0db 100644
--- a/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeFilter.java
+++ b/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeFilter.java
@@ -123,7 +123,7 @@ public class GeodeFilter extends Filter implements GeodeRel 
{
      * @return OQL string for the predicate
      */
     private String translateAnd(RexNode condition) {
-      List<String> predicates = new ArrayList<String>();
+      List<String> predicates = new ArrayList<>();
       for (RexNode node : RelOptUtil.conjunctions(condition)) {
         predicates.add(translateMatch2(node));
       }
@@ -132,7 +132,7 @@ public class GeodeFilter extends Filter implements GeodeRel 
{
     }
 
     private String translateOr(List<RexNode> disjunctions) {
-      List<String> predicates = new ArrayList<String>();
+      List<String> predicates = new ArrayList<>();
       for (RexNode node : disjunctions) {
         if (RelOptUtil.conjunctions(node).size() > 1) {
           predicates.add("(" + translateMatch(node) + ")");

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeSort.java
----------------------------------------------------------------------
diff --git 
a/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeSort.java 
b/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeSort.java
index a1a3c2c..02e7b72 100644
--- a/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeSort.java
+++ b/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeSort.java
@@ -76,7 +76,7 @@ public class GeodeSort extends Sort implements GeodeRel {
 
     if (!sortCollations.isEmpty()) {
 
-      List<String> orderByFields = new ArrayList<String>();
+      List<String> orderByFields = new ArrayList<>();
 
       for (RelFieldCollation fieldCollation : sortCollations) {
         final String name = fieldName(fieldCollation.getFieldIndex());

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/linq4j/src/main/java/org/apache/calcite/linq4j/AbstractEnumerable2.java
----------------------------------------------------------------------
diff --git 
a/linq4j/src/main/java/org/apache/calcite/linq4j/AbstractEnumerable2.java 
b/linq4j/src/main/java/org/apache/calcite/linq4j/AbstractEnumerable2.java
index 81fcb86..85a8b14 100644
--- a/linq4j/src/main/java/org/apache/calcite/linq4j/AbstractEnumerable2.java
+++ b/linq4j/src/main/java/org/apache/calcite/linq4j/AbstractEnumerable2.java
@@ -28,7 +28,7 @@ package org.apache.calcite.linq4j;
  */
 public abstract class AbstractEnumerable2<T> extends DefaultEnumerable<T> {
   public Enumerator<T> enumerator() {
-    return new Linq4j.IterableEnumerator<T>(this);
+    return new Linq4j.IterableEnumerator<>(this);
   }
 }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/linq4j/src/main/java/org/apache/calcite/linq4j/DefaultEnumerable.java
----------------------------------------------------------------------
diff --git 
a/linq4j/src/main/java/org/apache/calcite/linq4j/DefaultEnumerable.java 
b/linq4j/src/main/java/org/apache/calcite/linq4j/DefaultEnumerable.java
index 146c175..22b5301 100644
--- a/linq4j/src/main/java/org/apache/calcite/linq4j/DefaultEnumerable.java
+++ b/linq4j/src/main/java/org/apache/calcite/linq4j/DefaultEnumerable.java
@@ -71,15 +71,12 @@ public abstract class DefaultEnumerable<T> implements 
OrderedEnumerable<T> {
 
   public <R> R foreach(Function1<T, R> func) {
     R result = null;
-    final Enumerator<T> enumerator = enumerator();
-    try {
+    try (Enumerator<T> enumerator = enumerator()) {
       while (enumerator.moveNext()) {
         T t = enumerator.current();
         result = func.apply(t);
       }
       return result;
-    } finally {
-      enumerator.close();
     }
   }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java
----------------------------------------------------------------------
diff --git 
a/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java 
b/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java
index 9b3dbba..cb868ca 100644
--- a/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java
+++ b/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java
@@ -736,7 +736,7 @@ public abstract class EnumerableDefaults {
       Function0<TAccumulate> accumulatorInitializer,
       Function2<TAccumulate, TSource, TAccumulate> accumulatorAdder,
       final Function2<TKey, TAccumulate, TResult> resultSelector) {
-    return groupBy_(new HashMap<TKey, TAccumulate>(), enumerable, keySelector,
+    return groupBy_(new HashMap<>(), enumerable, keySelector,
         accumulatorInitializer, accumulatorAdder, resultSelector);
   }
 
@@ -756,7 +756,7 @@ public abstract class EnumerableDefaults {
       Function2<TAccumulate, TSource, TAccumulate> accumulatorAdder,
       final Function2<TKey, TAccumulate, TResult> resultSelector) {
     return groupByMultiple_(
-        new HashMap<TKey, TAccumulate>(),
+        new HashMap<>(),
         enumerable,
         keySelectors,
         accumulatorInitializer,
@@ -780,11 +780,8 @@ public abstract class EnumerableDefaults {
       EqualityComparer<TKey> comparer) {
     return groupBy_(
         new WrapMap<>(
-          new Function0<Map<Wrapped<TKey>, TAccumulate>>() {
-            public Map<Wrapped<TKey>, TAccumulate> apply() {
-              return new HashMap<>();
-            }
-          },
+            // Java 8 cannot infer return type with HashMap::new is used
+            () -> new HashMap<Wrapped<TKey>, TAccumulate>(),
           comparer),
         enumerable,
         keySelector,
@@ -2589,11 +2586,8 @@ public abstract class EnumerableDefaults {
     // Use LinkedHashMap because groupJoin requires order of keys to be
     // preserved.
     final Map<TKey, TElement> map = new WrapMap<>(
-        new Function0<Map<Wrapped<TKey>, TElement>>() {
-          public Map<Wrapped<TKey>, TElement> apply() {
-            return new LinkedHashMap<>();
-          }
-        }, comparer);
+        // Java 8 cannot infer return type with LinkedHashMap::new is used
+        () -> new LinkedHashMap<Wrapped<TKey>, TElement>(), comparer);
     try (Enumerator<TSource> os = source.enumerator()) {
       while (os.moveNext()) {
         TSource o = os.current();
@@ -2613,8 +2607,8 @@ public abstract class EnumerableDefaults {
     } else {
       return source.into(
           source instanceof Collection
-              ? new ArrayList<TSource>(((Collection) source).size())
-              : new ArrayList<TSource>());
+              ? new ArrayList<>(((Collection) source).size())
+              : new ArrayList<>());
     }
   }
 
@@ -2690,11 +2684,8 @@ public abstract class EnumerableDefaults {
       EqualityComparer<TKey> comparer) {
     return toLookup_(
         new WrapMap<>(
-          new Function0<Map<Wrapped<TKey>, List<TElement>>>() {
-            public Map<Wrapped<TKey>, List<TElement>> apply() {
-              return new HashMap<>();
-            }
-          },
+            // Java 8 cannot infer return type with HashMap::new is used
+            () -> new HashMap<Wrapped<TKey>, List<TElement>>(),
           comparer),
         source,
         keySelector,

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/linq4j/src/main/java/org/apache/calcite/linq4j/Linq4j.java
----------------------------------------------------------------------
diff --git a/linq4j/src/main/java/org/apache/calcite/linq4j/Linq4j.java 
b/linq4j/src/main/java/org/apache/calcite/linq4j/Linq4j.java
index 11fc069..4d6065a 100644
--- a/linq4j/src/main/java/org/apache/calcite/linq4j/Linq4j.java
+++ b/linq4j/src/main/java/org/apache/calcite/linq4j/Linq4j.java
@@ -25,6 +25,7 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.NoSuchElementException;
+import java.util.Objects;
 import java.util.RandomAccess;
 
 /**
@@ -39,9 +40,7 @@ public abstract class Linq4j {
       Class... parameterTypes) {
     try {
       return Class.forName(className).getMethod(methodName, parameterTypes);
-    } catch (NoSuchMethodException e) {
-      return null;
-    } catch (ClassNotFoundException e) {
+    } catch (NoSuchMethodException | ClassNotFoundException e) {
       return null;
     }
   }
@@ -405,7 +404,7 @@ public abstract class Linq4j {
    */
   @Deprecated // to be removed before 2.0
   public static <T> boolean equals(T t0, T t1) {
-    return t0 == t1 || t0 != null && t0.equals(t1);
+    return Objects.equals(t0, t1);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/linq4j/src/main/java/org/apache/calcite/linq4j/LookupImpl.java
----------------------------------------------------------------------
diff --git a/linq4j/src/main/java/org/apache/calcite/linq4j/LookupImpl.java 
b/linq4j/src/main/java/org/apache/calcite/linq4j/LookupImpl.java
index 0451d10..75e7ce2 100644
--- a/linq4j/src/main/java/org/apache/calcite/linq4j/LookupImpl.java
+++ b/linq4j/src/main/java/org/apache/calcite/linq4j/LookupImpl.java
@@ -53,7 +53,7 @@ class LookupImpl<K, V> extends AbstractEnumerable<Grouping<K, 
V>>
 
       public Grouping<K, V> current() {
         final Entry<K, List<V>> keyAndList = enumerator.current();
-        return new GroupingImpl<K, V>(keyAndList.getKey(),
+        return new GroupingImpl<>(keyAndList.getKey(),
             keyAndList.getValue());
       }
 
@@ -159,7 +159,7 @@ class LookupImpl<K, V> extends 
AbstractEnumerable<Grouping<K, V>>
 
           public Entry<K, Enumerable<V>> next() {
             final Entry<K, List<V>> entry = iterator.next();
-            return new AbstractMap.SimpleEntry<K, 
Enumerable<V>>(entry.getKey(),
+            return new AbstractMap.SimpleEntry<>(entry.getKey(),
                 Linq4j.asEnumerable(entry.getValue()));
           }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/linq4j/src/main/java/org/apache/calcite/linq4j/QueryProviderImpl.java
----------------------------------------------------------------------
diff --git 
a/linq4j/src/main/java/org/apache/calcite/linq4j/QueryProviderImpl.java 
b/linq4j/src/main/java/org/apache/calcite/linq4j/QueryProviderImpl.java
index e7bc153..21c4bd5 100644
--- a/linq4j/src/main/java/org/apache/calcite/linq4j/QueryProviderImpl.java
+++ b/linq4j/src/main/java/org/apache/calcite/linq4j/QueryProviderImpl.java
@@ -34,11 +34,11 @@ public abstract class QueryProviderImpl implements 
QueryProvider {
   }
 
   public <T> Queryable<T> createQuery(Expression expression, Class<T> rowType) 
{
-    return new QueryableImpl<T>(this, rowType, expression);
+    return new QueryableImpl<>(this, rowType, expression);
   }
 
   public <T> Queryable<T> createQuery(Expression expression, Type rowType) {
-    return new QueryableImpl<T>(this, rowType, expression);
+    return new QueryableImpl<>(this, rowType, expression);
   }
 
   public <T> T execute(Expression expression, Class<T> type) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/linq4j/src/main/java/org/apache/calcite/linq4j/QueryableDefaults.java
----------------------------------------------------------------------
diff --git 
a/linq4j/src/main/java/org/apache/calcite/linq4j/QueryableDefaults.java 
b/linq4j/src/main/java/org/apache/calcite/linq4j/QueryableDefaults.java
index 8a21331..19b1892 100644
--- a/linq4j/src/main/java/org/apache/calcite/linq4j/QueryableDefaults.java
+++ b/linq4j/src/main/java/org/apache/calcite/linq4j/QueryableDefaults.java
@@ -226,7 +226,7 @@ public abstract class QueryableDefaults {
     return new BaseQueryable<T2>(source.getProvider(), clazz,
         source.getExpression()) {
       public Enumerator<T2> enumerator() {
-        return new 
EnumerableDefaults.CastingEnumerator<T2>(source.enumerator(),
+        return new EnumerableDefaults.CastingEnumerator<>(source.enumerator(),
             clazz);
       }
     };
@@ -911,7 +911,7 @@ public abstract class QueryableDefaults {
     return new BaseQueryable<T>(source.getProvider(), source.getElementType(),
         source.getExpression()) {
       public Enumerator<T> enumerator() {
-        return new EnumerableDefaults.SkipWhileEnumerator<T>(
+        return new EnumerableDefaults.SkipWhileEnumerator<>(
             source.enumerator(), predicate.getFunction());
       }
     };
@@ -1046,7 +1046,7 @@ public abstract class QueryableDefaults {
     return new BaseQueryable<T>(source.getProvider(), source.getElementType(),
         source.getExpression()) {
       public Enumerator<T> enumerator() {
-        return new EnumerableDefaults.TakeWhileEnumerator<T>(
+        return new EnumerableDefaults.TakeWhileEnumerator<>(
             source.enumerator(), predicate.getFunction());
       }
     };

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/linq4j/src/main/java/org/apache/calcite/linq4j/tree/ClassDeclarationFinder.java
----------------------------------------------------------------------
diff --git 
a/linq4j/src/main/java/org/apache/calcite/linq4j/tree/ClassDeclarationFinder.java
 
b/linq4j/src/main/java/org/apache/calcite/linq4j/tree/ClassDeclarationFinder.java
index 227e90d..f21e241 100644
--- 
a/linq4j/src/main/java/org/apache/calcite/linq4j/tree/ClassDeclarationFinder.java
+++ 
b/linq4j/src/main/java/org/apache/calcite/linq4j/tree/ClassDeclarationFinder.java
@@ -35,8 +35,7 @@ public class ClassDeclarationFinder extends Shuttle {
   /**
    * The list of new final static fields to be added to the current class.
    */
-  protected final List<MemberDeclaration> addedDeclarations =
-      new ArrayList<MemberDeclaration>();
+  protected final List<MemberDeclaration> addedDeclarations = new 
ArrayList<>();
 
   private final Function1<ClassDeclarationFinder, ClassDeclarationFinder> 
childFactory;
 
@@ -93,13 +92,7 @@ public class ClassDeclarationFinder extends Shuttle {
       return a0 -> {
         try {
           return constructor.newInstance(a0);
-        } catch (InstantiationException e) {
-          throw new IllegalStateException(
-              "Unable to create optimizer via " + constructor, e);
-        } catch (IllegalAccessException e) {
-          throw new IllegalStateException(
-              "Unable to create optimizer via " + constructor, e);
-        } catch (InvocationTargetException e) {
+        } catch (InstantiationException | InvocationTargetException | 
IllegalAccessException e) {
           throw new IllegalStateException(
               "Unable to create optimizer via " + constructor, e);
         }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Evaluator.java
----------------------------------------------------------------------
diff --git a/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Evaluator.java 
b/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Evaluator.java
index 9508bbd..8f1b265 100644
--- a/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Evaluator.java
+++ b/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Evaluator.java
@@ -23,9 +23,8 @@ import java.util.List;
  * Holds context for evaluating expressions.
  */
 class Evaluator {
-  final List<ParameterExpression> parameters =
-      new ArrayList<ParameterExpression>();
-  final List<Object> values = new ArrayList<Object>();
+  final List<ParameterExpression> parameters = new ArrayList<>();
+  final List<Object> values = new ArrayList<>();
 
   Evaluator() {
   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Expressions.java
----------------------------------------------------------------------
diff --git 
a/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Expressions.java 
b/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Expressions.java
index 0e4c3c2..e87576f 100644
--- a/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Expressions.java
+++ b/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Expressions.java
@@ -1120,7 +1120,7 @@ public abstract class Expressions {
     // default constructor, etc.?
 
     //noinspection unchecked
-    return new FunctionExpression<F>(function);
+    return new FunctionExpression<>(function);
   }
 
   /**
@@ -1133,7 +1133,7 @@ public abstract class Expressions {
     final List<ParameterExpression> parameterList = toList(parameters);
     @SuppressWarnings("unchecked")
     Class<F> type = deduceType(parameterList, body.getType());
-    return new FunctionExpression<F>(type, body, parameterList);
+    return new FunctionExpression<>(type, body, parameterList);
   }
 
   /**
@@ -1172,7 +1172,7 @@ public abstract class Expressions {
   public static <T, F extends Function<? extends T>> FunctionExpression<F>
       lambda(Class<F> type, BlockStatement body,
       Iterable<? extends ParameterExpression> parameters) {
-    return new FunctionExpression<F>(type, body, toList(parameters));
+    return new FunctionExpression<>(type, body, toList(parameters));
   }
 
   /**
@@ -3026,21 +3026,21 @@ public abstract class Expressions {
    * Creates an empty fluent list.
    */
   public static <T> FluentList<T> list() {
-    return new FluentArrayList<T>();
+    return new FluentArrayList<>();
   }
 
   /**
    * Creates a fluent list with given elements.
    */
-  public static <T> FluentList<T> list(T... ts) {
-    return new FluentArrayList<T>(Arrays.asList(ts));
+  @SafeVarargs public static <T> FluentList<T> list(T... ts) {
+    return new FluentArrayList<>(Arrays.asList(ts));
   }
 
   /**
    * Creates a fluent list with elements from the given collection.
    */
   public static <T> FluentList<T> list(Iterable<T> ts) {
-    return new FluentArrayList<T>(toList(ts));
+    return new FluentArrayList<>(toList(ts));
   }
 
   // ~ Private helper methods ------------------------------------------------
@@ -3072,7 +3072,7 @@ public abstract class Expressions {
     if (iterable instanceof List) {
       return (List<T>) iterable;
     }
-    final List<T> list = new ArrayList<T>();
+    final List<T> list = new ArrayList<>();
     for (T parameter : iterable) {
       list.add(parameter);
     }
@@ -3117,7 +3117,7 @@ public abstract class Expressions {
     if (statements.isEmpty()) {
       return statements; // short cut
     }
-    final List<Statement> statements1 = new ArrayList<Statement>();
+    final List<Statement> statements1 = new ArrayList<>();
     for (Statement statement : statements) {
       Statement newStatement = statement.accept(shuttle);
       if (newStatement instanceof GotoStatement) {
@@ -3137,7 +3137,7 @@ public abstract class Expressions {
     if (nodes.isEmpty()) {
       return nodes; // short cut
     }
-    final List<Node> statements1 = new ArrayList<Node>();
+    final List<Node> statements1 = new ArrayList<>();
     for (Node node : nodes) {
       statements1.add(node.accept(shuttle));
     }
@@ -3149,7 +3149,7 @@ public abstract class Expressions {
     if (parameterExpressions.isEmpty()) {
       return Collections.emptyList(); // short cut
     }
-    final List<Expression> parameterExpressions1 = new ArrayList<Expression>();
+    final List<Expression> parameterExpressions1 = new ArrayList<>();
     for (ParameterExpression parameterExpression : parameterExpressions) {
       parameterExpressions1.add(parameterExpression.accept(shuttle));
     }
@@ -3161,8 +3161,7 @@ public abstract class Expressions {
     if (declarations == null || declarations.isEmpty()) {
       return declarations; // short cut
     }
-    final List<DeclarationStatement> declarations1 =
-        new ArrayList<DeclarationStatement>();
+    final List<DeclarationStatement> declarations1 = new ArrayList<>();
     for (DeclarationStatement declaration : declarations) {
       declarations1.add(declaration.accept(shuttle));
     }
@@ -3174,8 +3173,7 @@ public abstract class Expressions {
     if (memberDeclarations == null || memberDeclarations.isEmpty()) {
       return memberDeclarations; // short cut
     }
-    final List<MemberDeclaration> memberDeclarations1 =
-        new ArrayList<MemberDeclaration>();
+    final List<MemberDeclaration> memberDeclarations1 = new ArrayList<>();
     for (MemberDeclaration memberDeclaration : memberDeclarations) {
       memberDeclarations1.add(memberDeclaration.accept(shuttle));
     }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/linq4j/src/main/java/org/apache/calcite/linq4j/tree/FunctionExpression.java
----------------------------------------------------------------------
diff --git 
a/linq4j/src/main/java/org/apache/calcite/linq4j/tree/FunctionExpression.java 
b/linq4j/src/main/java/org/apache/calcite/linq4j/tree/FunctionExpression.java
index a5f04cb..06e3945 100644
--- 
a/linq4j/src/main/java/org/apache/calcite/linq4j/tree/FunctionExpression.java
+++ 
b/linq4j/src/main/java/org/apache/calcite/linq4j/tree/FunctionExpression.java
@@ -127,11 +127,11 @@ public final class FunctionExpression<F extends 
Function<?>>
     //    public Object apply(Object p1, Object p2) {
     //      return apply((Double) p1, (Integer) p2);
     //    }
-    List<String> params = new ArrayList<String>();
-    List<String> bridgeParams = new ArrayList<String>();
-    List<String> bridgeArgs = new ArrayList<String>();
-    List<String> boxBridgeParams = new ArrayList<String>();
-    List<String> boxBridgeArgs = new ArrayList<String>();
+    List<String> params = new ArrayList<>();
+    List<String> bridgeParams = new ArrayList<>();
+    List<String> bridgeArgs = new ArrayList<>();
+    List<String> boxBridgeParams = new ArrayList<>();
+    List<String> boxBridgeArgs = new ArrayList<>();
     for (ParameterExpression parameterExpression : parameterList) {
       final Type parameterType = parameterExpression.getType();
       final Type parameterBoxType = Types.box(parameterType);

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Types.java
----------------------------------------------------------------------
diff --git a/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Types.java 
b/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Types.java
index 442b927..b7c8d33 100644
--- a/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Types.java
+++ b/linq4j/src/main/java/org/apache/calcite/linq4j/tree/Types.java
@@ -149,7 +149,7 @@ public abstract class Types {
   }
 
   static Class[] toClassArray(Collection<Type> types) {
-    List<Class> classes = new ArrayList<Class>();
+    List<Class> classes = new ArrayList<>();
     for (Type type : types) {
       classes.add(toClass(type));
     }
@@ -157,7 +157,7 @@ public abstract class Types {
   }
 
   static Class[] toClassArray(Iterable<? extends Expression> arguments) {
-    List<Class> classes = new ArrayList<Class>();
+    List<Class> classes = new ArrayList<>();
     for (Expression argument : arguments) {
       classes.add(toClass(argument.getType()));
     }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoAggregate.java
----------------------------------------------------------------------
diff --git 
a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoAggregate.java 
b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoAggregate.java
index fdf043d..0cf5f75 100644
--- 
a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoAggregate.java
+++ 
b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoAggregate.java
@@ -84,7 +84,7 @@ public class MongoAggregate
 
   public void implement(Implementor implementor) {
     implementor.visitChild(0, getInput());
-    List<String> list = new ArrayList<String>();
+    List<String> list = new ArrayList<>();
     final List<String> inNames =
         MongoRules.mongoFieldNames(getInput().getRowType());
     final List<String> outNames = MongoRules.mongoFieldNames(getRowType());
@@ -94,7 +94,7 @@ public class MongoAggregate
       list.add("_id: " + MongoRules.maybeQuote("$" + inName));
       ++i;
     } else {
-      List<String> keys = new ArrayList<String>();
+      List<String> keys = new ArrayList<>();
       for (int group : groupSet) {
         final String inName = inNames.get(group);
         keys.add(inName + ": " + MongoRules.quote("$" + inName));
@@ -123,7 +123,7 @@ public class MongoAggregate
         }
       };
     } else {
-      fixups = new ArrayList<String>();
+      fixups = new ArrayList<>();
       fixups.add("_id: 0");
       i = 0;
       for (int group : groupSet) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoFilter.java
----------------------------------------------------------------------
diff --git 
a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoFilter.java 
b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoFilter.java
index 8d2ae04..b380ad8 100644
--- a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoFilter.java
+++ b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoFilter.java
@@ -79,7 +79,7 @@ public class MongoFilter extends Filter implements MongoRel {
     final Multimap<String, Pair<String, RexLiteral>> multimap =
         HashMultimap.create();
     final Map<String, RexLiteral> eqMap =
-        new LinkedHashMap<String, RexLiteral>();
+        new LinkedHashMap<>();
     private final List<String> fieldNames;
 
     Translator(List<String> fieldNames) {
@@ -93,7 +93,7 @@ public class MongoFilter extends Filter implements MongoRel {
     }
 
     private Object translateOr(RexNode condition) {
-      List<Object> list = new ArrayList<Object>();
+      List<Object> list = new ArrayList<>();
       for (RexNode node : RelOptUtil.disjunctions(condition)) {
         list.add(translateAnd(node));
       }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoProject.java
----------------------------------------------------------------------
diff --git 
a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoProject.java 
b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoProject.java
index d8a17ec..53bbbd3 100644
--- a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoProject.java
+++ b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoProject.java
@@ -69,7 +69,7 @@ public class MongoProject extends Project implements MongoRel 
{
         new MongoRules.RexToMongoTranslator(
             (JavaTypeFactory) getCluster().getTypeFactory(),
             MongoRules.mongoFieldNames(getInput().getRowType()));
-    final List<String> items = new ArrayList<String>();
+    final List<String> items = new ArrayList<>();
     for (Pair<RexNode, String> pair : getNamedProjects()) {
       final String name = pair.right;
       final String expr = pair.left.accept(translator);

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoRel.java
----------------------------------------------------------------------
diff --git 
a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoRel.java 
b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoRel.java
index c05c965..a5b722b 100644
--- a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoRel.java
+++ b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoRel.java
@@ -36,8 +36,7 @@ public interface MongoRel extends RelNode {
   /** Callback for the implementation process that converts a tree of
    * {@link MongoRel} nodes into a MongoDB query. */
   class Implementor {
-    final List<Pair<String, String>> list =
-        new ArrayList<Pair<String, String>>();
+    final List<Pair<String, String>> list = new ArrayList<>();
 
     RelOptTable table;
     MongoTable mongoTable;

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoRules.java
----------------------------------------------------------------------
diff --git 
a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoRules.java 
b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoRules.java
index 7e00821..54339d2 100644
--- a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoRules.java
+++ b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoRules.java
@@ -131,7 +131,7 @@ public class MongoRules {
     private final List<String> inFields;
 
     private static final Map<SqlOperator, String> MONGO_OPERATORS =
-        new HashMap<SqlOperator, String>();
+        new HashMap<>();
 
     static {
       // Arithmetic
@@ -236,7 +236,7 @@ public class MongoRules {
     }
 
     public List<String> visitList(List<RexNode> list) {
-      final List<String> strings = new ArrayList<String>();
+      final List<String> strings = new ArrayList<>();
       for (RexNode node : list) {
         strings.add(node.accept(this));
       }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoSort.java
----------------------------------------------------------------------
diff --git 
a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoSort.java 
b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoSort.java
index 193e225..1b61b1b 100644
--- a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoSort.java
+++ b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoSort.java
@@ -59,7 +59,7 @@ public class MongoSort extends Sort implements MongoRel {
   public void implement(Implementor implementor) {
     implementor.visitChild(0, getInput());
     if (!collation.getFieldCollations().isEmpty()) {
-      final List<String> keys = new ArrayList<String>();
+      final List<String> keys = new ArrayList<>();
       final List<RelDataTypeField> fields = getRowType().getFieldList();
       for (RelFieldCollation fieldCollation : collation.getFieldCollations()) {
         final String name =

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/pig/src/main/java/org/apache/calcite/adapter/pig/PigJoin.java
----------------------------------------------------------------------
diff --git a/pig/src/main/java/org/apache/calcite/adapter/pig/PigJoin.java 
b/pig/src/main/java/org/apache/calcite/adapter/pig/PigJoin.java
index 8880bb1..fec1107 100644
--- a/pig/src/main/java/org/apache/calcite/adapter/pig/PigJoin.java
+++ b/pig/src/main/java/org/apache/calcite/adapter/pig/PigJoin.java
@@ -21,7 +21,6 @@ import org.apache.calcite.plan.RelOptTable;
 import org.apache.calcite.plan.RelOptUtil;
 import org.apache.calcite.plan.RelTraitSet;
 import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.core.CorrelationId;
 import org.apache.calcite.rel.core.Join;
 import org.apache.calcite.rel.core.JoinRelType;
 import org.apache.calcite.rex.RexCall;
@@ -39,7 +38,7 @@ public class PigJoin extends Join implements PigRel {
   /** Creates a PigJoin. */
   public PigJoin(RelOptCluster cluster, RelTraitSet traitSet, RelNode left, 
RelNode right,
       RexNode condition, JoinRelType joinType) {
-    super(cluster, traitSet, left, right, condition, new 
HashSet<CorrelationId>(0), joinType);
+    super(cluster, traitSet, left, right, condition, new HashSet<>(0), 
joinType);
     assert getConvention() == PigRel.CONVENTION;
   }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/plus/src/main/java/org/apache/calcite/adapter/os/VmstatTableFunction.java
----------------------------------------------------------------------
diff --git 
a/plus/src/main/java/org/apache/calcite/adapter/os/VmstatTableFunction.java 
b/plus/src/main/java/org/apache/calcite/adapter/os/VmstatTableFunction.java
index d014b5f..5305d57 100644
--- a/plus/src/main/java/org/apache/calcite/adapter/os/VmstatTableFunction.java
+++ b/plus/src/main/java/org/apache/calcite/adapter/os/VmstatTableFunction.java
@@ -90,7 +90,7 @@ public class VmstatTableFunction {
                       return 0;
                     }
                     if (value.endsWith(".")) {
-                      return Long.parseLong(value.substring(0, 
value.length()));
+                      return Long.parseLong(value);
                     }
                     return Long.parseLong(value);
                   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/spark/src/main/java/org/apache/calcite/adapter/spark/JdbcToSparkConverter.java
----------------------------------------------------------------------
diff --git 
a/spark/src/main/java/org/apache/calcite/adapter/spark/JdbcToSparkConverter.java
 
b/spark/src/main/java/org/apache/calcite/adapter/spark/JdbcToSparkConverter.java
index 1e986e2..14d105e 100644
--- 
a/spark/src/main/java/org/apache/calcite/adapter/spark/JdbcToSparkConverter.java
+++ 
b/spark/src/main/java/org/apache/calcite/adapter/spark/JdbcToSparkConverter.java
@@ -82,7 +82,7 @@ public class JdbcToSparkConverter
     }
     final Expression sqlLiteral =
         list.append("sql", Expressions.constant(sql));
-    final List<Primitive> primitives = new ArrayList<Primitive>();
+    final List<Primitive> primitives = new ArrayList<>();
     for (int i = 0; i < getRowType().getFieldCount(); i++) {
       final Primitive primitive = Primitive.ofBoxOr(physType.fieldClass(i));
       primitives.add(primitive != null ? primitive : Primitive.OTHER);

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/spark/src/main/java/org/apache/calcite/adapter/spark/SparkMethod.java
----------------------------------------------------------------------
diff --git 
a/spark/src/main/java/org/apache/calcite/adapter/spark/SparkMethod.java 
b/spark/src/main/java/org/apache/calcite/adapter/spark/SparkMethod.java
index b329e63..8b712f1 100644
--- a/spark/src/main/java/org/apache/calcite/adapter/spark/SparkMethod.java
+++ b/spark/src/main/java/org/apache/calcite/adapter/spark/SparkMethod.java
@@ -44,8 +44,7 @@ public enum SparkMethod {
 
   public final Method method;
 
-  private static final HashMap<Method, SparkMethod> MAP =
-      new HashMap<Method, SparkMethod>();
+  private static final HashMap<Method, SparkMethod> MAP = new HashMap<>();
 
   static {
     for (SparkMethod method : SparkMethod.values()) {

Reply via email to