Enable warning about redundant specification of type arguments

Change-Id: I60b1781dd09d0c0b85dd97a47aa8ea080c697759
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index 6dbcac5..79e5ce3 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -9,6 +9,7 @@
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
 org.eclipse.jdt.core.compiler.source=1.7
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
diff --git a/src/main/java/com/google/gwtorm/jdbc/AccessGen.java b/src/main/java/com/google/gwtorm/jdbc/AccessGen.java
index 3066f73..9cfe6f5 100644
--- a/src/main/java/com/google/gwtorm/jdbc/AccessGen.java
+++ b/src/main/java/com/google/gwtorm/jdbc/AccessGen.java
@@ -302,7 +302,7 @@
     cgs.resetColumnIndex(0);
 
     if (type != DmlType.DELETE) {
-      final List<ColumnModel> cols = new ArrayList<ColumnModel>();
+      final List<ColumnModel> cols = new ArrayList<>();
       cols.addAll(model.getDependentFields());
       cols.addAll(model.getRowVersionFields());
       for (final ColumnModel field : cols) {
@@ -397,7 +397,7 @@
       cgs.resetColumnIndex(oldIdx);
     }
 
-    final List<ColumnModel> cols = new ArrayList<ColumnModel>();
+    final List<ColumnModel> cols = new ArrayList<>();
     cols.addAll(model.getDependentFields());
     cols.addAll(model.getRowVersionFields());
     cols.addAll(model.getPrimaryKeyColumns());
diff --git a/src/main/java/com/google/gwtorm/jdbc/Database.java b/src/main/java/com/google/gwtorm/jdbc/Database.java
index 802bcec..0de0f11 100644
--- a/src/main/java/com/google/gwtorm/jdbc/Database.java
+++ b/src/main/java/com/google/gwtorm/jdbc/Database.java
@@ -84,7 +84,7 @@
     schemaModel = new JavaSchemaModel(schema);
     final GeneratedClassLoader loader = newLoader(schema);
     final Class<T> impl = generate(dialect, loader);
-    implFactory = new SchemaConstructorGen<T>(loader, impl, this).create();
+    implFactory = new SchemaConstructorGen<>(loader, impl, this).create();
     implDialect = dialect;
   }
 
diff --git a/src/main/java/com/google/gwtorm/jdbc/JdbcAccess.java b/src/main/java/com/google/gwtorm/jdbc/JdbcAccess.java
index aaddfa3..553dc3e 100644
--- a/src/main/java/com/google/gwtorm/jdbc/JdbcAccess.java
+++ b/src/main/java/com/google/gwtorm/jdbc/JdbcAccess.java
@@ -54,7 +54,7 @@
     if (keys instanceof Collection) {
       keySet = (Collection<K>) keys;
     } else {
-      keySet = new ArrayList<K>();
+      keySet = new ArrayList<>();
       for (final K k : keys) {
         keySet.add(k);
       }
@@ -64,16 +64,16 @@
       case 0:
         // Nothing requested, nothing to return.
         //
-        return new ListResultSet<T>(Collections.<T> emptyList());
+        return new ListResultSet<>(Collections.<T> emptyList());
 
       case 1: {
         // Only one key requested, use a faster equality lookup.
         //
         final T entity = get(keySet.iterator().next());
         if (entity != null) {
-          return new ListResultSet<T>(Collections.singletonList(entity));
+          return new ListResultSet<>(Collections.singletonList(entity));
         }
-        return new ListResultSet<T>(Collections.<T> emptyList());
+        return new ListResultSet<>(Collections.<T> emptyList());
       }
 
       default:
@@ -144,7 +144,7 @@
       if (!rs.next()) {
         rs.close();
         ps.close();
-        return new ListResultSet<T>(Collections.<T> emptyList());
+        return new ListResultSet<>(Collections.<T> emptyList());
       }
     } catch (SQLException err) {
       try {
@@ -154,7 +154,7 @@
       }
       throw convertError("fetch", err);
     }
-    return new JdbcResultSet<T, K>(this, rs, ps);
+    return new JdbcResultSet<>(this, rs, ps);
   }
 
   @Override
@@ -297,7 +297,7 @@
     try {
       PreparedStatement ps = null;
       try {
-        List<T> allInstances = new ArrayList<T>();
+        List<T> allInstances = new ArrayList<>();
         for (final T o : instances) {
           if (ps == null) {
             ps = schema.getConnection().prepareStatement(getUpdateOneSql());
@@ -306,7 +306,7 @@
           int updateCount = ps.executeUpdate();
           if (updateCount != 1) {
             if (inserts == null) {
-              inserts = new ArrayList<T>();
+              inserts = new ArrayList<>();
             }
             inserts.add(o);          }
           allInstances.add(o);
@@ -339,7 +339,7 @@
       PreparedStatement ps = null;
       try {
         int cnt = 0;
-        List<T> allInstances = new ArrayList<T>();
+        List<T> allInstances = new ArrayList<>();
         for (final T o : instances) {
           if (ps == null) {
             ps = schema.getConnection().prepareStatement(getUpdateOneSql());
@@ -359,7 +359,7 @@
             for (T o : allInstances) {
               if (states.length <= i || states[i] != 1) {
                 if (inserts == null) {
-                  inserts = new ArrayList<T>(cnt - i);
+                  inserts = new ArrayList<>(cnt - i);
                 }
                 inserts.add(o);
               }
diff --git a/src/main/java/com/google/gwtorm/jdbc/JdbcSchema.java b/src/main/java/com/google/gwtorm/jdbc/JdbcSchema.java
index 188b833..80dec0b 100644
--- a/src/main/java/com/google/gwtorm/jdbc/JdbcSchema.java
+++ b/src/main/java/com/google/gwtorm/jdbc/JdbcSchema.java
@@ -194,7 +194,7 @@
       OrmException {
     final SqlDialect dialect = dbDef.getDialect();
     final SchemaModel model = dbDef.getSchemaModel();
-    HashSet<String> want = new HashSet<String>();
+    HashSet<String> want = new HashSet<>();
     for (final SequenceModel s : model.getSequences()) {
       want.add(s.getSequenceName().toLowerCase());
     }
@@ -209,7 +209,7 @@
       OrmException {
     final SqlDialect dialect = dbDef.getDialect();
     final SchemaModel model = dbDef.getSchemaModel();
-    HashSet<String> want = new HashSet<String>();
+    HashSet<String> want = new HashSet<>();
     for (final RelationModel r : model.getRelations()) {
       want.add(r.getRelationName().toLowerCase());
     }
@@ -223,7 +223,7 @@
   private void pruneColumns(final StatementExecutor e, final RelationModel rel)
       throws SQLException, OrmException {
     final SqlDialect dialect = dbDef.getDialect();
-    HashSet<String> want = new HashSet<String>();
+    HashSet<String> want = new HashSet<>();
     for (final ColumnModel c : rel.getColumns()) {
       want.add(c.getColumnName().toLowerCase());
     }
diff --git a/src/main/java/com/google/gwtorm/jdbc/SimpleDataSource.java b/src/main/java/com/google/gwtorm/jdbc/SimpleDataSource.java
index a80a3a1..2536e50 100644
--- a/src/main/java/com/google/gwtorm/jdbc/SimpleDataSource.java
+++ b/src/main/java/com/google/gwtorm/jdbc/SimpleDataSource.java
@@ -63,7 +63,7 @@
     if (driverName != null) {
       ClassLoader cl = threadCL();
       if (classpath != null && classpath.length() > 0) {
-        final List<URL> urls = new ArrayList<URL>();
+        final List<URL> urls = new ArrayList<>();
         for (final String path : classpath.split(File.pathSeparator)) {
           try {
             urls.add(new URL(path));
diff --git a/src/main/java/com/google/gwtorm/nosql/AccessGen.java b/src/main/java/com/google/gwtorm/nosql/AccessGen.java
index 91fc97b..0a8bbd9 100644
--- a/src/main/java/com/google/gwtorm/nosql/AccessGen.java
+++ b/src/main/java/com/google/gwtorm/nosql/AccessGen.java
@@ -147,7 +147,7 @@
   @SuppressWarnings({"unchecked", "rawtypes"})
   private void initQueryIndexes(final Class<?> clazz) throws OrmException {
     final Collection<QueryModel> queries = model.getQueries();
-    final ArrayList<IndexFunction> indexes = new ArrayList<IndexFunction>();
+    final ArrayList<IndexFunction> indexes = new ArrayList<>();
     for (QueryModel m : queries) {
       if (needsIndexFunction(m)) {
         indexes.add(new IndexFunctionGen(classLoader, m, modelClass).create());
@@ -521,7 +521,7 @@
       case 0: // nil node used to join other nodes together
       case QueryParser.WHERE:
       case QueryParser.AND: {
-        List<Tree> res = new ArrayList<Tree>();
+        List<Tree> res = new ArrayList<>();
         for (int i = 0; i < node.getChildCount(); i++) {
           res.addAll(compareOpsOnly(node.getChild(i)));
         }
diff --git a/src/main/java/com/google/gwtorm/nosql/IndexFunctionGen.java b/src/main/java/com/google/gwtorm/nosql/IndexFunctionGen.java
index 01186a6..ecded5d 100644
--- a/src/main/java/com/google/gwtorm/nosql/IndexFunctionGen.java
+++ b/src/main/java/com/google/gwtorm/nosql/IndexFunctionGen.java
@@ -60,7 +60,7 @@
     classLoader = loader;
     query = qm;
 
-    myFields = new ArrayList<QueryModel.OrderBy>();
+    myFields = new ArrayList<>();
 
     // Only add each parameter column once, but in the order used.
     // This avoids a range test on the same column from duplicating
@@ -95,7 +95,7 @@
   }
 
   private static List<ColumnModel> leaves(List<ColumnModel> in) {
-    ArrayList<ColumnModel> r = new ArrayList<ColumnModel>(in.size());
+    ArrayList<ColumnModel> r = new ArrayList<>(in.size());
     for (ColumnModel m : in) {
       if (m.isNested()) {
         r.addAll(m.getAllLeafColumns());
@@ -107,7 +107,7 @@
   }
 
   private static List<QueryModel.OrderBy> orderByLeaves(List<QueryModel.OrderBy> in) {
-    ArrayList<QueryModel.OrderBy> r = new ArrayList<QueryModel.OrderBy>(in.size());
+    ArrayList<QueryModel.OrderBy> r = new ArrayList<>(in.size());
     for (QueryModel.OrderBy m : in) {
       if (m.column.isNested()) {
         for (ColumnModel c : m.column.getAllLeafColumns()) {
@@ -198,7 +198,7 @@
     mv.visitTypeInsn(CHECKCAST, pojoType.getInternalName());
     mv.visitVarInsn(ASTORE, 1);
 
-    Set<ColumnModel> checked = new HashSet<ColumnModel>();
+    Set<ColumnModel> checked = new HashSet<>();
     for (QueryModel.OrderBy orderby : myFields) {
       checkNotNullFields(Collections.singleton(orderby.column), checked, mv, cgs);
     }
diff --git a/src/main/java/com/google/gwtorm/nosql/NoSqlDatabase.java b/src/main/java/com/google/gwtorm/nosql/NoSqlDatabase.java
index 14b3526..927df32 100644
--- a/src/main/java/com/google/gwtorm/nosql/NoSqlDatabase.java
+++ b/src/main/java/com/google/gwtorm/nosql/NoSqlDatabase.java
@@ -76,7 +76,7 @@
     schemaModel = new JavaSchemaModel(appSchema);
     final GeneratedClassLoader loader = newLoader(appSchema);
     final Class<T> impl = generate(schemaBaseType, accessBaseType, loader);
-    implFactory = new SchemaConstructorGen<T>(loader, impl, this).create();
+    implFactory = new SchemaConstructorGen<>(loader, impl, this).create();
   }
 
   @Override
diff --git a/src/main/java/com/google/gwtorm/nosql/generic/GenericAccess.java b/src/main/java/com/google/gwtorm/nosql/generic/GenericAccess.java
index cdaa4f5..ecfef33 100644
--- a/src/main/java/com/google/gwtorm/nosql/generic/GenericAccess.java
+++ b/src/main/java/com/google/gwtorm/nosql/generic/GenericAccess.java
@@ -221,15 +221,15 @@
     b.addRaw(toKey);
     toKey = b.toByteArray();
 
-    final ArrayList<T> res = new ArrayList<T>();
+    final ArrayList<T> res = new ArrayList<>();
     byte[] lastKey = fromKey;
 
     SCAN: for (;;) {
       List<CandidateRow> scanned;
       if (0 < limit) {
-        scanned = new ArrayList<CandidateRow>(limit);
+        scanned = new ArrayList<>(limit);
       } else {
-        scanned = new ArrayList<CandidateRow>();
+        scanned = new ArrayList<>();
       }
 
       boolean needData = false;
@@ -247,9 +247,8 @@
         // object stored within. For these rows we need to fetch the real
         // data row and join it against the index information.
         //
-        HashMap<ByteString, CandidateRow> byKey =
-            new HashMap<ByteString, CandidateRow>();
-        List<byte[]> toFetch = new ArrayList<byte[]>(scanned.size());
+        HashMap<ByteString, CandidateRow> byKey = new HashMap<>();
+        List<byte[]> toFetch = new ArrayList<>(scanned.size());
 
         for (CandidateRow idxRow : scanned) {
           if (!idxRow.hasData()) {
@@ -329,7 +328,7 @@
       lastKey = b.toByteArray();
     }
 
-    return new ListResultSet<T>(res);
+    return new ListResultSet<>(res);
   }
 
   @Override
diff --git a/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java b/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java
index 7208d8f..0a4558a 100644
--- a/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java
+++ b/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java
@@ -162,14 +162,14 @@
    * @throws OrmException the data store cannot process the request.
    */
   public ResultSet<Row> fetchRows(Iterable<byte[]> keys) throws OrmException {
-    List<Row> r = new ArrayList<Row>();
+    List<Row> r = new ArrayList<>();
     for (byte[] key : keys) {
       byte[] val = fetchRow(key);
       if (val != null) {
         r.add(new Row(key, val));
       }
     }
-    return new ListResultSet<Row>(r);
+    return new ListResultSet<>(r);
   }
 
   /**
diff --git a/src/main/java/com/google/gwtorm/nosql/heap/TreeMapDatabase.java b/src/main/java/com/google/gwtorm/nosql/heap/TreeMapDatabase.java
index 1e0bb21..fca8470 100644
--- a/src/main/java/com/google/gwtorm/nosql/heap/TreeMapDatabase.java
+++ b/src/main/java/com/google/gwtorm/nosql/heap/TreeMapDatabase.java
@@ -66,7 +66,7 @@
     super(schemaBaseType, accessBaseType, appSchema);
 
     lock = new ReentrantLock(true);
-    table = new TreeMap<byte[], byte[]>(HeapKeyComparator.INSTANCE);
+    table = new TreeMap<>(HeapKeyComparator.INSTANCE);
   }
 
   /**
diff --git a/src/main/java/com/google/gwtorm/nosql/heap/TreeMapSchema.java b/src/main/java/com/google/gwtorm/nosql/heap/TreeMapSchema.java
index 89159ba..ed73f2d 100644
--- a/src/main/java/com/google/gwtorm/nosql/heap/TreeMapSchema.java
+++ b/src/main/java/com/google/gwtorm/nosql/heap/TreeMapSchema.java
@@ -52,7 +52,7 @@
       boolean order) {
     db.lock.lock();
     try {
-      final List<Row> res = new ArrayList<Row>();
+      final List<Row> res = new ArrayList<>();
       for (Map.Entry<byte[], byte[]> ent : entries(fromKey, toKey)) {
         res.add(new Row(ent.getKey(), ent.getValue()));
 
@@ -60,7 +60,7 @@
           break;
         }
       }
-      return new ListResultSet<Row>(res);
+      return new ListResultSet<>(res);
     } finally {
       db.lock.unlock();
     }
diff --git a/src/main/java/com/google/gwtorm/protobuf/CodecFactory.java b/src/main/java/com/google/gwtorm/protobuf/CodecFactory.java
index b65fceb..070ce78 100644
--- a/src/main/java/com/google/gwtorm/protobuf/CodecFactory.java
+++ b/src/main/java/com/google/gwtorm/protobuf/CodecFactory.java
@@ -48,7 +48,7 @@
       encoder = get(loader, cacheName);
     }
     if (encoder == null) {
-      final CodecGen<T> gen = new CodecGen<T>(loader, type);
+      final CodecGen<T> gen = new CodecGen<>(loader, type);
       try {
         encoder = gen.create();
       } catch (OrmException e) {
diff --git a/src/main/java/com/google/gwtorm/protobuf/CodecGen.java b/src/main/java/com/google/gwtorm/protobuf/CodecGen.java
index abf0e97..1eb6fde 100644
--- a/src/main/java/com/google/gwtorm/protobuf/CodecGen.java
+++ b/src/main/java/com/google/gwtorm/protobuf/CodecGen.java
@@ -74,7 +74,7 @@
     classLoader = loader;
     pojo = t;
     pojoType = Type.getType(pojo);
-    nestedCodecs = new HashMap<Class<?>, NestedCodec>();
+    nestedCodecs = new HashMap<>();
   }
 
   public ProtobufCodec<T> create() throws OrmException {
@@ -112,7 +112,7 @@
   }
 
   private static JavaColumnModel[] scanFields(Class<?> in) throws OrmException {
-    final Collection<JavaColumnModel> col = new ArrayList<JavaColumnModel>();
+    final Collection<JavaColumnModel> col = new ArrayList<>();
     while (in != null) {
       for (final Field f : JavaColumnModel.getDeclaredFields(in)) {
         if (f.getAnnotation(Column.class) != null) {
diff --git a/src/main/java/com/google/gwtorm/schema/ColumnModel.java b/src/main/java/com/google/gwtorm/schema/ColumnModel.java
index e799edd..066b363 100644
--- a/src/main/java/com/google/gwtorm/schema/ColumnModel.java
+++ b/src/main/java/com/google/gwtorm/schema/ColumnModel.java
@@ -57,7 +57,7 @@
 
   protected void initNestedColumns(final Collection<? extends ColumnModel> col)
       throws OrmException {
-    nestedColumns = new ArrayList<ColumnModel>(col);
+    nestedColumns = new ArrayList<>(col);
     recomputeColumnNames();
     if (!isNotNull()) {
       // If we permit NULL we need to make sure our contained columns
@@ -68,7 +68,7 @@
       }
     }
 
-    Set<Integer> ids = new HashSet<Integer>();
+    Set<Integer> ids = new HashSet<>();
     for (final ColumnModel c : nestedColumns) {
       if (!ids.add(c.columnId)) {
         throw new OrmException("Duplicate @Column id " + c.columnId + " in "
@@ -108,7 +108,7 @@
   }
 
   public Collection<ColumnModel> getAllLeafColumns() {
-    final ArrayList<ColumnModel> r = new ArrayList<ColumnModel>();
+    final ArrayList<ColumnModel> r = new ArrayList<>();
     for (final ColumnModel c : nestedColumns) {
       if (c.isNested()) {
         r.addAll(c.getAllLeafColumns());
diff --git a/src/main/java/com/google/gwtorm/schema/QueryModel.java b/src/main/java/com/google/gwtorm/schema/QueryModel.java
index db776a7..9fa3485 100644
--- a/src/main/java/com/google/gwtorm/schema/QueryModel.java
+++ b/src/main/java/com/google/gwtorm/schema/QueryModel.java
@@ -68,7 +68,7 @@
   }
 
   public List<ColumnModel> getParameters() {
-    final ArrayList<ColumnModel> r = new ArrayList<ColumnModel>();
+    final ArrayList<ColumnModel> r = new ArrayList<>();
     if (parsedQuery != null) {
       findParameters(r, parsedQuery);
     }
@@ -100,7 +100,7 @@
   }
 
   public List<OrderBy> getOrderBy() {
-    ArrayList<OrderBy> r = new ArrayList<OrderBy>();
+    ArrayList<OrderBy> r = new ArrayList<>();
     if (parsedQuery != null) {
       Tree node = findOrderBy(parsedQuery);
       if (node != null) {
diff --git a/src/main/java/com/google/gwtorm/schema/RelationModel.java b/src/main/java/com/google/gwtorm/schema/RelationModel.java
index aab3132..f5b6c16 100644
--- a/src/main/java/com/google/gwtorm/schema/RelationModel.java
+++ b/src/main/java/com/google/gwtorm/schema/RelationModel.java
@@ -129,7 +129,7 @@
   }
 
   public Collection<ColumnModel> getDependentFields() {
-    final ArrayList<ColumnModel> r = new ArrayList<ColumnModel>();
+    final ArrayList<ColumnModel> r = new ArrayList<>();
     for (final ColumnModel c : fieldsByFieldName.values()) {
       if (!c.rowVersion && (primaryKey == null || primaryKey.getField() != c)) {
         r.add(c);
@@ -139,7 +139,7 @@
   }
 
   public Collection<ColumnModel> getDependentColumns() {
-    final ArrayList<ColumnModel> r = new ArrayList<ColumnModel>();
+    final ArrayList<ColumnModel> r = new ArrayList<>();
     for (final ColumnModel c : columnsByColumnName.values()) {
       if (!c.inPrimaryKey && !c.rowVersion) {
         r.add(c);
@@ -149,7 +149,7 @@
   }
 
   public Collection<ColumnModel> getRowVersionFields() {
-    final ArrayList<ColumnModel> r = new ArrayList<ColumnModel>();
+    final ArrayList<ColumnModel> r = new ArrayList<>();
     for (final ColumnModel c : fieldsByFieldName.values()) {
       if (c.rowVersion) {
         r.add(c);
@@ -159,7 +159,7 @@
   }
 
   public Collection<ColumnModel> getRowVersionColumns() {
-    final ArrayList<ColumnModel> r = new ArrayList<ColumnModel>();
+    final ArrayList<ColumnModel> r = new ArrayList<>();
     for (final ColumnModel c : columnsByColumnName.values()) {
       if (c.rowVersion) {
         r.add(c);
@@ -184,7 +184,7 @@
   }
 
   public Collection<ColumnModel> getColumns() {
-    final ArrayList<ColumnModel> r = new ArrayList<ColumnModel>();
+    final ArrayList<ColumnModel> r = new ArrayList<>();
     r.addAll(getDependentColumns());
     r.addAll(getRowVersionColumns());
     r.addAll(getPrimaryKeyColumns());
@@ -297,7 +297,7 @@
     List<ColumnModel> cols;
     int nth = 1;
 
-    cols = new ArrayList<ColumnModel>();
+    cols = new ArrayList<>();
     cols.addAll(getDependentColumns());
     cols.addAll(getRowVersionColumns());
     for (final Iterator<ColumnModel> i = cols.iterator(); i.hasNext();) {
@@ -311,7 +311,7 @@
     }
 
     r.append(" WHERE ");
-    cols = new ArrayList<ColumnModel>();
+    cols = new ArrayList<>();
     cols.addAll(getPrimaryKeyColumns());
     cols.addAll(getRowVersionColumns());
     for (final Iterator<ColumnModel> i = cols.iterator(); i.hasNext();) {
@@ -332,7 +332,7 @@
     r.append(relationName);
     int nth = 1;
     r.append(" WHERE ");
-    final List<ColumnModel> cols = new ArrayList<ColumnModel>();
+    final List<ColumnModel> cols = new ArrayList<>();
     cols.addAll(getPrimaryKeyColumns());
     cols.addAll(getRowVersionColumns());
     for (final Iterator<ColumnModel> i = cols.iterator(); i.hasNext();) {
diff --git a/src/main/java/com/google/gwtorm/schema/SchemaModel.java b/src/main/java/com/google/gwtorm/schema/SchemaModel.java
index ca1b3ff..b8ed338 100644
--- a/src/main/java/com/google/gwtorm/schema/SchemaModel.java
+++ b/src/main/java/com/google/gwtorm/schema/SchemaModel.java
@@ -29,9 +29,9 @@
   protected final Map<String, SequenceModel> sequences;
 
   protected SchemaModel() {
-    allNames = new HashSet<String>();
-    relations = new TreeMap<String, RelationModel>();
-    sequences = new TreeMap<String, SequenceModel>();
+    allNames = new HashSet<>();
+    relations = new TreeMap<>();
+    sequences = new TreeMap<>();
   }
 
   protected void add(final RelationModel r) throws OrmException {
diff --git a/src/main/java/com/google/gwtorm/schema/java/JavaColumnModel.java b/src/main/java/com/google/gwtorm/schema/java/JavaColumnModel.java
index 16d3be8..9e2b30c 100644
--- a/src/main/java/com/google/gwtorm/schema/java/JavaColumnModel.java
+++ b/src/main/java/com/google/gwtorm/schema/java/JavaColumnModel.java
@@ -99,7 +99,7 @@
 
   private void initNested() throws OrmException {
     if (isNested()) {
-      final List<JavaColumnModel> col = new ArrayList<JavaColumnModel>();
+      final List<JavaColumnModel> col = new ArrayList<>();
       Class<?> in = primitiveType;
       while (in != null) {
         for (final Field f : getDeclaredFields(in)) {
diff --git a/src/main/java/com/google/gwtorm/schema/java/JavaRelationModel.java b/src/main/java/com/google/gwtorm/schema/java/JavaRelationModel.java
index 8f2020e..4778663 100644
--- a/src/main/java/com/google/gwtorm/schema/java/JavaRelationModel.java
+++ b/src/main/java/com/google/gwtorm/schema/java/JavaRelationModel.java
@@ -62,7 +62,7 @@
   }
 
   private void initColumns() throws OrmException {
-    final List<JavaColumnModel> col = new ArrayList<JavaColumnModel>();
+    final List<JavaColumnModel> col = new ArrayList<>();
     Class<?> in = entityType;
     while (in != null) {
       for (final Field f : JavaColumnModel.getDeclaredFields(in)) {
diff --git a/src/main/java/com/google/gwtorm/schema/java/ProtoFileGenerator.java b/src/main/java/com/google/gwtorm/schema/java/ProtoFileGenerator.java
index 0bbd524..900ce02 100644
--- a/src/main/java/com/google/gwtorm/schema/java/ProtoFileGenerator.java
+++ b/src/main/java/com/google/gwtorm/schema/java/ProtoFileGenerator.java
@@ -54,8 +54,8 @@
   ProtoFileGenerator(String schemaName, Collection<RelationModel> relations) {
     this.schemaName = schemaName;
     this.rels = relations;
-    this.seen = new HashSet<String>();
-    this.collisions = new HashSet<String>();
+    this.seen = new HashSet<>();
+    this.collisions = new HashSet<>();
   }
 
   void print(PrintWriter out) {
@@ -181,14 +181,14 @@
   }
 
   private static List<ColumnModel> sortColumns(Collection<ColumnModel> cols) {
-    ArrayList<ColumnModel> list = new ArrayList<ColumnModel>(cols);
+    ArrayList<ColumnModel> list = new ArrayList<>(cols);
     Collections.sort(list, COLUMN_COMPARATOR);
     return list;
   }
 
   private static List<RelationModel> sortRelations(
       Collection<RelationModel> rels) {
-    ArrayList<RelationModel> list = new ArrayList<RelationModel>(rels);
+    ArrayList<RelationModel> list = new ArrayList<>(rels);
     Collections.sort(list, RELATION_COMPARATOR);
     return list;
   }
diff --git a/src/main/java/com/google/gwtorm/schema/sql/DialectH2.java b/src/main/java/com/google/gwtorm/schema/sql/DialectH2.java
index 3cf7ff9..5111b72 100644
--- a/src/main/java/com/google/gwtorm/schema/sql/DialectH2.java
+++ b/src/main/java/com/google/gwtorm/schema/sql/DialectH2.java
@@ -60,7 +60,7 @@
               + " FROM INFORMATION_SCHEMA.SEQUENCES"
               + " WHERE SEQUENCE_SCHEMA = 'PUBLIC'");
       try {
-        HashSet<String> sequences = new HashSet<String>();
+        HashSet<String> sequences = new HashSet<>();
         while (rs.next()) {
           sequences.add(rs.getString(1).toLowerCase());
         }
diff --git a/src/main/java/com/google/gwtorm/schema/sql/DialectMaxDB.java b/src/main/java/com/google/gwtorm/schema/sql/DialectMaxDB.java
index b1cbc07..df3ac31 100644
--- a/src/main/java/com/google/gwtorm/schema/sql/DialectMaxDB.java
+++ b/src/main/java/com/google/gwtorm/schema/sql/DialectMaxDB.java
@@ -59,7 +59,7 @@
       final ResultSet rs =
           s.executeQuery("SELECT sequence_name FROM sequences");
       try {
-        HashSet<String> sequences = new HashSet<String>();
+        HashSet<String> sequences = new HashSet<>();
         while (rs.next()) {
           sequences.add(rs.getString(1).toLowerCase());
         }
diff --git a/src/main/java/com/google/gwtorm/schema/sql/DialectMySQL.java b/src/main/java/com/google/gwtorm/schema/sql/DialectMySQL.java
index aad5037..c4cb7e1 100644
--- a/src/main/java/com/google/gwtorm/schema/sql/DialectMySQL.java
+++ b/src/main/java/com/google/gwtorm/schema/sql/DialectMySQL.java
@@ -132,7 +132,7 @@
     final String[] types = new String[] {"TABLE"};
     final ResultSet rs = db.getMetaData().getTables(null, null, null, types);
     try {
-      HashSet<String> tables = new HashSet<String>();
+      HashSet<String> tables = new HashSet<>();
       while (rs.next()) {
         final String name = rs.getString("TABLE_NAME");
         if (!isSequence(db, name)) {
@@ -150,7 +150,7 @@
     final String[] types = new String[] {"TABLE"};
     final ResultSet rs = db.getMetaData().getTables(null, null, null, types);
     try {
-      HashSet<String> sequences = new HashSet<String>();
+      HashSet<String> sequences = new HashSet<>();
       while (rs.next()) {
         final String name = rs.getString("TABLE_NAME");
         if (isSequence(db, name)) {
diff --git a/src/main/java/com/google/gwtorm/schema/sql/DialectOracle.java b/src/main/java/com/google/gwtorm/schema/sql/DialectOracle.java
index d006b16..b96081a 100644
--- a/src/main/java/com/google/gwtorm/schema/sql/DialectOracle.java
+++ b/src/main/java/com/google/gwtorm/schema/sql/DialectOracle.java
@@ -55,7 +55,7 @@
     try {
       ResultSet rs = s.executeQuery("SELECT table_name FROM user_tables");
       try {
-        Set<String> tables = new HashSet<String>();
+        Set<String> tables = new HashSet<>();
         while (rs.next()) {
           tables.add(rs.getString(1).toLowerCase());
         }
@@ -77,7 +77,7 @@
       s.setString(1, tableName.toUpperCase());
       ResultSet rs = s.executeQuery();
       try {
-        Set<String> indexes = new HashSet<String>();
+        Set<String> indexes = new HashSet<>();
         while (rs.next()) {
           indexes.add(rs.getString(1).toLowerCase());
         }
@@ -96,7 +96,7 @@
     try {
       ResultSet rs = s.executeQuery("SELECT sequence_name FROM user_sequences");
       try {
-        Set<String> sequences = new HashSet<String>();
+        Set<String> sequences = new HashSet<>();
         while (rs.next()) {
           sequences.add(rs.getString(1).toLowerCase());
         }
diff --git a/src/main/java/com/google/gwtorm/schema/sql/DialectPostgreSQL.java b/src/main/java/com/google/gwtorm/schema/sql/DialectPostgreSQL.java
index c707af6..fb8a75e 100644
--- a/src/main/java/com/google/gwtorm/schema/sql/DialectPostgreSQL.java
+++ b/src/main/java/com/google/gwtorm/schema/sql/DialectPostgreSQL.java
@@ -97,7 +97,7 @@
       ResultSet rs =
           s.executeQuery("SELECT relname FROM pg_class WHERE relkind = 'S'");
       try {
-        HashSet<String> sequences = new HashSet<String>();
+        HashSet<String> sequences = new HashSet<>();
         while (rs.next()) {
           sequences.add(rs.getString(1).toLowerCase());
         }
diff --git a/src/main/java/com/google/gwtorm/schema/sql/SqlDialect.java b/src/main/java/com/google/gwtorm/schema/sql/SqlDialect.java
index 458d4f9..7e59126 100644
--- a/src/main/java/com/google/gwtorm/schema/sql/SqlDialect.java
+++ b/src/main/java/com/google/gwtorm/schema/sql/SqlDialect.java
@@ -37,7 +37,7 @@
 
 public abstract class SqlDialect {
   private static final List<SqlDialect> DIALECTS =
-      new CopyOnWriteArrayList<SqlDialect>();
+      new CopyOnWriteArrayList<>();
 
   static {
     DIALECTS.add(new DialectH2());
@@ -66,7 +66,7 @@
   protected final Map<Integer, String> typeNames;
 
   protected SqlDialect() {
-    types = new HashMap<Class<?>, SqlTypeInfo>();
+    types = new HashMap<>();
     types.put(Boolean.TYPE, new SqlBooleanTypeInfo());
     types.put(Short.TYPE, new SqlShortTypeInfo());
     types.put(Integer.TYPE, new SqlIntTypeInfo());
@@ -77,7 +77,7 @@
     types.put(java.sql.Timestamp.class, new SqlTimestampTypeInfo());
     types.put(byte[].class, new SqlByteArrayTypeInfo());
 
-    typeNames = new HashMap<Integer, String>();
+    typeNames = new HashMap<>();
     typeNames.put(Types.VARBINARY, "BLOB");
     typeNames.put(Types.DATE, "DATE");
     typeNames.put(Types.SMALLINT, "SMALLINT");
@@ -225,7 +225,7 @@
     final String[] types = new String[] {"TABLE"};
     final ResultSet rs = db.getMetaData().getTables(null, null, null, types);
     try {
-      Set<String> tables = new HashSet<String>();
+      Set<String> tables = new HashSet<>();
       while (rs.next()) {
         tables.add(rs.getString("TABLE_NAME").toLowerCase());
       }
@@ -273,7 +273,7 @@
 
     ResultSet rs = meta.getIndexInfo(null, null, tableName, false, true);
     try {
-      Set<String> indexes = new HashSet<String>();
+      Set<String> indexes = new HashSet<>();
       while (rs.next()) {
         indexes.add(rs.getString("INDEX_NAME").toLowerCase());
       }
@@ -312,7 +312,7 @@
 
     ResultSet rs = meta.getColumns(null, null, tableName, null);
     try {
-      HashSet<String> columns = new HashSet<String>();
+      HashSet<String> columns = new HashSet<>();
       while (rs.next()) {
         columns.add(rs.getString("COLUMN_NAME").toLowerCase());
       }
diff --git a/src/main/java/com/google/gwtorm/server/AbstractAccess.java b/src/main/java/com/google/gwtorm/server/AbstractAccess.java
index f598630..a814ec8 100644
--- a/src/main/java/com/google/gwtorm/server/AbstractAccess.java
+++ b/src/main/java/com/google/gwtorm/server/AbstractAccess.java
@@ -43,20 +43,20 @@
 
   @Override
   public ResultSet<E> get(final Iterable<K> keys) throws OrmException {
-    final ArrayList<E> r = new ArrayList<E>();
+    final ArrayList<E> r = new ArrayList<>();
     for (final K key : keys) {
       final E o = get(key);
       if (o != null) {
         r.add(o);
       }
     }
-    return new ListResultSet<E>(r);
+    return new ListResultSet<>(r);
   }
 
   @Override
   public Map<K, E> toMap(final Iterable<E> c) {
     try {
-      final HashMap<K, E> r = new HashMap<K, E>();
+      final HashMap<K, E> r = new HashMap<>();
       for (final E e : c) {
         r.put(primaryKey(e), e);
       }
diff --git a/src/main/java/com/google/gwtorm/server/AbstractResultSet.java b/src/main/java/com/google/gwtorm/server/AbstractResultSet.java
index 5eb2803..f3cf5ce 100644
--- a/src/main/java/com/google/gwtorm/server/AbstractResultSet.java
+++ b/src/main/java/com/google/gwtorm/server/AbstractResultSet.java
@@ -47,7 +47,7 @@
 
   @Override
   public List<T> toList() {
-    List<T> r = new ArrayList<T>();
+    List<T> r = new ArrayList<>();
     for (T obj : this) {
       r.add(obj);
     }
diff --git a/src/main/java/com/google/gwtorm/server/CodeGenSupport.java b/src/main/java/com/google/gwtorm/server/CodeGenSupport.java
index 71756ee..df75300 100644
--- a/src/main/java/com/google/gwtorm/server/CodeGenSupport.java
+++ b/src/main/java/com/google/gwtorm/server/CodeGenSupport.java
@@ -34,7 +34,7 @@
   private Type entityType;
 
   private int lastLocal = 2;
-  private List<Integer> freeLocals = new ArrayList<Integer>(4);
+  private List<Integer> freeLocals = new ArrayList<>(4);
 
   public CodeGenSupport(final MethodVisitor method) {
     mv = method;
diff --git a/src/main/java/com/google/gwtorm/server/ListResultSet.java b/src/main/java/com/google/gwtorm/server/ListResultSet.java
index 642dd0c..019d976 100644
--- a/src/main/java/com/google/gwtorm/server/ListResultSet.java
+++ b/src/main/java/com/google/gwtorm/server/ListResultSet.java
@@ -36,7 +36,7 @@
     if (items == null) {
       throw new IllegalStateException("Results already obtained");
     }
-    final List<T> r = new ArrayList<T>(items);
+    final List<T> r = new ArrayList<>(items);
     items = null;
     return r;
   }
diff --git a/src/main/java/com/google/gwtorm/server/SchemaGen.java b/src/main/java/com/google/gwtorm/server/SchemaGen.java
index ed17d15..b0a44de 100644
--- a/src/main/java/com/google/gwtorm/server/SchemaGen.java
+++ b/src/main/java/com/google/gwtorm/server/SchemaGen.java
@@ -94,7 +94,7 @@
   }
 
   private void defineRelationClasses() throws OrmException {
-    relations = new ArrayList<RelationGen>();
+    relations = new ArrayList<>();
     for (final RelationModel rel : schema.getRelations()) {
       final Class<?> a = accessGen.create(classLoader, rel);
       relations.add(new RelationGen(rel, a));
diff --git a/src/test/java/com/google/gwtorm/jdbc/AbstractTestJdbcAccess.java b/src/test/java/com/google/gwtorm/jdbc/AbstractTestJdbcAccess.java
index 3fad032..808d66b 100644
--- a/src/test/java/com/google/gwtorm/jdbc/AbstractTestJdbcAccess.java
+++ b/src/test/java/com/google/gwtorm/jdbc/AbstractTestJdbcAccess.java
@@ -86,7 +86,7 @@
         @Override
         Iterable<Data> createIterable(Data... data) {
           List<Data> list = Arrays.asList(data);
-          return new ListResultSet<Data>(list);
+          return new ListResultSet<>(list);
         }
       };
 
diff --git a/src/test/java/com/google/gwtorm/nosql/NoSqlPhoneBookTest.java b/src/test/java/com/google/gwtorm/nosql/NoSqlPhoneBookTest.java
index 71672e5..a89627c 100644
--- a/src/test/java/com/google/gwtorm/nosql/NoSqlPhoneBookTest.java
+++ b/src/test/java/com/google/gwtorm/nosql/NoSqlPhoneBookTest.java
@@ -43,8 +43,8 @@
 
   @Before
   public void setUp() throws Exception {
-    db = new MemoryDatabase<PhoneBookDb>(PhoneBookDb.class);
-    openSchemas = new ArrayList<PhoneBookDb>();
+    db = new MemoryDatabase<>(PhoneBookDb.class);
+    openSchemas = new ArrayList<>();
   }
 
   @After
@@ -180,7 +180,7 @@
   @Test
   public void testInsertManyPeople() throws Exception {
     final PhoneBookDb schema = open();
-    final ArrayList<Person> all = new ArrayList<Person>();
+    final ArrayList<Person> all = new ArrayList<>();
     all.add(new Person(new Person.Key("Bob"), 18));
     all.add(new Person(new Person.Key("Mary"), 22));
     all.add(new Person(new Person.Key("Zak"), 33));
@@ -249,7 +249,7 @@
   @Test
   public void testFetchByAge() throws Exception {
     final PhoneBookDb schema = open();
-    final ArrayList<Person> all = new ArrayList<Person>();
+    final ArrayList<Person> all = new ArrayList<>();
     all.add(new Person(new Person.Key("Bob"), 18));
     all.add(new Person(new Person.Key("Mary"), 22));
     all.add(new Person(new Person.Key("Zak"), 33));
diff --git a/src/test/java/com/google/gwtorm/protobuf/ProtobufEncoderTest.java b/src/test/java/com/google/gwtorm/protobuf/ProtobufEncoderTest.java
index 8b00dfd..bca38ee 100644
--- a/src/test/java/com/google/gwtorm/protobuf/ProtobufEncoderTest.java
+++ b/src/test/java/com/google/gwtorm/protobuf/ProtobufEncoderTest.java
@@ -153,7 +153,7 @@
     ProtobufCodec<StringList> e = CodecFactory.encoder(StringList.class);
 
     StringList list = new StringList();
-    list.list = new ArrayList<String>();
+    list.list = new ArrayList<>();
     list.list.add("moe");
     list.list.add("larry");
 
@@ -173,7 +173,7 @@
     ProtobufCodec<StringSet> e = CodecFactory.encoder(StringSet.class);
 
     StringSet list = new StringSet();
-    list.list = new TreeSet<String>();
+    list.list = new TreeSet<>();
     list.list.add("larry");
     list.list.add("moe");
 
@@ -193,7 +193,7 @@
     ProtobufCodec<PersonList> e = CodecFactory.encoder(PersonList.class);
 
     PersonList list = new PersonList();
-    list.people = new ArrayList<Person>();
+    list.people = new ArrayList<>();
     list.people.add(new Person(new Person.Key("larry"), 1 << 16));
     list.people.add(new Person(new Person.Key("curly"), 1));
     list.people.add(new Person(new Person.Key("moe"), -1));
@@ -208,7 +208,7 @@
     ProtobufCodec<ItemList> e = CodecFactory.encoder(ItemList.class);
 
     ItemList list = new ItemList();
-    list.list = new ArrayList<Item>();
+    list.list = new ArrayList<>();
     list.list.add(new Item());
     list.list.add(new Item());
 
diff --git a/src/test/java/com/google/gwtorm/schema/QueryParserTest.java b/src/test/java/com/google/gwtorm/schema/QueryParserTest.java
index ada20c9..ad90e0a 100644
--- a/src/test/java/com/google/gwtorm/schema/QueryParserTest.java
+++ b/src/test/java/com/google/gwtorm/schema/QueryParserTest.java
@@ -67,7 +67,7 @@
   protected Tree parse(final String str) throws QueryParseException {
     final RelationModel dummy = new RelationModel() {
       {
-        final Collection<ColumnModel> c = new ArrayList<ColumnModel>();
+        final Collection<ColumnModel> c = new ArrayList<>();
         try {
           c.add(new DummyColumn(1, "name"));
           c.add(new DummyColumn(2, "a"));
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectH2Test.java b/src/test/java/com/google/gwtorm/schema/sql/DialectH2Test.java
index 9991b6f..8e86e1f 100644
--- a/src/test/java/com/google/gwtorm/schema/sql/DialectH2Test.java
+++ b/src/test/java/com/google/gwtorm/schema/sql/DialectH2Test.java
@@ -50,9 +50,9 @@
     p.setProperty("driver", org.h2.Driver.class.getName());
     p.setProperty("url", db.getMetaData().getURL());
     phoneBook =
-        new Database<PhoneBookDb>(new SimpleDataSource(p), PhoneBookDb.class);
+        new Database<>(new SimpleDataSource(p), PhoneBookDb.class);
     phoneBook2 =
-        new Database<PhoneBookDb2>(new SimpleDataSource(p), PhoneBookDb2.class);
+        new Database<>(new SimpleDataSource(p), PhoneBookDb2.class);
   }
 
   @After
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectMaxDBTest.java b/src/test/java/com/google/gwtorm/schema/sql/DialectMaxDBTest.java
index c193719..7b21d10 100644
--- a/src/test/java/com/google/gwtorm/schema/sql/DialectMaxDBTest.java
+++ b/src/test/java/com/google/gwtorm/schema/sql/DialectMaxDBTest.java
@@ -70,9 +70,9 @@
     p.setProperty("user", user);
     p.setProperty("password", pass);
     phoneBook =
-        new Database<PhoneBookDb>(new SimpleDataSource(p), PhoneBookDb.class);
+        new Database<>(new SimpleDataSource(p), PhoneBookDb.class);
     phoneBook2 =
-        new Database<PhoneBookDb2>(new SimpleDataSource(p), PhoneBookDb2.class);
+        new Database<>(new SimpleDataSource(p), PhoneBookDb2.class);
   }
 
   private void drop(String drop) {
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectMySQLTest.java b/src/test/java/com/google/gwtorm/schema/sql/DialectMySQLTest.java
index 3b31595..46f1ec4 100644
--- a/src/test/java/com/google/gwtorm/schema/sql/DialectMySQLTest.java
+++ b/src/test/java/com/google/gwtorm/schema/sql/DialectMySQLTest.java
@@ -65,9 +65,9 @@
     p.setProperty("user", user);
     p.setProperty("password", pass);
     phoneBook =
-        new Database<PhoneBookDb>(new SimpleDataSource(p), PhoneBookDb.class);
+        new Database<>(new SimpleDataSource(p), PhoneBookDb.class);
     phoneBook2 =
-        new Database<PhoneBookDb2>(new SimpleDataSource(p), PhoneBookDb2.class);
+        new Database<>(new SimpleDataSource(p), PhoneBookDb2.class);
   }
 
   @After
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectOracleSQLTest.java b/src/test/java/com/google/gwtorm/schema/sql/DialectOracleSQLTest.java
index 5e39c9b..431503d 100644
--- a/src/test/java/com/google/gwtorm/schema/sql/DialectOracleSQLTest.java
+++ b/src/test/java/com/google/gwtorm/schema/sql/DialectOracleSQLTest.java
@@ -65,9 +65,9 @@
     p.setProperty("user", user);
     p.setProperty("password", pass);
     phoneBook =
-        new Database<PhoneBookDb>(new SimpleDataSource(p), PhoneBookDb.class);
+        new Database<>(new SimpleDataSource(p), PhoneBookDb.class);
     phoneBook2 =
-        new Database<PhoneBookDb2>(new SimpleDataSource(p), PhoneBookDb2.class);
+        new Database<>(new SimpleDataSource(p), PhoneBookDb2.class);
   }
 
   @After
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectPostgreSQLTest.java b/src/test/java/com/google/gwtorm/schema/sql/DialectPostgreSQLTest.java
index ca9326c..fc6b0a9 100644
--- a/src/test/java/com/google/gwtorm/schema/sql/DialectPostgreSQLTest.java
+++ b/src/test/java/com/google/gwtorm/schema/sql/DialectPostgreSQLTest.java
@@ -63,9 +63,9 @@
     p.setProperty("user", user);
     p.setProperty("password", pass);
     phoneBook =
-        new Database<PhoneBookDb>(new SimpleDataSource(p), PhoneBookDb.class);
+        new Database<>(new SimpleDataSource(p), PhoneBookDb.class);
     phoneBook2 =
-        new Database<PhoneBookDb2>(new SimpleDataSource(p), PhoneBookDb2.class);
+        new Database<>(new SimpleDataSource(p), PhoneBookDb2.class);
   }
 
   @After
diff --git a/src/test/java/com/google/gwtorm/server/PhoneBookDbTestCase.java b/src/test/java/com/google/gwtorm/server/PhoneBookDbTestCase.java
index 247a4a4..4f99f61 100644
--- a/src/test/java/com/google/gwtorm/server/PhoneBookDbTestCase.java
+++ b/src/test/java/com/google/gwtorm/server/PhoneBookDbTestCase.java
@@ -52,8 +52,8 @@
     final Properties p = new Properties();
     p.setProperty("driver", org.h2.Driver.class.getName());
     p.setProperty("url", "jdbc:h2:mem:PhoneBookDb" + (runCount++));
-    db = new Database<PhoneBookDb>(new SimpleDataSource(p), PhoneBookDb.class);
-    openSchemas = new ArrayList<PhoneBookDb>();
+    db = new Database<>(new SimpleDataSource(p), PhoneBookDb.class);
+    openSchemas = new ArrayList<>();
   }
 
   @After
@@ -220,7 +220,7 @@
   @Test
   public void testInsertManyPeople() throws Exception {
     final PhoneBookDb schema = openAndCreate();
-    final ArrayList<Person> all = new ArrayList<Person>();
+    final ArrayList<Person> all = new ArrayList<>();
     all.add(new Person(new Person.Key("Bob"), 18));
     all.add(new Person(new Person.Key("Mary"), 22));
     all.add(new Person(new Person.Key("Zak"), 33));
@@ -316,7 +316,7 @@
   @Test
   public void testFetchByAge() throws Exception {
     final PhoneBookDb schema = openAndCreate();
-    final ArrayList<Person> all = new ArrayList<Person>();
+    final ArrayList<Person> all = new ArrayList<>();
     all.add(new Person(new Person.Key("Bob"), 18));
     all.add(new Person(new Person.Key("Mary"), 22));
     all.add(new Person(new Person.Key("Zak"), 33));
@@ -331,7 +331,7 @@
   @Test
   public void testFetchNotPerson() throws Exception {
     final PhoneBookDb schema = openAndCreate();
-    final ArrayList<Person> all = new ArrayList<Person>();
+    final ArrayList<Person> all = new ArrayList<>();
     all.add(new Person(new Person.Key("Bob"), 18));
     all.add(new Person(new Person.Key("Mary"), 22));
     all.add(new Person(new Person.Key("Zak"), 33));