OPENJPA-2665 use modern for loops

no functional change, just java lang updates
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/JDBCConfigurationImpl.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/JDBCConfigurationImpl.java
index 2b2ac33..bc8e61e 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/JDBCConfigurationImpl.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/JDBCConfigurationImpl.java
@@ -1063,8 +1063,8 @@
         // handle openjpa.jdbc.SomeMisspelledProperty, but not
         // openjpa.someotherimplementation.SomeProperty
         String[] prefixes = ProductDerivations.getConfigurationPrefixes();
-        for (int i = 0; i < prefixes.length; i++)
-            if (propName.toLowerCase(Locale.ENGLISH).startsWith(prefixes[i] + ".jdbc"))
+        for (String prefix : prefixes)
+            if (propName.toLowerCase(Locale.ENGLISH).startsWith(prefix + ".jdbc"))
                 return true;
         return false;
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/DBIdentifierUtilImpl.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/DBIdentifierUtilImpl.java
index b84d58f..8c99230 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/DBIdentifierUtilImpl.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/DBIdentifierUtilImpl.java
@@ -367,11 +367,11 @@
                   (path.getType() != DBIdentifierType.COLUMN &&
                    path.isUnqualifiedObject()))) {
                 DBIdentifier[] names = QualifiedDBIdentifier.splitPath(name);
-                for (int i = 0; i < names.length; i++) {
-                    DBIdentifier sName = names[i].getUnqualifiedName();
+                for (DBIdentifier dbIdentifier : names) {
+                    DBIdentifier sName = dbIdentifier.getUnqualifiedName();
                     if (!sName.isDelimited()) {
                         String pRule = sName.getType().name();
-                        names[i].setName(delimit(pRule, sName.getName(), force));
+                        dbIdentifier.setName(delimit(pRule, sName.getName(), force));
                     }
                 }
                 return QualifiedDBIdentifier.newPath(names).getName();
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/AbstractUpdateManager.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/AbstractUpdateManager.java
index 244efde..71ec053 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/AbstractUpdateManager.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/AbstractUpdateManager.java
@@ -91,15 +91,16 @@
         Collection customs = new LinkedList();
         Collection exceps = psMgr.getExceptions();
         Collection mappedByIdStates = new ArrayList();
-        for (Iterator itr = states.iterator(); itr.hasNext();) {
-            OpenJPAStateManager obj = (OpenJPAStateManager)itr.next();
+        for (Object state : states) {
+            OpenJPAStateManager obj = (OpenJPAStateManager) state;
             if (obj instanceof StateManagerImpl) {
                 StateManagerImpl sm = (StateManagerImpl) obj;
                 if (sm.getMappedByIdFields() != null)
                     mappedByIdStates.add(sm);
                 else exceps = populateRowManager(sm, rowMgr, store, exceps,
                         customs);
-            } else
+            }
+            else
                 exceps = populateRowManager(obj, rowMgr, store, exceps,
                         customs);
         }
@@ -108,8 +109,8 @@
         exceps = flush(rowMgr, psMgr, exceps);
 
         if (mappedByIdStates.size() != 0) {
-            for (Iterator itr = mappedByIdStates.iterator(); itr.hasNext();) {
-                StateManagerImpl sm = (StateManagerImpl) itr.next();
+            for (Object mappedByIdState : mappedByIdStates) {
+                StateManagerImpl sm = (StateManagerImpl) mappedByIdState;
                 exceps = populateRowManager(sm, rowMgr, store, exceps, customs);
             }
             // flush rows
@@ -236,10 +237,10 @@
         }
 
         BitSet dirty = sm.getDirty();
-        for (int i = 0; i < fields.length; i++) {
-            if (dirty.get(fields[i].getIndex())
-                && !bufferCustomInsert(fields[i], sm, store, customs)) {
-                fields[i].insert(sm, store, rowMgr);
+        for (FieldMapping field : fields) {
+            if (dirty.get(field.getIndex())
+                    && !bufferCustomInsert(field, sm, store, customs)) {
+                field.insert(sm, store, rowMgr);
             }
         }
         if (sup == null) {
@@ -256,14 +257,14 @@
         List<FieldMapping> pkFmds = new ArrayList<>();
         FieldMapping[] ret = new FieldMapping[fields.length];
         int j = 0;
-        for (int i = 0; i < fields.length; i++) {
-            if (!fields[i].isPrimaryKey())
-                ret[j++] = fields[i];
+        for (FieldMapping field : fields) {
+            if (!field.isPrimaryKey())
+                ret[j++] = field;
             else
-                pkFmds.add(fields[i]);
+                pkFmds.add(field);
         }
-        for (int i = 0; i <pkFmds.size(); i++) {
-            ret[j++] = pkFmds.get(i);
+        for (FieldMapping pkFmd : pkFmds) {
+            ret[j++] = pkFmd;
         }
         return ret;
     }
@@ -294,9 +295,9 @@
             return;
 
         FieldMapping[] fields = mapping.getDefinedFieldMappings();
-        for (int i = 0; i < fields.length; i++)
-            if (!bufferCustomDelete(fields[i], sm, store, customs))
-                fields[i].delete(sm, store, rowMgr);
+        for (FieldMapping field : fields)
+            if (!bufferCustomDelete(field, sm, store, customs))
+                field.delete(sm, store, rowMgr);
 
         ClassMapping sup = mapping.getJoinablePCSuperclassMapping();
         if (sup == null) {
@@ -339,20 +340,19 @@
         // update all fields before all mappings so that the mappings can
         // detect whether any fields in their rows have been modified
         FieldMapping[] fields = mapping.getDefinedFieldMappings();
-        for (int i = 0; i < fields.length; i++) {
-            FieldMapping field = fields[i];
+        for (FieldMapping field : fields) {
             if (dirty.get(field.getIndex())
-                && !bufferCustomUpdate(field, sm, store, customs)) {
+                    && !bufferCustomUpdate(field, sm, store, customs)) {
                 field.update(sm, store, rowMgr);
                 if (!updateIndicators) {
                     FieldMapping[] inverseFieldMappings =
-                        field.getInverseMappings();
+                            field.getInverseMappings();
                     if (inverseFieldMappings.length == 0) {
                         updateIndicators = true;
                     }
                     else {
                         for (FieldMapping inverseFieldMapping :
-                            inverseFieldMappings) {
+                                inverseFieldMappings) {
                             if (inverseFieldMapping.getMappedBy() != null) {
                                 updateIndicators = true;
                                 break;
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ConstraintUpdateManager.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ConstraintUpdateManager.java
index ee928d0..050d01d 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ConstraintUpdateManager.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ConstraintUpdateManager.java
@@ -22,7 +22,6 @@
 import java.sql.SQLException;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -147,8 +146,8 @@
         OpenJPAStateManager sm;
         if (!deletes.isEmpty() && !inserts.isEmpty()) {
             insertMap = new HashMap((int) (inserts.size() * 1.33 + 1));
-            for (Iterator itr = inserts.iterator(); itr.hasNext();) {
-                sm = ((Row) itr.next()).getPrimaryKey();
+            for (Object insert : inserts) {
+                sm = ((Row) insert).getPrimaryKey();
                 if (sm != null && sm.getObjectId() != null)
                     insertMap.put(sm.getObjectId(), sm);
             }
@@ -162,8 +161,8 @@
         ForeignKey[] fks;
         OpenJPAStateManager fkVal;
         boolean ignoreUpdates = true;
-        for (Iterator itr = deletes.iterator(); itr.hasNext();) {
-            row = (PrimaryRow) itr.next();
+        for (Object delete : deletes) {
+            row = (PrimaryRow) delete;
             if (!row.isValid())
                 continue;
 
@@ -175,20 +174,20 @@
 
             // now check this row's fks against other deletes
             fks = row.getTable().getForeignKeys();
-            for (int j = 0; j < fks.length; j++) {
+            for (ForeignKey fk : fks) {
                 // when deleting ref fks they'll just set a where value, so
                 // check both for fk updates (relation fks) and wheres (ref fks)
-                fkVal = row.getForeignKeySet(fks[j]);
+                fkVal = row.getForeignKeySet(fk);
                 if (fkVal == null)
-                    fkVal = row.getForeignKeyWhere(fks[j]);
+                    fkVal = row.getForeignKeyWhere(fk);
                 if (fkVal == null)
                     continue;
 
-                row2 = rowMgr.getRow(fks[j].getPrimaryKeyTable(),
-                    Row.ACTION_DELETE, fkVal, false);
+                row2 = rowMgr.getRow(fk.getPrimaryKeyTable(),
+                        Row.ACTION_DELETE, fkVal, false);
                 if (row2 != null && row2.isValid() && row2 != row)
                     graphs[1] = addEdge(graphs[1], (PrimaryRow) row2, row,
-                        fks[j]);
+                            fk);
             }
         }
 
@@ -235,8 +234,8 @@
         Row row2;
         ForeignKey[] fks;
         Column[] cols;
-        for (Iterator itr = rows.iterator(); itr.hasNext();) {
-            row = (PrimaryRow) itr.next();
+        for (Object o : rows) {
+            row = (PrimaryRow) o;
             if (!row.isValid())
                 continue;
 
@@ -244,33 +243,33 @@
             // column is treated just as actual database fk because the result
             // is the same: the pk row has to be inserted before the fk row
             fks = row.getTable().getForeignKeys();
-            for (int j = 0; j < fks.length; j++) {
-                if (row.getForeignKeySet(fks[j]) == null)
+            for (ForeignKey fk : fks) {
+                if (row.getForeignKeySet(fk) == null)
                     continue;
 
                 // see if this row is dependent on another.  if it's only
                 // depenent on itself, see if the fk is logical or deferred, in
                 // which case it must be an auto-inc because otherwise we
                 // wouldn't have recorded it
-                row2 = rowMgr.getRow(fks[j].getPrimaryKeyTable(),
-                    Row.ACTION_INSERT, row.getForeignKeySet(fks[j]), false);
+                row2 = rowMgr.getRow(fk.getPrimaryKeyTable(),
+                        Row.ACTION_INSERT, row.getForeignKeySet(fk), false);
                 if (row2 != null && row2.isValid() && (row2 != row
-                    || fks[j].isDeferred() || fks[j].isLogical()))
-                    graph = addEdge(graph, row, (PrimaryRow) row2, fks[j]);
+                        || fk.isDeferred() || fk.isLogical()))
+                    graph = addEdge(graph, row, (PrimaryRow) row2, fk);
             }
 
             // see if there are any relation id columns dependent on
             // auto-inc objects
             cols = row.getTable().getRelationIdColumns();
-            for (int j = 0; j < cols.length; j++) {
-                OpenJPAStateManager sm = row.getRelationIdSet(cols[j]);
+            for (Column col : cols) {
+                OpenJPAStateManager sm = row.getRelationIdSet(col);
                 if (sm == null)
                     continue;
 
                 row2 = rowMgr.getRow(getBaseTable(sm), Row.ACTION_INSERT,
-                    sm, false);
+                        sm, false);
                 if (row2 != null && row2.isValid())
-                    graph = addEdge(graph, row, (PrimaryRow) row2, cols[j]);
+                    graph = addEdge(graph, row, (PrimaryRow) row2, col);
             }
         }
         return graph;
@@ -354,11 +353,11 @@
         flush(insertUpdates, psMgr);
     }
 
-    protected void flush(Collection deleteUpdates, Collection nodes,
-    	PreparedStatementManager psMgr) {
+    protected void flush(Collection deleteUpdates, Collection nodes, PreparedStatementManager psMgr) {
         flush(deleteUpdates, psMgr);
-        for (Iterator itr = nodes.iterator(); itr.hasNext();)
-            psMgr.flush((RowImpl) itr.next());
+        for (Object node : nodes) {
+            psMgr.flush((RowImpl) node);
+        }
     }
 
     /**
@@ -439,15 +438,16 @@
      */
     private Edge findBreakableLink(List cycle) {
         Edge breakableLink = null;
-        for (Iterator iter = cycle.iterator(); iter.hasNext(); ) {
-            Edge edge = (Edge) iter.next();
+        for (Object o : cycle) {
+            Edge edge = (Edge) o;
             Object userObject = edge.getUserObject();
             if (userObject instanceof ForeignKey) {
-                 if (!((ForeignKey) userObject).hasNotNullColumns()) {
-                     breakableLink = edge;
-                     break;
-                 }
-            } else if (userObject instanceof Column) {
+                if (!((ForeignKey) userObject).hasNotNullColumns()) {
+                    breakableLink = edge;
+                    break;
+                }
+            }
+            else if (userObject instanceof Column) {
                 if (!((Column) userObject).isNotNull()) {
                     breakableLink = edge;
                     break;
@@ -495,8 +495,8 @@
         Collection deleteUpdates, Collection insertUpdates)
         throws SQLException {
         boolean recalculate = false;
-        for (Iterator itr = edges.iterator(); itr.hasNext();) {
-            Edge edge = (Edge) itr.next();
+        for (Object o : edges) {
+            Edge edge = (Edge) o;
             List cycle = edge.getCycle();
 
             if (cycle != null) {
@@ -521,7 +521,8 @@
                     PrimaryRow row = (PrimaryRow) breakableLink.getFrom();
                     if (row.getAction() == Row.ACTION_DELETE) {
                         addDeleteUpdate(breakableLink, deleteUpdates);
-                    } else {
+                    }
+                    else {
                         addInsertUpdate(row, breakableLink, insertUpdates);
                     }
                     graph.removeEdge(breakableLink);
@@ -548,8 +549,8 @@
             return;
 
         RowImpl row;
-        for (Iterator itr = rows.iterator(); itr.hasNext(); ) {
-            row = (RowImpl) itr.next();
+        for (Object o : rows) {
+            row = (RowImpl) o;
             if (!row.isFlushed() && row.isValid() && !row.isDependent()) {
                 psMgr.flush(row);
                 row.setFlushed(true);
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCFetchConfigurationImpl.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCFetchConfigurationImpl.java
index 53ad0ff..40e529c 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCFetchConfigurationImpl.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCFetchConfigurationImpl.java
@@ -24,7 +24,6 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Set;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
@@ -363,8 +362,9 @@
     public JDBCFetchConfiguration addJoins(Collection<String> joins) {
         if (joins == null || joins.isEmpty())
             return this;
-        for (Iterator<String> itr = joins.iterator(); itr.hasNext();)
-            addJoin(itr.next());
+        for (String join : joins) {
+            addJoin(join);
+        }
         return this;
     }
 
@@ -479,8 +479,9 @@
     public JDBCFetchConfiguration addFetchInnerJoins(Collection<String> joins) {
         if (joins == null || joins.isEmpty())
             return this;
-        for (Iterator<String> itr = joins.iterator(); itr.hasNext();)
-            addFetchInnerJoin(itr.next());
+        for (String join : joins) {
+            addFetchInnerJoin(join);
+        }
         return this;
     }
 }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreManager.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreManager.java
index e423923..0f9e1dd 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreManager.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreManager.java
@@ -27,7 +27,6 @@
 import java.util.BitSet;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -445,40 +444,39 @@
 
         // At this point, the owner is fully initialized.
         // Check if the owner has eagerly loaded ToMany relations.
-        for (int i = 0; i < fms.length; i++) {
-            if (res.getEager(fms[i]) != null) {
-                if (!fms[i].getElement().isTypePC()) {
+        for (FieldMapping fm : fms) {
+            if (res.getEager(fm) != null) {
+                if (!fm.getElement().isTypePC()) {
                     continue;
                 }
-                Object coll =  owner.fetchObject(fms[i].getIndex());
+                Object coll = owner.fetchObject(fm.getIndex());
                 if (coll instanceof Map)
-                    coll = ((Map<?,?>)coll).values();
+                    coll = ((Map<?, ?>) coll).values();
                 if (coll instanceof Collection<?> &&
-                    ((Collection<?>) coll).size() > 0) {
+                        ((Collection<?>) coll).size() > 0) {
                     // Found eagerly loaded collection.
                     // Publisher (1) <==>  (M) Magazine
                     //    publisher has a EAGER OneToMany relation
                     //    magazine has a EAGER or LAZY ManyToOne publisher
                     // For each member (Magazine) in the collection,
                     // set its inverse relation (Publisher).
-                    for (Iterator<?> itr = ((Collection<?>) coll).iterator();
-                        itr.hasNext();) {
-                        PersistenceCapable pc = (PersistenceCapable) itr.next();
+                    for (Object o : (Collection<?>) coll) {
+                        PersistenceCapable pc = (PersistenceCapable) o;
                         if (pc == null) {
                             continue;
                         }
                         OpenJPAStateManager sm = (OpenJPAStateManager) pc.pcGetStateManager();
                         ClassMapping cm =
-                            (ClassMapping) _conf.getMetaDataRepositoryInstance().getCachedMetaData(pc.getClass());
+                                (ClassMapping) _conf.getMetaDataRepositoryInstance().getCachedMetaData(pc.getClass());
                         FieldMapping[] fmd = cm.getFieldMappings();
-                        for (int j = 0; j < fmd.length; j++) {
+                        for (FieldMapping fieldMapping : fmd) {
                             // don't check the oids for basic fields.
-                            if (fmd[j].isTypePC()) {
-                                Object oid = sm.getIntermediate(fmd[j].getIndex());
+                            if (fieldMapping.isTypePC()) {
+                                Object oid = sm.getIntermediate(fieldMapping.getIndex());
                                 // if oid was setIntermediate() previously and it is the same as the owner,generate
                                 // then set the inverse relation
                                 if (oid != null && oid.equals(owner.getObjectId())) {
-                                    sm.storeObject(fmd[j].getIndex(), owner.getPersistenceCapable());
+                                    sm.storeObject(fieldMapping.getIndex(), owner.getPersistenceCapable());
                                     break;
                                 }
                             }
@@ -493,9 +491,9 @@
         FieldMapping mappedByFieldMapping, Object mappedByObject) {
         ClassMapping mapping = (ClassMapping) sm.getMetaData();
         FieldMapping[] fms = mapping.getFieldMappings();
-        for (int i = 0; i < fms.length; i++) {
-            if (fms[i] == mappedByFieldMapping) {
-                sm.storeObject(fms[i].getIndex(), mappedByObject);
+        for (FieldMapping fm : fms) {
+            if (fm == mappedByFieldMapping) {
+                sm.storeObject(fm.getIndex(), mappedByObject);
                 return;
             }
         }
@@ -771,8 +769,9 @@
         }
 
         try {
-            for (Iterator<Statement> itr = stmnts.iterator(); itr.hasNext();)
-                ((Statement) itr.next()).cancel();
+            for (Statement stmnt : stmnts) {
+                stmnt.cancel();
+            }
             return true;
         } catch (SQLException se) {
             throw SQLExceptions.getStore(se, _dict);
@@ -904,13 +903,13 @@
             });
 
             // using paging rop if any union element has paged fields
-            for (int i = 0; i < paged.length; i++) {
-                if (paged[i] != null)
+            for (BitSet bitSet : paged) {
+                if (bitSet != null) {
                     return new PagingResultObjectProvider(union, mappings,
-                        JDBCStoreManager.this, jfetch, paged, Long.MAX_VALUE);
+                            JDBCStoreManager.this, jfetch, paged, Long.MAX_VALUE);
+                }
             }
-            return new InstanceResultObjectProvider(union, mappings[0], this,
-                jfetch);
+            return new InstanceResultObjectProvider(union, mappings[0], this, jfetch);
         } catch (SQLException se) {
             throw SQLExceptions.getStore(se, _dict);
         }
@@ -1085,9 +1084,9 @@
             FieldMapping[] fms = mapping.getDefinedFieldMappings();
             if (exclude == null)
                 exclude = new BitSet(fms.length);
-            for (int i = 0; i < fms.length; i++) {
-                if (fms[i] == inverse) {
-                    exclude.set(fms[i].getIndex());
+            for (FieldMapping fm : fms) {
+                if (fm == inverse) {
+                    exclude.set(fm.getIndex());
                     break;
                 }
             }
@@ -1133,29 +1132,32 @@
         // load unloaded fields
         FieldMapping[] fms = mapping.getDefinedFieldMappings();
         Object eres, processed;
-        for (int i = 0; i < fms.length; i++) {
-            if (fms[i].isPrimaryKey() || sm.getLoaded().get(fms[i].getIndex()))
+        for (FieldMapping fm : fms) {
+            if (fm.isPrimaryKey() || sm.getLoaded().get(fm.getIndex()))
                 continue;
 
             // check for eager result, and if not present do standard load
-            eres = res.getEager(fms[i]);
-            res.startDataRequest(fms[i]);
+            eres = res.getEager(fm);
+            res.startDataRequest(fm);
             try {
-               if (eres == res) {
-                    if (eagerToMany == null && fms[i].isEagerSelectToMany())
-                        eagerToMany = fms[i];
+                if (eres == res) {
+                    if (eagerToMany == null && fm.isEagerSelectToMany())
+                        eagerToMany = fm;
                     else
-                        fms[i].loadEagerJoin(sm, this,
-                            fetch.traverseJDBC(fms[i]), res);
-                } else if (eres != null) {
-                    processed = fms[i].loadEagerParallel(sm, this,
-                        fetch.traverseJDBC(fms[i]), eres);
-                    if (processed != eres)
-                        res.putEager(fms[i], processed);
-                } else {
-                        fms[i].load(sm, this, fetch.traverseJDBC(fms[i]), res);
+                        fm.loadEagerJoin(sm, this,
+                                fetch.traverseJDBC(fm), res);
                 }
-            } finally {
+                else if (eres != null) {
+                    processed = fm.loadEagerParallel(sm, this,
+                            fetch.traverseJDBC(fm), eres);
+                    if (processed != eres)
+                        res.putEager(fm, processed);
+                }
+                else {
+                    fm.load(sm, this, fetch.traverseJDBC(fm), res);
+                }
+            }
+            finally {
                 res.endDataRequest();
             }
         }
@@ -1267,22 +1269,22 @@
         int sels;
         int jtype;
         int mode;
-        for (int i = 0; i < fms.length; i++) {
-            mode = fms[i].getEagerFetchMode();
+        for (FieldMapping fm : fms) {
+            mode = fm.getEagerFetchMode();
             if (mode == EagerFetchModes.EAGER_NONE)
                 continue;
-            if (!requiresSelect(fms[i], sm, fields, fetch))
+            if (!requiresSelect(fm, sm, fields, fetch))
                 continue;
 
             // try to select with join first
-            jtype = (fms[i].getNullValue() == FieldMetaData.NULL_EXCEPTION)
-                ? Select.EAGER_INNER : Select.EAGER_OUTER;
-            if (mode != EagerFetchModes.EAGER_PARALLEL && !fms[i].isEagerSelectToMany()
-                && fms[i].supportsSelect(sel, jtype, sm, this, fetch) > 0
-                && sel.eagerClone(fms[i], jtype, false, 1) != null)
+            jtype = (fm.getNullValue() == FieldMetaData.NULL_EXCEPTION)
+                    ? Select.EAGER_INNER : Select.EAGER_OUTER;
+            if (mode != EagerFetchModes.EAGER_PARALLEL && !fm.isEagerSelectToMany()
+                    && fm.supportsSelect(sel, jtype, sm, this, fetch) > 0
+                    && sel.eagerClone(fm, jtype, false, 1) != null)
                 continue;
 
-            boolean hasJoin = fetch.hasJoin(fms[i].getFullName(false));
+            boolean hasJoin = fetch.hasJoin(fm.getFullName(false));
 
             // if the field declares a preferred select mode of join or does not
             // have a preferred mode and we're doing a by-id lookup, try
@@ -1290,26 +1292,26 @@
             // outer joins to non-LRS, non-ranged selects that don't already
             // have an eager to-many join
             if ((hasJoin || mode == EagerFetchModes.EAGER_JOIN
-                || (mode == FetchConfiguration.DEFAULT && sm != null))
-                && fms[i].isEagerSelectToMany()
-                && !inEagerJoin
-                && !sel.hasEagerJoin(true)
-                && (!sel.getAutoDistinct() || (!sel.isLRS()
-                && sel.getStartIndex() == 0
-                && sel.getEndIndex() == Long.MAX_VALUE))
-                && fms[i].supportsSelect(sel, jtype, sm, this, fetch) > 0) {
-                if (sel.eagerClone(fms[i], jtype, true, 1) != null)
-                    eagerToMany = fms[i];
+                    || (mode == FetchConfiguration.DEFAULT && sm != null))
+                    && fm.isEagerSelectToMany()
+                    && !inEagerJoin
+                    && !sel.hasEagerJoin(true)
+                    && (!sel.getAutoDistinct() || (!sel.isLRS()
+                    && sel.getStartIndex() == 0
+                    && sel.getEndIndex() == Long.MAX_VALUE))
+                    && fm.supportsSelect(sel, jtype, sm, this, fetch) > 0) {
+                if (sel.eagerClone(fm, jtype, true, 1) != null)
+                    eagerToMany = fm;
                 else
                     continue;
             }
 
             // finally, try parallel
             if (eager == EagerFetchModes.EAGER_PARALLEL
-                && (sels = fms[i].supportsSelect(sel, Select.EAGER_PARALLEL, sm,
-                this, fetch)) != 0)
-                sel.eagerClone(fms[i], Select.EAGER_PARALLEL,
-                    fms[i].isEagerSelectToMany(), sels);
+                    && (sels = fm.supportsSelect(sel, Select.EAGER_PARALLEL, sm,
+                    this, fetch)) != 0)
+                sel.eagerClone(fm, Select.EAGER_PARALLEL,
+                        fm.isEagerSelectToMany(), sels);
         }
         return eagerToMany;
     }
@@ -1387,29 +1389,31 @@
         FieldMapping[] fms = mapping.getDefinedFieldMappings();
         SelectExecutor esel;
         int fseld;
-        for (int i = 0; i < fms.length; i++) {
+        for (FieldMapping fm : fms) {
             // skip eager to-many select; we do that separately in calling
             // method
-            if (fms[i] == eagerToMany)
+            if (fm == eagerToMany)
                 continue;
 
             // check for eager select
-            esel = sel.getEager(fms[i]);
+            esel = sel.getEager(fm);
             if (esel != null) {
                 if (esel == sel)
-                    fms[i].selectEagerJoin(sel, sm, this,
-                        fetch.traverseJDBC(fms[i]), eager);
+                    fm.selectEagerJoin(sel, sm, this,
+                            fetch.traverseJDBC(fm), eager);
                 else
-                    fms[i].selectEagerParallel(esel, sm, this,
-                        fetch.traverseJDBC(fms[i]), eager);
+                    fm.selectEagerParallel(esel, sm, this,
+                            fetch.traverseJDBC(fm), eager);
                 seld = Math.max(0, seld);
-            } else if (requiresSelect(fms[i], sm, fields, fetch)) {
-                fseld = fms[i].select(sel, sm, this,
-                    fetch.traverseJDBC(fms[i]), eager);
+            }
+            else if (requiresSelect(fm, sm, fields, fetch)) {
+                fseld = fm.select(sel, sm, this,
+                        fetch.traverseJDBC(fm), eager);
                 seld = Math.max(fseld, seld);
-            } else if (optSelect(fms[i], sel, sm, fetch)) {
-                fseld = fms[i].select(sel, sm, this,
-                    fetch.traverseJDBC(fms[i]), EagerFetchModes.EAGER_NONE);
+            }
+            else if (optSelect(fm, sel, sm, fetch)) {
+                fseld = fm.select(sel, sm, this,
+                        fetch.traverseJDBC(fm), EagerFetchModes.EAGER_NONE);
 
                 // don't upgrade seld to > 0 based on these fields, since
                 // they're not in the calculated field set
@@ -1423,8 +1427,8 @@
         if ( eagerToMany != null && pseld < 0 && !joined
                 && parent != null ) {
             FieldMapping[] pfms = parent.getDefinedFieldMappings();
-            for (int i = 0; i < pfms.length; i++) {
-                if (pfms[i] == eagerToMany ) {
+            for (FieldMapping pfm : pfms) {
+                if (pfm == eagerToMany) {
                     pseld = 0;
                     break;
                 }
@@ -1481,21 +1485,21 @@
         boolean joined;
         boolean canJoin = _dict.joinSyntax != JoinSyntaxes.SYNTAX_TRADITIONAL
             && fetch.getSubclassFetchMode(mapping) != EagerFetchModes.EAGER_NONE;
-        for (int i = 0; i < subMappings.length; i++) {
-            if (!subMappings[i].supportsEagerSelect(sel, sm, this, mapping,
-                fetch))
+        for (ClassMapping subMapping : subMappings) {
+            if (!subMapping.supportsEagerSelect(sel, sm, this, mapping,
+                    fetch))
                 continue;
 
             // initialize so that if we can't join, we pretend we already have
             joined = !canJoin;
-            fms = subMappings[i].getDefinedFieldMappings();
-            for (int j = 0; j < fms.length; j++) {
+            fms = subMapping.getDefinedFieldMappings();
+            for (FieldMapping fm : fms) {
                 // make sure in one of configured fetch groups
-                if (fetch.requiresFetch(fms[j]) != FetchConfiguration.FETCH_LOAD
-                    && ((!fms[j].isInDefaultFetchGroup()
-                    && fms[j].isDefaultFetchGroupExplicit())
-                    || fms[j].supportsSelect(sel, Select.TYPE_TWO_PART, sm, this,
-                    fetch) <= 0))
+                if (fetch.requiresFetch(fm) != FetchConfiguration.FETCH_LOAD
+                        && ((!fm.isInDefaultFetchGroup()
+                        && fm.isDefaultFetchGroupExplicit())
+                        || fm.supportsSelect(sel, Select.TYPE_TWO_PART, sm, this,
+                        fetch) <= 0))
                     continue;
 
                 // if we can join to the subclass, do so; much better chance
@@ -1504,12 +1508,12 @@
                     // mark joined whether or not we join, so we don't have to
                     // test conditions again for this subclass
                     joined = true;
-                    sel.where(joinSubclass(sel, mapping, subMappings[i], null));
+                    sel.where(joinSubclass(sel, mapping, subMapping, null));
                 }
 
                 // if can select with tables already selected, do it
-                if (fms[j].supportsSelect(sel, Select.TYPE_JOINLESS, sm, this, fetch) > 0)
-                    fms[j].select(sel, null, this, fetch.traverseJDBC(fms[j]), EagerFetchModes.EAGER_NONE);
+                if (fm.supportsSelect(sel, Select.TYPE_JOINLESS, sm, this, fetch) > 0)
+                    fm.select(sel, null, this, fetch.traverseJDBC(fm), EagerFetchModes.EAGER_NONE);
             }
         }
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java
index 8adec8a..9bec429 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java
@@ -318,10 +318,10 @@
             return new ProjectionResultObjectProvider(union, exps, states, ctx);
 
         if (paged != null)
-            for (int i = 0; i < paged.length; i++)
-                if (paged[i] != null)
+            for (BitSet bitSet : paged)
+                if (bitSet != null)
                     return new PagingResultObjectProvider(union, mappings,
-                        _store, ctx.fetch, paged, Long.MAX_VALUE);
+                            _store, ctx.fetch, paged, Long.MAX_VALUE);
 
         return new InstanceResultObjectProvider(union, mappings[0], _store,
             ctx.fetch);
@@ -420,8 +420,7 @@
             return null;
         int size = selectFrom.size();
         List retList = new ArrayList(size);
-        for (int i = 0; i < size; i++) {
-            Object obj = selectFrom.get(i);
+        for (Object obj : selectFrom) {
             if (!exSelectFrom.contains(obj))
                 retList.add(obj);
         }
@@ -465,9 +464,9 @@
 
         // recurse on immediate subclasses
         ClassMapping[] subMappings = mapping.getJoinablePCSubclassMappings();
-        for (int i = 0; i < subMappings.length; i++)
-            if (subMappings[i].getJoinablePCSuperclassMapping() == mapping)
-                addSubclasses(subMappings[i], subs);
+        for (ClassMapping subMapping : subMappings)
+            if (subMapping.getJoinablePCSuperclassMapping() == mapping)
+                addSubclasses(subMapping, subs);
     }
 
     /**
@@ -475,8 +474,8 @@
      */
     private static boolean hasVerticalSubclasses(ClassMapping mapping) {
         ClassMapping[] subs = mapping.getJoinablePCSubclassMappings();
-        for (int i = 0; i < subs.length; i++)
-            if (subs[i].getStrategy() instanceof VerticalClassStrategy)
+        for (ClassMapping sub : subs)
+            if (sub.getStrategy() instanceof VerticalClassStrategy)
                 return true;
         return false;
     }
@@ -528,16 +527,16 @@
         // an update query; otherwise, this is a delete statement
         boolean isUpdate = updates != null && updates.size() > 0;
 
-        for (int i = 0; i < mappings.length; i++) {
-            if (!isSingleTableMapping(mappings[i], subclasses) && !isUpdate)
+        for (ClassMapping mapping : mappings) {
+            if (!isSingleTableMapping(mapping, subclasses) && !isUpdate)
                 return null;
 
             if (!isUpdate) {
                 // if there are any delete callbacks, we need to
                 // execute in-memory so the callbacks are invoked
                 LifecycleEventManager mgr = ctx.getStoreContext().getBroker()
-                    .getLifecycleEventManager();
-                if (mgr.hasDeleteListeners(null, mappings[i]))
+                        .getLifecycleEventManager();
+                if (mgr.hasDeleteListeners(null, mapping))
                     return null;
             }
         }
@@ -582,18 +581,24 @@
         long count = 0;
         try {
             PreparedStatement stmnt;
-            for (int i = 0; i < sql.length; i++) {
+            for (SQLBuffer sqlBuffer : sql) {
                 stmnt = null;
                 try {
-                    stmnt = prepareStatement(conn, sql[i]);
+                    stmnt = prepareStatement(conn, sqlBuffer);
                     dict.setTimeouts(stmnt, fetch, true);
-                    count += executeUpdate(conn, stmnt, sql[i], isUpdate);
-                } catch (SQLException se) {
-                    throw SQLExceptions.getStore(se, sql[i].getSQL(),
-                        _store.getDBDictionary());
-                } finally {
+                    count += executeUpdate(conn, stmnt, sqlBuffer, isUpdate);
+                }
+                catch (SQLException se) {
+                    throw SQLExceptions.getStore(se, sqlBuffer.getSQL(),
+                            _store.getDBDictionary());
+                }
+                finally {
                     if (stmnt != null)
-                        try { stmnt.close(); } catch (SQLException se) {}
+                        try {
+                            stmnt.close();
+                        }
+                        catch (SQLException se) {
+                        }
                 }
             }
         } finally {
@@ -650,8 +655,8 @@
      * use multiple tables.
      */
     private Table getTable(FieldMapping[] fields, Table table) {
-        for (int i = 0; i < fields.length; i++) {
-            table = getTable(fields[i], table);
+        for (FieldMapping field : fields) {
+            table = getTable(field, table);
             if (table == INVALID)
                 break;
         }
@@ -1061,8 +1066,8 @@
 
     public static Context getThreadLocalContext(Context orig) {
         Context[] root = localContext.get();
-        for (int i = 0; i < root.length; i++) {
-            Context lctx = getThreadLocalContext(root[i], orig);
+        for (Context context : root) {
+            Context lctx = getThreadLocalContext(context, orig);
             if (lctx != null)
                 return lctx;
         }
@@ -1074,10 +1079,10 @@
             return null;
         Context[] lctx = JDBCStoreQuery.getThreadLocalContext();
         Context cloneFrom = select.ctx();
-        for (int i = 0; i < lctx.length; i++) {
-            Context cloneTo = getThreadLocalContext(lctx[i], cloneFrom);
+        for (Context context : lctx) {
+            Context cloneTo = getThreadLocalContext(context, cloneFrom);
             if (cloneTo != null)
-                return (Select)cloneTo.getSelect();
+                return (Select) cloneTo.getSelect();
         }
         return select;
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/OperationOrderUpdateManager.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/OperationOrderUpdateManager.java
index 83875aa..8e03025 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/OperationOrderUpdateManager.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/OperationOrderUpdateManager.java
@@ -124,27 +124,27 @@
         OpenJPAStateManager sm;
         PrimaryRow rel;
         RowImpl update;
-        for (int i = 0; i < fks.length; i++) {
+        for (ForeignKey fk : fks) {
             // when deleting ref fks we set the where value instead
-            sm = row.getForeignKeySet(fks[i]);
+            sm = row.getForeignKeySet(fk);
             if (sm == null)
-                sm = row.getForeignKeyWhere(fks[i]);
+                sm = row.getForeignKeyWhere(fk);
             if (sm == null)
                 continue;
 
             // only need an update if we have an fk to a row that's being
             // deleted before we are
-            rel = (PrimaryRow) rowMgr.getRow(fks[i].getPrimaryKeyTable(),
-                Row.ACTION_DELETE, sm, false);
+            rel = (PrimaryRow) rowMgr.getRow(fk.getPrimaryKeyTable(),
+                    Row.ACTION_DELETE, sm, false);
             if (rel == null || !rel.isValid()
-                || rel.getIndex() >= row.getIndex())
+                    || rel.getIndex() >= row.getIndex())
                 continue;
 
             // create an update to null the offending fk before deleting.  use
             // a primary row to be sure to copy delayed-flush pks/fks
             update = new PrimaryRow(row.getTable(), Row.ACTION_UPDATE, null);
             row.copyInto(update, true);
-            update.setForeignKey(fks[i], row.getForeignKeyIO(fks[i]), null);
+            update.setForeignKey(fk, row.getForeignKeyIO(fk), null);
             if (updates == null)
                 updates = new ArrayList();
             updates.add(update);
@@ -171,8 +171,8 @@
         OpenJPAStateManager sm;
         PrimaryRow rel;
         PrimaryRow update;
-        for (int i = 0; i < fks.length; i++) {
-            sm = row.getForeignKeySet(fks[i]);
+        for (ForeignKey fk : fks) {
+            sm = row.getForeignKeySet(fk);
             if (sm == null)
                 continue;
 
@@ -180,11 +180,11 @@
             // inserted after we are; if row is dependent on itself and no
             // fk, must be an auto-inc because otherwise we wouldn't have
             // recorded it
-            rel = (PrimaryRow) rowMgr.getRow(fks[i].getPrimaryKeyTable(),
-                Row.ACTION_INSERT, sm, false);
+            rel = (PrimaryRow) rowMgr.getRow(fk.getPrimaryKeyTable(),
+                    Row.ACTION_INSERT, sm, false);
             if (rel == null || !rel.isValid()
-                || rel.getIndex() < row.getIndex()
-                || (rel == row && !fks[i].isDeferred() && !fks[i].isLogical()))
+                    || rel.getIndex() < row.getIndex()
+                    || (rel == row && !fk.isDeferred() && !fk.isLogical()))
                 continue;
 
             // don't insert or update with the given fk; create a deferred
@@ -195,8 +195,8 @@
                 update.wherePrimaryKey(row.getPrimaryKey());
             else
                 row.copyInto(update, true);
-            update.setForeignKey(fks[i], row.getForeignKeyIO(fks[i]), sm);
-            row.clearForeignKey(fks[i]);
+            update.setForeignKey(fk, row.getForeignKeyIO(fk), sm);
+            row.clearForeignKey(fk);
 
             if (updates == null)
                 updates = new ArrayList();
@@ -216,8 +216,8 @@
             return;
 
         RowImpl row;
-        for (Iterator itr = rows.iterator(); itr.hasNext();) {
-            row = (RowImpl) itr.next();
+        for (Object o : rows) {
+            row = (RowImpl) o;
             if (row.isValid())
                 psMgr.flush(row);
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PagingResultObjectProvider.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PagingResultObjectProvider.java
index a236ff1..a867249 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PagingResultObjectProvider.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PagingResultObjectProvider.java
@@ -92,17 +92,16 @@
         // are there any mappings that require batched selects?
         FieldMapping[] fms = mapping.getDefinedFieldMappings();
         BitSet paged = null;
-        for (int i = 0; i < fms.length; i++) {
-            if (fetch.requiresFetch(fms[i]) != FetchConfiguration.FETCH_LOAD)
+        for (FieldMapping fm : fms) {
+            if (fetch.requiresFetch(fm) != FetchConfiguration.FETCH_LOAD)
                 continue;
 
-            if (fms[i].supportsSelect(sel, Select.EAGER_PARALLEL, null, store,
-                fetch) > 0 && (fms[i].isEagerSelectToMany() || fms[i].
-                supportsSelect(sel, Select.EAGER_OUTER, null, store, fetch) == 0))
-            {
+            if (fm.supportsSelect(sel, Select.EAGER_PARALLEL, null, store,
+                    fetch) > 0 && (fm.isEagerSelectToMany() || fm.
+                    supportsSelect(sel, Select.EAGER_OUTER, null, store, fetch) == 0)) {
                 if (paged == null)
                     paged = new BitSet();
-                paged.set(fms[i].getIndex());
+                paged.set(fm.getIndex());
             }
         }
         return paged;
@@ -336,8 +335,8 @@
         // figure out how many batch selects to do on this mapping
         FieldMapping[] fms = mapping.getDefinedFieldMappings();
         int sels = 0;
-        for (int i = 0; i < fms.length; i++)
-            if (paged.get(fms[i].getIndex()))
+        for (FieldMapping fieldMapping : fms)
+            if (paged.get(fieldMapping.getIndex()))
                 sels++;
         if (sels == 0)
             return;
@@ -361,12 +360,12 @@
         int esels = 0;
         SelectExecutor esel;
         int unions;
-        for (int i = 0; i < fms.length; i++) {
-            if (!paged.get(fms[i].getIndex()))
+        for (FieldMapping fm : fms) {
+            if (!paged.get(fm.getIndex()))
                 continue;
 
-            unions = fms[i].supportsSelect(sel, Select.EAGER_PARALLEL, null,
-                store, fetch);
+            unions = fm.supportsSelect(sel, Select.EAGER_PARALLEL, null,
+                    store, fetch);
             if (unions == 0)
                 continue;
 
@@ -378,17 +377,22 @@
                 esel = sel;
 
             // get result
-            fms[i].selectEagerParallel(esel, null, store, fetch,
-                EagerFetchModes.EAGER_PARALLEL);
+            fm.selectEagerParallel(esel, null, store, fetch,
+                    EagerFetchModes.EAGER_PARALLEL);
             res = esel.execute(store, fetch);
             try {
                 // and load result into paged instances
                 for (int j = start; j < end && _page[j] != null; j++)
-                    res = fms[i].loadEagerParallel(ctx.getStateManager
-                        (_page[j]), store, fetch, res);
-            } finally {
+                    res = fm.loadEagerParallel(ctx.getStateManager
+                            (_page[j]), store, fetch, res);
+            }
+            finally {
                 if (res instanceof Closeable)
-                    try { ((Closeable) res).close(); } catch (Exception e) {}
+                    try {
+                        ((Closeable) res).close();
+                    }
+                    catch (Exception e) {
+                    }
             }
         }
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PessimisticLockManager.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PessimisticLockManager.java
index 459f03a..f5369a0 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PessimisticLockManager.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PessimisticLockManager.java
@@ -185,13 +185,13 @@
     protected void lockJoinTables(List<SQLBuffer> sqls, DBDictionary dict, Object id, ClassMapping mapping,
             JDBCFetchConfiguration fetch, SQLFactory factory) {
         FieldMapping[] fms = mapping.getFieldMappings();
-        for (int i = 0; i < fms.length; i++) {
-            Strategy strat = fms[i].getStrategy();
+        for (FieldMapping fm : fms) {
+            Strategy strat = fm.getStrategy();
             if (strat instanceof ContainerFieldStrategy) {
-                ForeignKey fk = ((ContainerFieldStrategy)strat).getJoinForeignKey();
+                ForeignKey fk = ((ContainerFieldStrategy) strat).getJoinForeignKey();
                 Select select = factory.newSelect();
                 select.select(fk.getColumns());
-                select.whereForeignKey(fk, id, fms[i].getDefiningMapping(), _store);
+                select.whereForeignKey(fk, id, fm.getDefiningMapping(), _store);
                 sqls.add(select.toSelect(true, fetch));
             }
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedQueryImpl.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedQueryImpl.java
index 7e06ce7..ed13224 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedQueryImpl.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedQueryImpl.java
@@ -222,8 +222,7 @@
         if (!(executor instanceof StoreQuery.Executor))
             return new Object[]{null, _loc.get("exclude-not-executor", _id)};
         _exps = ((StoreQuery.Executor)executor).getQueryExpressions();
-        for (int i = 0; i < _exps.length; i++) {
-            QueryExpressions exp = _exps[i];
+        for (QueryExpressions exp : _exps) {
             if (exp.hasInExpression)
                 return new Object[]{null, _loc.get("exclude-in-expression", _id)};
             if (isUsingExternalizedParameter(exp)) {
@@ -285,8 +284,8 @@
         return false;
     }
     private boolean isUsingFieldStrategy() {
-        for (int i = 0; i < _exps.length; i++) {
-            if (isUsingFieldStrategy(_exps[i])) {
+        for (QueryExpressions exp : _exps) {
+            if (isUsingFieldStrategy(exp)) {
                 return true;
             }
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedSQLStoreQuery.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedSQLStoreQuery.java
index bb35738..49ca98e 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedSQLStoreQuery.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedSQLStoreQuery.java
@@ -115,8 +115,8 @@
                 stmnt = !range.lrs ? buf.prepareStatement(conn) : buf.prepareStatement(conn, fetch, -1, -1);
 
                 int index = 0;
-                for (int i = 0; i < params.length; i++) {
-                    dict.setUnknown(stmnt, ++index, params[i], null);
+                for (Object param : params) {
+                    dict.setUnknown(stmnt, ++index, param, null);
                 }
                 dict.setTimeouts(stmnt, fetch, false);
 
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java
index 3eae0b0..6104900 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java
@@ -156,11 +156,12 @@
 
     private boolean hasGeneratedKey(ClassMapping meta) {
         FieldMapping[] pks = meta.getPrimaryKeyFieldMappings();
-        for (int i = 0; i < pks.length; i++) {
-            ClassMapping pkMeta = pks[i].getTypeMapping();
+        for (FieldMapping pk : pks) {
+            ClassMapping pkMeta = pk.getTypeMapping();
             if (pkMeta != null) {
                 return hasGeneratedKey(pkMeta);
-            } else if (pks[i].getValueStrategy() == ValueStrategies.AUTOASSIGN)
+            }
+            else if (pk.getValueStrategy() == ValueStrategies.AUTOASSIGN)
                 return true;
         }
         return false;
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/SQLStoreQuery.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/SQLStoreQuery.java
index 5d8ffd1..61a7702 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/SQLStoreQuery.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/SQLStoreQuery.java
@@ -387,8 +387,7 @@
             tok.wordChars('?', '?');
 
             StringBuilder buf = new StringBuilder(sql.length());
-            for (int ttype; (ttype = tok.nextToken()) !=
-                    StreamTokenizer.TT_EOF;) {
+            for (int ttype; (ttype = tok.nextToken()) != StreamTokenizer.TT_EOF;) {
                 switch (ttype) {
                     case StreamTokenizer.TT_WORD:
                         // a token is a positional parameter if it starts with
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
index 772f6cb..a96a35c 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
@@ -259,14 +259,14 @@
         // in here.
 
         Schema[] schemas = group.getSchemas();
-        for (int i = 0; i < schemas.length; i++) {
+        for (Schema value : schemas) {
             QualifiedDBIdentifier path = QualifiedDBIdentifier.getPath(_table);
             DBIdentifier schemaName = path.getSchemaName();
             if (DBIdentifier.isEmpty(schemaName)) {
                 schemaName = Schemas.getNewTableSchemaIdentifier(_conf);
             }
             if (DBIdentifier.isNull(schemaName)) {
-                schemaName = schemas[i].getIdentifier();
+                schemaName = value.getIdentifier();
             }
 
             // create table in this group
@@ -279,7 +279,7 @@
             // importTable() does not import unique constraints
             Unique[] uniques = _pkColumn.getTable().getUniques();
             for (Unique u : uniques) {
-            	copy.importUnique(u);
+                copy.importUnique(u);
             }
             // we need to reset the table name in the column with the
             // fully qualified name for matching the table name from the
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Args.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Args.java
index f8b2d26..a0d89ec 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Args.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Args.java
@@ -232,8 +232,9 @@
     @Override
     public void acceptVisit(ExpressionVisitor visitor) {
         visitor.enter(this);
-        for (int i = 0; i < _args.length; i++)
-            _args[i].acceptVisit(visitor);
+        for (Val arg : _args) {
+            arg.acceptVisit(visitor);
+        }
         visitor.exit(this);
     }
 
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/CoalesceExpression.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/CoalesceExpression.java
index 6821063..1d7e74d 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/CoalesceExpression.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/CoalesceExpression.java
@@ -123,8 +123,9 @@
     @Override
     public void acceptVisit(ExpressionVisitor visitor) {
         visitor.enter(this);
-        for (int i = 0; i < _vals.length; i++)
-            _vals[i].acceptVisit(visitor);
+        for (Val val : _vals) {
+            val.acceptVisit(visitor);
+        }
         visitor.exit(this);
     }
 
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Const.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Const.java
index 5a59680..e12406a 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Const.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Const.java
@@ -71,8 +71,8 @@
 
         // all-null array is considered null
         Object[] arr = (Object[]) val;
-        for (int i = 0; i < arr.length; i++)
-            if (arr[i] != null)
+        for (Object o : arr)
+            if (o != null)
                 return false;
         return true;
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ConstPath.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ConstPath.java
index 40a727c..20da2c2 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ConstPath.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ConstPath.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openjpa.jdbc.kernel.exps;
 
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.ListIterator;
 
@@ -131,20 +130,21 @@
         Object action;
         OpenJPAStateManager sm;
         Broker tmpBroker = null;
-        for (Iterator itr = _actions.iterator(); itr.hasNext();) {
+        for (Object o : _actions) {
             // fail on null value
             if (cstate.value == null) {
                 failed = true;
                 break;
             }
 
-            action = itr.next();
+            action = o;
             if (action instanceof Class) {
                 try {
                     cstate.value = Filters.convert(cstate.value,
-                        (Class) action);
+                            (Class) action);
                     continue;
-                } catch (ClassCastException cce) {
+                }
+                catch (ClassCastException cce) {
                     failed = true;
                     break;
                 }
@@ -156,9 +156,9 @@
             tmpBroker = null;
             if (ImplHelper.isManageable(cstate.value))
                 sm = (OpenJPAStateManager) (ImplHelper.toPersistenceCapable(
-                    cstate.value,
-                    this.getMetaData().getRepository().getConfiguration())).
-                    pcGetStateManager();
+                        cstate.value,
+                        this.getMetaData().getRepository().getConfiguration())).
+                        pcGetStateManager();
             if (sm == null) {
                 tmpBroker = ctx.store.getContext().getBroker();
                 tmpBroker.transactional(cstate.value, false, null);
@@ -168,8 +168,9 @@
             try {
                 // get the specified field value and switch candidate
                 cstate.value = sm.fetchField(((FieldMetaData) action).
-                    getIndex(), true);
-            } finally {
+                        getIndex(), true);
+            }
+            finally {
                 // setTransactional does not clear the state, which is
                 // important since tmpVal might be also managed by
                 // another broker if it's a proxied non-pc instance
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/EqualTypeExpression.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/EqualTypeExpression.java
index cb883d8..c3d3faf 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/EqualTypeExpression.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/EqualTypeExpression.java
@@ -133,10 +133,10 @@
             val1.getMetaData());
         if (sub.isVerticalStrategy()) {
             ClassMetaData[] subs = cm1.getPCSubclassMetaDatas();
-            for (int i = 0; i < subs.length; i++) {
-                if (!Modifier.isAbstract(subs[i].getDescribedType().getModifiers()) && subs[i] == sub
-                    && !selectFrom.contains(subs[i]))
-                    selectFrom.add(subs[i]);
+            for (ClassMetaData classMetaData : subs) {
+                if (!Modifier.isAbstract(classMetaData.getDescribedType().getModifiers()) && classMetaData == sub
+                        && !selectFrom.contains(classMetaData))
+                    selectFrom.add(classMetaData);
             }
             buf.append("1=1");
             return;
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/GeneralCaseExpression.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/GeneralCaseExpression.java
index 1b1db1d..8ab9317 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/GeneralCaseExpression.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/GeneralCaseExpression.java
@@ -69,9 +69,9 @@
         if (_cast != null)
             return _cast;
         Class type = _val.getType();
-        for (int i = 0; i < _exp.length; i++)
+        for (Exp exp : _exp)
             type = Filters.promote(type,
-                ((WhenCondition) _exp[i]).getVal().getType());
+                    ((WhenCondition) exp).getVal().getType());
         if (type == Raw.class)
             return String.class;
         return type;
@@ -137,8 +137,9 @@
     @Override
     public void acceptVisit(ExpressionVisitor visitor) {
         visitor.enter(this);
-        for (int i = 0; i < _exp.length; i++)
-            _exp[i].acceptVisit(visitor);
+        for (Exp exp : _exp) {
+            exp.acceptVisit(visitor);
+        }
         _val.acceptVisit(visitor);
         visitor.exit(this);
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InExpression.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InExpression.java
index 2cbec21..fb839be 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InExpression.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InExpression.java
@@ -108,9 +108,9 @@
         Collection coll = getCollection(ctx, istate.constantState);
         if (coll != null) {
             list = new ArrayList(coll.size());
-            for (Iterator itr = coll.iterator(); itr.hasNext();)
+            for (Object o : coll)
                 list.add(_val.toDataStoreValue(sel, ctx, istate.valueState,
-                    itr.next()));
+                        o));
         }
 
         Column[] cols = null;
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotEqualTypeExpression.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotEqualTypeExpression.java
index b8b3ab5..c0cb31f 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotEqualTypeExpression.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotEqualTypeExpression.java
@@ -144,10 +144,10 @@
                 sel.setJoinedTableClassMeta(selectFrom);
             }
 
-            for (int i = 0; i < subs.length; i++) {
-                if (!Modifier.isAbstract(subs[i].getDescribedType().getModifiers()) &&
-                    !selectFrom.contains(subs[i]))
-                    selectFrom.add(subs[i]);
+            for (ClassMetaData classMetaData : subs) {
+                if (!Modifier.isAbstract(classMetaData.getDescribedType().getModifiers()) &&
+                        !selectFrom.contains(classMetaData))
+                    selectFrom.add(classMetaData);
             }
             buf.append("1=1");
             return;
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/OrExpression.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/OrExpression.java
index 1d56b99..8a6af36 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/OrExpression.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/OrExpression.java
@@ -19,7 +19,6 @@
 package org.apache.openjpa.jdbc.kernel.exps;
 
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.openjpa.jdbc.sql.SQLBuffer;
@@ -64,8 +63,8 @@
         // combine the contains counts from the copy into the main map
         Map.Entry entry;
         Integer val1, val2;
-        for (Iterator itr = contains2.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : contains2.entrySet()) {
+            entry = (Map.Entry) o;
             val2 = (Integer) entry.getValue();
             val1 = (Integer) contains.get(entry.getKey());
             if (val1 == null || val2 > val1)
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java
index ba735ee..1d9ce1f 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java
@@ -262,8 +262,8 @@
 
         StringBuilder path = new StringBuilder();
         Action action;
-        for (Iterator itr = _actions.iterator(); itr.hasNext();) {
-            action = (Action) itr.next();
+        for (Object o : _actions) {
+            action = (Action) o;
             if (action.op == Action.VAR || action.op == Action.SUBQUERY)
                 path.append(action.data);
             else if (action.op == Action.UNBOUND_VAR)
@@ -752,14 +752,14 @@
         Action action;
         OpenJPAStateManager sm;
         Broker tmpBroker;
-        for (Iterator itr = _actions.iterator(); itr.hasNext();) {
-            action = (Action)itr.next();
+        for (Object o : _actions) {
+            action = (Action) o;
             sm = null;
             tmpBroker = null;
             if (ImplHelper.isManageable(candidate))
                 sm = (OpenJPAStateManager) (ImplHelper.toPersistenceCapable(
-                    candidate, ctx.getConfiguration())).
-                    pcGetStateManager();
+                        candidate, ctx.getConfiguration())).
+                        pcGetStateManager();
             if (sm == null) {
                 tmpBroker = ctx.getBroker();
                 tmpBroker.transactional(candidate, false, null);
@@ -769,10 +769,12 @@
                 continue;
             try {
                 candidate = sm.fetchField(
-                        ((FieldMapping)action.data).getIndex(), true);
-            } catch (ClassCastException cce) {
+                        ((FieldMapping) action.data).getIndex(), true);
+            }
+            catch (ClassCastException cce) {
                 throw new RuntimeException(action.data + " not a field path");
-            } finally {
+            }
+            finally {
                 // transactional does not clear the state, which is
                 // important since tmpCandidate might be also managed by
                 // another broker if it's a proxied non-pc instance
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SelectConstructor.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SelectConstructor.java
index a49c4c2..b9c0d14 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SelectConstructor.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SelectConstructor.java
@@ -149,9 +149,9 @@
 
         Context[] qryCtx = JDBCStoreQuery.getThreadLocalContext();
         Context lctx = null;
-        for (int i = 0; i < qryCtx.length; i++) {
-            if (qryCtx[i].cloneFrom == exps.ctx()) {
-                lctx = qryCtx[i];
+        for (Context context : qryCtx) {
+            if (context.cloneFrom == exps.ctx()) {
+                lctx = context;
                 break;
             }
         }
@@ -293,8 +293,8 @@
     }
 
     private boolean contains(Val orderVal, Value[] grouping) {
-        for (int i = 0; i < grouping.length; i++) {
-            Val groupVal = (Val) grouping[i];
+        for (Value value : grouping) {
+            Val groupVal = (Val) value;
             if (orderVal.equals(groupVal))
                 return true;
         }
@@ -409,8 +409,8 @@
 
         public static boolean hasCandidateProjections(Value[] projs) {
             ProjectionExpressionVisitor v = new ProjectionExpressionVisitor();
-            for (int i = 0; i < projs.length; i++) {
-                projs[i].acceptVisit(v);
+            for (Value proj : projs) {
+                proj.acceptVisit(v);
                 if (v._candidate)
                     return true;
             }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SimpleCaseExpression.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SimpleCaseExpression.java
index 9bb389a..b0f1377 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SimpleCaseExpression.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SimpleCaseExpression.java
@@ -76,9 +76,9 @@
         if (_cast != null)
             return _cast;
         Class type = _val.getType();
-        for (int i = 0; i < _exp.length; i++)
+        for (Exp exp : _exp)
             type = Filters.promote(type,
-                ((WhenScalar) _exp[i]).getVal2().getType());
+                    ((WhenScalar) exp).getVal2().getType());
         if (type == Raw.class)
             return String.class;
         return type;
@@ -167,8 +167,9 @@
     public void acceptVisit(ExpressionVisitor visitor) {
         visitor.enter(this);
         _caseOperand.acceptVisit(visitor);
-        for (int i = 0; i < _exp.length; i++)
-            _exp[i].acceptVisit(visitor);
+        for (Exp exp : _exp) {
+            exp.acceptVisit(visitor);
+        }
         _val.acceptVisit(visitor);
         visitor.exit(this);
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SubQ.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SubQ.java
index b6dd5b7..dbbecf2 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SubQ.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SubQ.java
@@ -196,19 +196,22 @@
     public void calculateValue(Select sel, ExpContext ctx, ExpState state,
         Val other, ExpState otherState) {
         Value[] projs = _exps.projections;
-        for (int i = 0; i < projs.length; i++) {
-            if (projs[i] instanceof GeneralCaseExpression) {
-                ((GeneralCaseExpression)projs[i]).setOtherPath(other);
-                ((GeneralCaseExpression)projs[i]).setOtherState(otherState);
-            } else if (projs[i] instanceof SimpleCaseExpression) {
-                ((SimpleCaseExpression)projs[i]).setOtherPath(other);
-                ((SimpleCaseExpression)projs[i]).setOtherState(otherState);
-            } else if (projs[i] instanceof NullIfExpression) {
-                ((NullIfExpression)projs[i]).setOtherPath(other);
-                ((NullIfExpression)projs[i]).setOtherState(otherState);
-            } else if (projs[i] instanceof CoalesceExpression) {
-                ((CoalesceExpression)projs[i]).setOtherPath(other);
-                ((CoalesceExpression)projs[i]).setOtherState(otherState);
+        for (Value proj : projs) {
+            if (proj instanceof GeneralCaseExpression) {
+                ((GeneralCaseExpression) proj).setOtherPath(other);
+                ((GeneralCaseExpression) proj).setOtherState(otherState);
+            }
+            else if (proj instanceof SimpleCaseExpression) {
+                ((SimpleCaseExpression) proj).setOtherPath(other);
+                ((SimpleCaseExpression) proj).setOtherState(otherState);
+            }
+            else if (proj instanceof NullIfExpression) {
+                ((NullIfExpression) proj).setOtherPath(other);
+                ((NullIfExpression) proj).setOtherState(otherState);
+            }
+            else if (proj instanceof CoalesceExpression) {
+                ((CoalesceExpression) proj).setOtherPath(other);
+                ((CoalesceExpression) proj).setOtherState(otherState);
             }
         }
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ClassMapping.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ClassMapping.java
index 8fb5d1a..ef94a3d 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ClassMapping.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ClassMapping.java
@@ -22,7 +22,6 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -177,11 +176,11 @@
         int pkIdx;
         boolean canReadDiscriminator = true;
         boolean isNullPK = true;
-        for (int i = 0; i < pks.length; i++) {
+        for (Column pk : pks) {
             // we know that all pk column join mappings use primary key fields,
             // cause this mapping uses the oid as its primary key (we recursed
             // at the beginning of the method to ensure this)
-            join = assertJoinable(pks[i]);
+            join = assertJoinable(pk);
             fm = getFieldMapping(join.getFieldIndex());
             pkIdx = fm.getPrimaryKeyIndex();
             canReadDiscriminator &= isSelfReference(fk, join.getColumns());
@@ -189,7 +188,7 @@
             if (vals[pkIdx] == null) {
                 res.startDataRequest(fm);
                 vals[pkIdx] = join.getPrimaryKeyValue(res, join.getColumns(),
-                    fk, store, joins);
+                        fk, store, joins);
                 res.endDataRequest();
                 isNullPK = isNullPK && vals[pkIdx] == null;
             }
@@ -373,10 +372,10 @@
         // check the join mapping for each pk column to see if it links up to
         // a primary key field
         Joinable join;
-        for (int i = 0; i < cols.length; i++) {
-            join = assertJoinable(cols[i]);
+        for (Column col : cols) {
+            join = assertJoinable(col);
             if (join.getFieldIndex() != -1
-                && getField(join.getFieldIndex()).getPrimaryKeyIndex() == -1)
+                    && getField(join.getFieldIndex()).getPrimaryKeyIndex() == -1)
                 return Boolean.FALSE;
         }
 
@@ -452,14 +451,15 @@
                 FieldMapping[] pks = getPrimaryKeyFieldMappings();
                 Collection cols = new ArrayList(pks.length);
                 Column[] fieldCols;
-                for (int i = 0; i < pks.length; i++) {
-                    fieldCols = pks[i].getColumns();
+                for (FieldMapping pk : pks) {
+                    fieldCols = pk.getColumns();
                     if (fieldCols.length == 0) {
                         _cols = new Column[0];
                         return _cols;
                     }
-                    for (int j = 0; j < fieldCols.length; j++)
-                        cols.add(fieldCols[j]);
+                    for (Column fieldCol : fieldCols) {
+                        cols.add(fieldCol);
+                    }
                 }
                 _cols = (Column[]) cols.toArray(new Column[cols.size()]);
             }
@@ -515,12 +515,14 @@
             if (_fk != null)
                 _fk.ref();
             Column[] pks = getPrimaryKeyColumns();
-            for (int i = 0; i < pks.length; i++)
-                pks[i].ref();
+            for (Column pk : pks) {
+                pk.ref();
+            }
         } else {
             FieldMapping[] fields = getFieldMappings();
-            for (int i = 0; i < fields.length; i++)
-                fields[i].refSchemaComponents();
+            for (FieldMapping field : fields) {
+                field.refSchemaComponents();
+            }
         }
     }
 
@@ -545,8 +547,9 @@
         else {
             _info.clear();
             FieldMapping[] fields = getFieldMappings();
-            for (int i = 0; i < fields.length; i++)
-                fields[i].syncMappingInfo();
+            for (FieldMapping field : fields) {
+                field.syncMappingInfo();
+            }
         }
     }
 
@@ -670,9 +673,9 @@
                 _joinSubMaps = subs;
             else {
                 List joinable = new ArrayList(subs.length);
-                for (int i = 0; i < subs.length; i++)
-                    if (isSubJoinable(subs[i]))
-                        joinable.add(subs[i]);
+                for (ClassMapping sub : subs)
+                    if (isSubJoinable(sub))
+                        joinable.add(sub);
                 _joinSubMaps = (ClassMapping[]) joinable.toArray
                     (new ClassMapping[joinable.size()]);
             }
@@ -714,8 +717,8 @@
                 // remove all mappings that have a superclass mapping in the set
                 ClassMapping map, sup;
                 List clear = null;
-                for (Iterator itr = independent.iterator(); itr.hasNext();) {
-                    map = (ClassMapping) itr.next();
+                for (Object o : independent) {
+                    map = (ClassMapping) o;
                     sup = map.getJoinablePCSuperclassMapping();
                     if (sup != null && independent.contains(sup)) {
                         if (clear == null)
@@ -863,13 +866,13 @@
         // recursion, then resolve all fields
         resolveNonRelationMappings();
         FieldMapping[] fms = getFieldMappings();
-        for (int i = 0; i < fms.length; i++) {
-            if (fms[i].getDefiningMetaData() == this) {
+        for (FieldMapping fieldMapping : fms) {
+            if (fieldMapping.getDefiningMetaData() == this) {
                 boolean fill = getMappingRepository().getMappingDefaults().
-                    defaultMissingInfo();
-                ForeignKey fk = fms[i].getForeignKey();
+                        defaultMissingInfo();
+                ForeignKey fk = fieldMapping.getForeignKey();
                 if (fill && fk != null &&
-                    fk.getPrimaryKeyColumns().length == 0) {
+                        fk.getPrimaryKeyColumns().length == 0) {
                     // set resolve mode to force this field mapping to be
                     // resolved again. The need to resolve again occurs when
                     // a primary key is a relation field with the foreign key
@@ -879,16 +882,17 @@
                     // field, the foreign key will be constructed. However,
                     // the primary key of the parent entity may not have been
                     // resolved yet, resulting in missing information in the fk
-                    fms[i].setResolve(MODE_META);
-                    if (fms[i].getStrategy() != null)
-                        fms[i].getStrategy().map(false);
+                    fieldMapping.setResolve(MODE_META);
+                    if (fieldMapping.getStrategy() != null)
+                        fieldMapping.getStrategy().map(false);
                 }
-                fms[i].resolve(MODE_MAPPING);
+                fieldMapping.resolve(MODE_MAPPING);
             }
         }
         fms = getDeclaredUnmanagedFieldMappings();
-        for (int i = 0; i < fms.length; i++)
-            fms[i].resolve(MODE_MAPPING);
+        for (FieldMapping fm : fms) {
+            fm.resolve(MODE_MAPPING);
+        }
 
         // mark mapped columns
         if (_cols != null) {
@@ -914,18 +918,19 @@
         // make sure primary key fields are resolved first because other
         // fields might rely on them
         FieldMapping[] fms = getPrimaryKeyFieldMappings();
-        for (int i = 0; i < fms.length; i++)
-            fms[i].resolve(MODE_MAPPING);
+        for (FieldMapping fieldMapping : fms) {
+            fieldMapping.resolve(MODE_MAPPING);
+        }
 
         // resolve defined fields that are safe; that don't rely on other types
         // also being resolved.  don't use getDefinedFields b/c it relies on
         // whether fields are mapped, which isn't known yet
         fms = getFieldMappings();
-        for (int i = 0; i < fms.length; i++) {
-            if (fms[i].getDefiningMetaData() == this
-                    && !fms[i].isTypePC() && !fms[i].getKey().isTypePC()
-                    && !fms[i].getElement().isTypePC()) {
-                fms[i].resolve(MODE_MAPPING);
+        for (FieldMapping fm : fms) {
+            if (fm.getDefiningMetaData() == this
+                    && !fm.isTypePC() && !fm.getKey().isTypePC()
+                    && !fm.getElement().isTypePC()) {
+                fm.resolve(MODE_MAPPING);
             }
         }
         _discrim.resolve(MODE_MAPPING);
@@ -937,8 +942,9 @@
         super.initializeMapping();
 
         FieldMapping[] fields = getDefinedFieldMappings();
-        for (int i = 0; i < fields.length; i++)
-            fields[i].resolve(MODE_MAPPING_INIT);
+        for (FieldMapping field : fields) {
+            field.resolve(MODE_MAPPING_INIT);
+        }
         _discrim.resolve(MODE_MAPPING_INIT);
         _version.resolve(MODE_MAPPING_INIT);
         _strategy.initialize();
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ClassMappingInfo.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ClassMappingInfo.java
index 60cc2a0..333a4a9 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ClassMappingInfo.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ClassMappingInfo.java
@@ -23,7 +23,6 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -216,14 +215,15 @@
         int pts = 0;
         DBIdentifier fullJoin = DBIdentifier.NULL;
         DBIdentifier join = DBIdentifier.NULL;
-        for (Iterator<DBIdentifier> itr = _seconds.keySet().iterator(); itr.hasNext();) {
+        for (DBIdentifier dbIdentifier : _seconds.keySet()) {
             // award a caseless match without schema 2 points
-            fullJoin = itr.next();
+            fullJoin = dbIdentifier;
             QualifiedDBIdentifier joinPath = QualifiedDBIdentifier.getPath(fullJoin);
             if (joinPath.isUnqualifiedObject() && pts < 2 && fullJoin.equalsIgnoreCase(tableName)) {
                 best = fullJoin;
                 pts = 2;
-            } else if (joinPath.isUnqualifiedObject())
+            }
+            else if (joinPath.isUnqualifiedObject())
                 continue;
 
             // immediately return an exact match with schema
@@ -446,9 +446,8 @@
             if (_seconds == null)
                 _seconds = new HashMap<>();
             DBIdentifier key;
-            for (Iterator<DBIdentifier> itr = cinfo._seconds.keySet().iterator();
-                itr.hasNext();) {
-                key = itr.next();
+            for (DBIdentifier dbIdentifier : cinfo._seconds.keySet()) {
+                key = dbIdentifier;
                 if (!_seconds.containsKey(key))
                     _seconds.put(key, cinfo._seconds.get(key));
             }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Discriminator.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Discriminator.java
index 6a04f24..5d94580 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Discriminator.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Discriminator.java
@@ -191,8 +191,9 @@
      * Increment the reference count of used schema components.
      */
     public void refSchemaComponents() {
-        for (int i = 0; i < _cols.length; i++)
-            _cols[i].ref();
+        for (Column col : _cols) {
+            col.ref();
+        }
     }
 
     /**
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/FieldMapping.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/FieldMapping.java
index da55101..f051615 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/FieldMapping.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/FieldMapping.java
@@ -922,9 +922,9 @@
     public void orderLocal(Select sel, ClassMapping elem, Joins joins) {
         _orderCol.order(sel, elem, joins);
         JDBCOrder[] orders = (JDBCOrder[]) getOrders();
-        for (int i = 0; i < orders.length; i++)
-            if (!orders[i].isInRelation())
-                orders[i].order(sel, elem, joins);
+        for (JDBCOrder order : orders)
+            if (!order.isInRelation())
+                order.order(sel, elem, joins);
     }
 
     /**
@@ -935,9 +935,9 @@
      */
     public void orderRelation(Select sel, ClassMapping elem, Joins joins) {
         JDBCOrder[] orders = (JDBCOrder[]) getOrders();
-        for (int i = 0; i < orders.length; i++)
-            if (orders[i].isInRelation())
-                orders[i].order(sel, elem, joins);
+        for (JDBCOrder order : orders)
+            if (order.isInRelation())
+                order.order(sel, elem, joins);
     }
 
     @Override
@@ -1299,19 +1299,18 @@
         if (relType == null)
         	return false;
         FieldMapping[] relFmds = relType.getFieldMappings();
-        for (int i=0; i<relFmds.length;i++) {
-            FieldMapping rfm = relFmds[i];
+        for (FieldMapping rfm : relFmds) {
             if (rfm.getDeclaredTypeMetaData() == getDeclaringMapping()) {
-        		ForeignKey rjfk = rfm.getJoinForeignKey();
-        		if (rjfk == null)
-        		    continue;
+                ForeignKey rjfk = rfm.getJoinForeignKey();
+                if (rjfk == null)
+                    continue;
                 if (rjfk.getTable() == jfk.getTable() &&
                         jfk.getTable().getColumns().length ==
-                        jfk.getColumns().length + rjfk.getColumns().length) {
-        			_bidirectionalJoinTableOwner = true;
-        			break;
-        		}
-        	}
+                                jfk.getColumns().length + rjfk.getColumns().length) {
+                    _bidirectionalJoinTableOwner = true;
+                    break;
+                }
+            }
         }
         return _bidirectionalJoinTableOwner;
     }
@@ -1342,21 +1341,20 @@
         if (relType == null)
         	return false;
         FieldMapping[] relFmds = relType.getFieldMappings();
-        for (int i=0; i<relFmds.length;i++) {
-            FieldMapping rfm = relFmds[i];
+        for (FieldMapping rfm : relFmds) {
             ValueMapping relem = rfm.getElementMapping();
             if (relem != null && relem.getDeclaredTypeMapping() ==
                     getDeclaringMapping()) {
-        		ForeignKey rjfk = rfm.getJoinForeignKey();
-        		if (rjfk == null)
-        		    continue;
-        		if (rjfk.getTable() == jfk.getTable() &&
-        		        jfk.getTable().getColumns().length ==
-                        jfk.getColumns().length + rjfk.getColumns().length) {
-        			_bidirectionalJoinTableNonOwner = true;
-        			break;
-        		}
-        	}
+                ForeignKey rjfk = rfm.getJoinForeignKey();
+                if (rjfk == null)
+                    continue;
+                if (rjfk.getTable() == jfk.getTable() &&
+                        jfk.getTable().getColumns().length ==
+                                jfk.getColumns().length + rjfk.getColumns().length) {
+                    _bidirectionalJoinTableNonOwner = true;
+                    break;
+                }
+            }
         }
         return _bidirectionalJoinTableNonOwner;
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/JDBCRelatedFieldOrder.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/JDBCRelatedFieldOrder.java
index 559bd8c..66f87e9 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/JDBCRelatedFieldOrder.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/JDBCRelatedFieldOrder.java
@@ -96,13 +96,14 @@
             return elem.getFieldMapping(_fm.getIndex());
         else {
             FieldMapping fms[] = elem.getFieldMappings();
-            for (int i = 0; i < fms.length; i++) {
-                ValueMapping vm = (ValueMapping)fms[i].getValue();
-                ClassMapping clm = (ClassMapping)vm.getEmbeddedMetaData();
+            for (FieldMapping fieldMapping : fms) {
+                ValueMapping vm = (ValueMapping) fieldMapping.getValue();
+                ClassMapping clm = (ClassMapping) vm.getEmbeddedMetaData();
                 if (clm != null) {
                     if (clm.getDescribedType() == owner.getDescribedType()) {
                         return owner.getFieldMapping(_fm.getIndex());
-                    } else {
+                    }
+                    else {
                         FieldMapping fm1 = getOrderByField(clm, fm);
                         if (fm1 != null)
                             return fm1;
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java
index cf288f7..81ac7f6 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java
@@ -743,8 +743,9 @@
     @Override
     public void populateColumns(ValueMapping vm, DBIdentifier name, Table table,
         Column[] cols) {
-        for (int i = 0; i < cols.length; i++)
-            correctName(table, cols[i]);
+        for (Column col : cols) {
+            correctName(table, col);
+        }
     }
 
     @Override
@@ -852,8 +853,8 @@
      * Return whether all the given columns are primary key columns.
      */
     protected boolean areAllPrimaryKeyColumns(Column[] cols) {
-        for (int i = 0; i < cols.length; i++)
-            if (!cols[i].isPrimaryKey())
+        for (Column col : cols)
+            if (!col.isPrimaryKey())
                 return false;
         return true;
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java
index cccc365..a9a80f1 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java
@@ -900,9 +900,9 @@
         Table table = cols[0].getTable();
         Index[] idxs = table.getIndexes();
         Index exist = null;
-        for (int i = 0; i < idxs.length; i++) {
-            if (idxs[i].columnsMatch(cols)) {
-                exist = idxs[i];
+        for (Index index : idxs) {
+            if (index.columnsMatch(cols)) {
+                exist = index;
                 break;
             }
         }
@@ -989,9 +989,9 @@
         Table table = cols[0].getTable();
         Unique[] unqs = table.getUniques();
         Unique exist = null;
-        for (int i = 0; i < unqs.length; i++) {
-            if (unqs[i].columnsMatch(cols)) {
-                exist = unqs[i];
+        for (Unique unique : unqs) {
+            if (unique.columnsMatch(cols)) {
+                exist = unique;
                 break;
             }
         }
@@ -1097,20 +1097,22 @@
         Table tmp;
         boolean constant = false;
         boolean localSet = false;
-        for (int i = 0; i < joins.length; i++) {
-            if (joins[i][1]instanceof Column) {
-                tmp = ((Column) joins[i][0]).getTable();
+        for (Object[] objects : joins) {
+            if (objects[1] instanceof Column) {
+                tmp = ((Column) objects[0]).getTable();
                 if (!localSet) {
                     local = tmp;
                     localSet = true;
-                } else if (tmp != local)
+                }
+                else if (tmp != local)
                     throw new MetaDataException(_loc.get(prefix
-                        + "-mult-fk-tables", context, local, tmp));
-                foreign = ((Column) joins[i][1]).getTable();
+                            + "-mult-fk-tables", context, local, tmp));
+                foreign = ((Column) objects[1]).getTable();
 
-                if (joins[i][2] == Boolean.TRUE)
+                if (objects[2] == Boolean.TRUE)
                     _join = JOIN_INVERSE;
-            } else
+            }
+            else
                 constant = true;
         }
 
@@ -1126,11 +1128,11 @@
             }
 
             ForeignKey[] fks = local.getForeignKeys();
-            for (int i = 0; i < fks.length; i++) {
-                if (fks[i].getConstantColumns().length == 0
-                    && fks[i].getConstantPrimaryKeyColumns().length == 0
-                    && fks[i].columnsMatch(cols, pks)) {
-                    exist = fks[i];
+            for (ForeignKey fk : fks) {
+                if (fk.getConstantColumns().length == 0
+                        && fk.getConstantPrimaryKeyColumns().length == 0
+                        && fk.columnsMatch(cols, pks)) {
+                    exist = fk;
                     break;
                 }
             }
@@ -1224,14 +1226,14 @@
 
         // add joins to key
         Column col;
-        for (int i = 0; i < joins.length; i++) {
-            col = (Column) joins[i][0];
-            if (joins[i][1]instanceof Column)
-                fk.join(col, (Column) joins[i][1]);
-            else if ((joins[i][2] == Boolean.TRUE) != (_join == JOIN_INVERSE))
-                fk.joinConstant(joins[i][1], col);
+        for (Object[] join : joins) {
+            col = (Column) join[0];
+            if (join[1] instanceof Column)
+                fk.join(col, (Column) join[1]);
+            else if ((join[2] == Boolean.TRUE) != (_join == JOIN_INVERSE))
+                fk.joinConstant(join[1], col);
             else
-                fk.joinConstant(col, joins[i][1]);
+                fk.joinConstant(col, join[1]);
         }
         setIOFromJoins(fk, joins);
         return fk;
@@ -1837,9 +1839,9 @@
         if (col.getTable() == null)
             return false;
         ForeignKey[] fks = col.getTable().getForeignKeys();
-        for (int i = 0; i < fks.length; i++)
-            if (fks[i].containsColumn(col)
-                || fks[i].containsConstantColumn(col))
+        for (ForeignKey fk : fks)
+            if (fk.containsColumn(col)
+                    || fk.containsConstantColumn(col))
                 return true;
         return false;
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java
index 5bc3d56..c8db77a 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java
@@ -24,7 +24,6 @@
 import java.sql.Types;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -1175,9 +1174,9 @@
                     return null;
                 ClassMapping inverse = field.getValueMapping().getTypeMapping();
                 FieldMapping[] fmds = inverse.getFieldMappings();
-                for (int i = 0; i < fmds.length; i++) {
-                    if (field == fmds[i].getMappedByMapping())
-                        return fmds[i];
+                for (FieldMapping fmd : fmds) {
+                    if (field == fmd.getMappedByMapping())
+                        return fmd;
                 }
             }
         }
@@ -1219,8 +1218,8 @@
             assoType == FieldMetaData.MANY_TO_ONE) {
             ClassMapping inverse = field.getValueMapping().getTypeMapping();
             FieldMapping[] fmds = inverse.getFieldMappings();
-            for (int i = 0; i < fmds.length; i++) {
-                if (field == fmds[i].getMappedByMapping())
+            for (FieldMapping fmd : fmds) {
+                if (field == fmd.getMappedByMapping())
                     return true;
             }
         }
@@ -1568,13 +1567,13 @@
                 Collection<Class<?>> classes = loadPersistentTypes(false,
                         mapping.getEnvClassLoader());
                 Class<?> cls;
-                for (Iterator<Class<?>> itr = classes.iterator(); itr.hasNext();) {
-                    cls = itr.next();
+                for (Class<?> aClass : classes) {
+                    cls = aClass;
                     Class<?> supcl = cls.getSuperclass();
                     while (supcl != null &&
-                           !supcl.equals(java.lang.Object.class)) {
+                            !supcl.equals(Object.class)) {
                         if (!supcl.isInterface() &&
-                            supcl.equals(mapping.getDescribedType())) {
+                                supcl.equals(mapping.getDescribedType())) {
                             baseMapping = mapping;
                             break;
                         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java
index 1e368de..246cc89 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java
@@ -29,7 +29,6 @@
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
@@ -520,28 +519,29 @@
                 // now run the schematool as long as we're doing some schema
                 // action and the user doesn't just want an xml output
                 String[] schemaActions = _schemaActions.split(",");
-                for (int i = 0; i < schemaActions.length; i++) {
-                    if (!SCHEMA_ACTION_NONE.equals(schemaActions[i])
-                        && (_schemaWriter == null || (_schemaTool != null
+                for (String schemaAction : schemaActions) {
+                    if (!SCHEMA_ACTION_NONE.equals(schemaAction)
+                            && (_schemaWriter == null || (_schemaTool != null
                             && _schemaTool.getWriter() != null))) {
 
                         SchemaTool tool;
-                        if (schemaActions[i].equals(ACTION_SCRIPT_CREATE) ||
-                            schemaActions[i].equals(ACTION_SCRIPT_DROP) ||
-                            schemaActions[i].equals(ACTION_SCRIPT_LOAD)) {
+                        if (schemaAction.equals(ACTION_SCRIPT_CREATE) ||
+                                schemaAction.equals(ACTION_SCRIPT_DROP) ||
+                                schemaAction.equals(ACTION_SCRIPT_LOAD)) {
                             tool = newSchemaTool(SchemaTool.ACTION_EXECUTE_SCRIPT);
-                        } else {
-                            tool = newSchemaTool(schemaActions[i]);
+                        }
+                        else {
+                            tool = newSchemaTool(schemaAction);
                         }
 
-                        if (schemaActions[i].equals(ACTION_ADD) && _conf.getCreateScriptTarget() != null) {
+                        if (schemaAction.equals(ACTION_ADD) && _conf.getCreateScriptTarget() != null) {
                             tool.setWriter(new PrintWriter(_conf.getCreateScriptTarget()));
                             tool.setIndexes(true);
                             tool.setForeignKeys(true);
                             tool.setSequences(true);
                         }
 
-                        if (schemaActions[i].equals(ACTION_DROP) && _conf.getDropScriptTarget() != null) {
+                        if (schemaAction.equals(ACTION_DROP) && _conf.getDropScriptTarget() != null) {
                             tool.setWriter(new PrintWriter(_conf.getDropScriptTarget()));
                         }
 
@@ -555,7 +555,7 @@
                             tool.setSQLTerminator(flags.sqlTerminator);
                         }
 
-                        switch (schemaActions[i]) {
+                        switch (schemaAction) {
                             case ACTION_SCRIPT_CREATE:
                                 tool.setScriptToExecute(_conf.getCreateScriptSource());
                                 break;
@@ -595,15 +595,15 @@
             if (_mappingWriter != null) {
                 output = new HashMap<>();
                 File tmp = new File("openjpatmp");
-                for (int i = 0; i < mappings.length; i++) {
-                    mappings[i].setSource(tmp, SourceTracker.SRC_OTHER, "openjpatmp");
+                for (ClassMapping mapping : mappings) {
+                    mapping.setSource(tmp, SourceTracker.SRC_OTHER, "openjpatmp");
                 }
-                for (int i = 0; i < queries.length; i++) {
-                    queries[i].setSource(tmp, queries[i].getSourceScope(), SourceTracker.SRC_OTHER, "openjpatmp");
+                for (QueryMetaData query : queries) {
+                    query.setSource(tmp, query.getSourceScope(), SourceTracker.SRC_OTHER, "openjpatmp");
                 }
-                for (int i = 0; i < seqs.length; i++)
-                    seqs[i].setSource(tmp, seqs[i].getSourceScope(),
-                        SourceTracker.SRC_OTHER);
+                for (SequenceMetaData seq : seqs)
+                    seq.setSource(tmp, seq.getSourceScope(),
+                            SourceTracker.SRC_OTHER);
             }
 
             // store
@@ -613,9 +613,9 @@
             // write to stream
             if (_mappingWriter != null) {
                 PrintWriter out = new PrintWriter(_mappingWriter);
-                for (Iterator<String> itr = output.values().iterator();
-                    itr.hasNext();)
-                    out.println(itr.next());
+                for (String s : output.values()) {
+                    out.println(s);
+                }
                 out.flush();
             }
         }
@@ -634,13 +634,14 @@
      */
     private void dropUnusedSchemaComponents(ClassMapping[] mappings) {
         FieldMapping[] fields;
-        for (int i = 0; i < mappings.length; i++) {
-            mappings[i].refSchemaComponents();
-            mappings[i].getDiscriminator().refSchemaComponents();
-            mappings[i].getVersion().refSchemaComponents();
-            fields = mappings[i].getDefinedFieldMappings();
-            for (int j = 0; j < fields.length; j++)
-                fields[j].refSchemaComponents();
+        for (ClassMapping mapping : mappings) {
+            mapping.refSchemaComponents();
+            mapping.getDiscriminator().refSchemaComponents();
+            mapping.getVersion().refSchemaComponents();
+            fields = mapping.getDefinedFieldMappings();
+            for (FieldMapping field : fields) {
+                field.refSchemaComponents();
+            }
         }
 
         // also allow the dbdictionary to ref any schema components that
@@ -648,10 +649,11 @@
         SchemaGroup group = getSchemaGroup();
         Schema[] schemas = group.getSchemas();
         Table[] tables;
-        for (int i = 0; i < schemas.length; i++) {
-            tables = schemas[i].getTables();
-            for (int j = 0; j < tables.length; j++)
-                _dict.refSchemaComponents(tables[j]);
+        for (Schema schema : schemas) {
+            tables = schema.getTables();
+            for (Table table : tables) {
+                _dict.refSchemaComponents(table);
+            }
         }
 
         group.removeUnusedComponents();
@@ -662,8 +664,9 @@
      */
     private void addSequenceComponents(ClassMapping[] mappings) {
         SchemaGroup group = getSchemaGroup();
-        for (int i = 0; i < mappings.length; i++)
-            addSequenceComponents(mappings[i], group);
+        for (ClassMapping mapping : mappings) {
+            addSequenceComponents(mapping, group);
+        }
     }
 
     /**
@@ -688,14 +691,15 @@
             fmds = mapping.getDefinedFieldMappings();
         else
             fmds = mapping.getFieldMappings();
-        for (int i = 0; i < fmds.length; i++) {
-            smd = fmds[i].getValueSequenceMetaData();
+        for (FieldMapping fmd : fmds) {
+            smd = fmd.getValueSequenceMetaData();
             if (smd != null) {
                 seq = smd.getInstance(_loader);
                 if (seq instanceof JDBCSeq)
                     ((JDBCSeq) seq).addSchema(mapping, group);
-            } else if (fmds[i].getEmbeddedMapping() != null)
-                addSequenceComponents(fmds[i].getEmbeddedMapping(), group);
+            }
+            else if (fmd.getEmbeddedMapping() != null)
+                addSequenceComponents(fmd.getEmbeddedMapping(), group);
         }
     }
 
@@ -770,10 +774,10 @@
 
         ClassMetaData meta = repos.addMetaData(cls);
         FieldMetaData[] fmds = meta.getDeclaredFields();
-        for (int i = 0; i < fmds.length; i++) {
-            if (fmds[i].getDeclaredTypeCode() == JavaTypes.OBJECT
-                && fmds[i].getDeclaredType() != Object.class)
-                fmds[i].setDeclaredTypeCode(JavaTypes.PC);
+        for (FieldMetaData fmd : fmds) {
+            if (fmd.getDeclaredTypeCode() == JavaTypes.OBJECT
+                    && fmd.getDeclaredType() != Object.class)
+                fmd.setDeclaredTypeCode(JavaTypes.PC);
         }
         meta.setSource(_file, meta.getSourceType(), _file == null ? "": _file.getPath() );
         meta.setResolve(MODE_META, true);
@@ -825,16 +829,17 @@
         Schema[] schemas = _schema.getSchemas();
         Table[] tables;
         Column[] cols;
-        for (int i = 0; i < schemas.length; i++) {
-            tables = schemas[i].getTables();
-            for (int j = 0; j < tables.length; j++) {
-                if (tables[j].getPrimaryKey() == null)
+        for (Schema schema : schemas) {
+            tables = schema.getTables();
+            for (Table table : tables) {
+                if (table.getPrimaryKey() == null)
                     continue;
 
-                tables[j].getPrimaryKey().setLogical(false);
-                cols = tables[j].getPrimaryKey().getColumns();
-                for (int k = 0; k < cols.length; k++)
-                    cols[k].setNotNull(true);
+                table.getPrimaryKey().setLogical(false);
+                cols = table.getPrimaryKey().getColumns();
+                for (Column col : cols) {
+                    col.setNotNull(true);
+                }
             }
         }
     }
@@ -1101,8 +1106,8 @@
                 getMetaDataFactory().newClassArgParser();
             classParser.setClassLoader(loader);
             Class<?>[] parsed;
-            for (int i = 0; i < args.length; i++) {
-                parsed = classParser.parseTypes(args[i]);
+            for (String arg : args) {
+                parsed = classParser.parseTypes(arg);
                 classes.addAll(Arrays.asList(parsed));
             }
         }
@@ -1111,9 +1116,9 @@
         if (ACTION_EXPORT.equals(flags.action)) {
             // run exports until the first export succeeds
             ImportExport[] instances = newImportExports();
-            for (int i = 0; i < instances.length; i++) {
-                if (instances[i].exportMappings(conf, act, flags.meta, log,
-                    flags.mappingWriter))
+            for (ImportExport instance : instances) {
+                if (instance.exportMappings(conf, act, flags.meta, log,
+                        flags.mappingWriter))
                     return true;
             }
             return false;
@@ -1121,9 +1126,9 @@
         if (ACTION_IMPORT.equals(flags.action)) {
             // run exports until the first export succeeds
             ImportExport[] instances = newImportExports();
-            for (int i = 0; i < instances.length; i++) {
-                if (instances[i].importMappings(conf, act, args, flags.meta,
-                    log, loader))
+            for (ImportExport instance : instances) {
+                if (instance.importMappings(conf, act, args, flags.meta,
+                        log, loader))
                     return true;
             }
             return false;
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ReverseMappingTool.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ReverseMappingTool.java
index b383f62..e92907f 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ReverseMappingTool.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ReverseMappingTool.java
@@ -662,23 +662,23 @@
         // map base classes first
         Schema[] schemas = getSchemaGroup().getSchemas();
         Table[] tables;
-        for (int i = 0; i < schemas.length; i++) {
-            tables = schemas[i].getTables();
-            for (int j = 0; j < tables.length; j++)
-                if (isBaseTable(tables[j]))
-                    mapBaseClass(tables[j]);
+        for (Schema schema2 : schemas) {
+            tables = schema2.getTables();
+            for (Table table : tables)
+                if (isBaseTable(table))
+                    mapBaseClass(table);
         }
 
         // map vertical subclasses
         Set subs = null;
-        for (int i = 0; i < schemas.length; i++) {
-            tables = schemas[i].getTables();
-            for (int j = 0; j < tables.length; j++) {
-                if (!_tables.containsKey(tables[j])
-                    && getSecondaryType(tables[j], false) == TABLE_SUBCLASS) {
+        for (Schema schema1 : schemas) {
+            tables = schema1.getTables();
+            for (Table table : tables) {
+                if (!_tables.containsKey(table)
+                        && getSecondaryType(table, false) == TABLE_SUBCLASS) {
                     if (subs == null)
                         subs = new HashSet();
-                    subs.add(tables[j]);
+                    subs.add(table);
                 }
             }
         }
@@ -687,29 +687,29 @@
 
         // map fields in the primary tables of the classes
         ClassMapping cls;
-        for (Iterator itr = _tables.values().iterator(); itr.hasNext();) {
-            cls = (ClassMapping) itr.next();
+        for (Object o1 : _tables.values()) {
+            cls = (ClassMapping) o1;
             mapColumns(cls, cls.getTable(), null, false);
         }
 
         // map association tables, join tables, and secondary tables
-        for (int i = 0; i < schemas.length; i++) {
-            tables = schemas[i].getTables();
-            for (int j = 0; j < tables.length; j++)
-                if (!_tables.containsKey(tables[j]))
-                    mapTable(tables[j], getSecondaryType(tables[j], false));
+        for (Schema element : schemas) {
+            tables = element.getTables();
+            for (Table table : tables)
+                if (!_tables.containsKey(table))
+                    mapTable(table, getSecondaryType(table, false));
         }
 
         // map discriminators and versions, make sure identity type is correct,
         // set simple field column java types, and ref schema components so
         // we can tell what is unmapped
         FieldMapping[] fields;
-        for (Iterator itr = _tables.values().iterator(); itr.hasNext();) {
-            cls = (ClassMapping) itr.next();
+        for (Object item : _tables.values()) {
+            cls = (ClassMapping) item;
             cls.refSchemaComponents();
             if (cls.getDiscriminator().getStrategy() == null)
                 getStrategyInstaller().installStrategy
-                    (cls.getDiscriminator());
+                        (cls.getDiscriminator());
             cls.getDiscriminator().refSchemaComponents();
             if (cls.getVersion().getStrategy() == null)
                 getStrategyInstaller().installStrategy(cls.getVersion());
@@ -719,36 +719,37 @@
             // it might have to switch to std application identity if pk field
             // not compatible
             if (cls.getPCSuperclass() == null
-                && cls.getIdentityType() == ClassMetaData.ID_APPLICATION) {
+                    && cls.getIdentityType() == ClassMetaData.ID_APPLICATION) {
                 if (cls.getPrimaryKeyFields().length == 0)
                     throw new MetaDataException(_loc.get("no-pk-fields", cls));
                 if (cls.getObjectIdType() == null
-                    || (cls.isOpenJPAIdentity() && !isBuiltinIdentity(cls)))
+                        || (cls.isOpenJPAIdentity() && !isBuiltinIdentity(cls)))
                     setObjectIdType(cls);
-            } else if (cls.getIdentityType() == ClassMetaData.ID_DATASTORE)
+            }
+            else if (cls.getIdentityType() == ClassMetaData.ID_DATASTORE)
                 cls.getPrimaryKeyColumns()[0].setJavaType(JavaTypes.LONG);
 
             // set java types for simple fields;
             fields = cls.getDeclaredFieldMappings();
-            for (int i = 0; i < fields.length; i++) {
-                fields[i].refSchemaComponents();
-                setColumnJavaType(fields[i]);
-                setColumnJavaType(fields[i].getElementMapping());
+            for (FieldMapping field : fields) {
+                field.refSchemaComponents();
+                setColumnJavaType(field);
+                setColumnJavaType(field.getElementMapping());
             }
         }
 
         // set the java types of foreign key columns; we couldn't do this
         // earlier because we rely on the linked-to columns to do it
-        for (Iterator itr = _tables.values().iterator(); itr.hasNext();) {
-            cls = (ClassMapping) itr.next();
+        for (Object value : _tables.values()) {
+            cls = (ClassMapping) value;
             setForeignKeyJavaType(cls.getJoinForeignKey());
 
             fields = cls.getDeclaredFieldMappings();
-            for (int i = 0; i < fields.length; i++) {
-                setForeignKeyJavaType(fields[i].getJoinForeignKey());
-                setForeignKeyJavaType(fields[i].getForeignKey());
-                setForeignKeyJavaType(fields[i].getElementMapping().
-                    getForeignKey());
+            for (FieldMapping field : fields) {
+                setForeignKeyJavaType(field.getJoinForeignKey());
+                setForeignKeyJavaType(field.getForeignKey());
+                setForeignKeyJavaType(field.getElementMapping().
+                        getForeignKey());
             }
         }
 
@@ -756,28 +757,30 @@
         // that ends up unmapped
         Column[] cols;
         Collection unmappedCols = new ArrayList(5);
-        for (int i = 0; i < schemas.length; i++) {
-            tables = schemas[i].getTables();
-            for (int j = 0; j < tables.length; j++) {
+        for (Schema schema : schemas) {
+            tables = schema.getTables();
+            for (Table table : tables) {
                 unmappedCols.clear();
-                cols = tables[j].getColumns();
-                for (int k = 0; k < cols.length; k++)
-                    if (cols[k].getRefCount() == 0)
-                        unmappedCols.add(cols[k]);
+                cols = table.getColumns();
+                for (Column col : cols)
+                    if (col.getRefCount() == 0)
+                        unmappedCols.add(col);
 
                 if (unmappedCols.size() == cols.length) {
-                    if (_custom == null || !_custom.unmappedTable(tables[j]))
-                        _log.info(_loc.get("unmap-table", tables[j]));
-                } else if (unmappedCols.size() > 0)
-                    _log.info(_loc.get("unmap-cols", tables[j], unmappedCols));
+                    if (_custom == null || !_custom.unmappedTable(table))
+                        _log.info(_loc.get("unmap-table", table));
+                }
+                else if (unmappedCols.size() > 0)
+                    _log.info(_loc.get("unmap-cols", table, unmappedCols));
             }
         }
         if (_custom != null)
             _custom.close();
 
         // resolve mappings
-        for (Iterator itr = _tables.values().iterator(); itr.hasNext();)
-            ((ClassMapping) itr.next()).resolve(MODE_META | MODE_MAPPING);
+        for (Object o : _tables.values()) {
+            ((ClassMapping) o).resolve(MODE_META | MODE_MAPPING);
+        }
     }
 
     /**
@@ -868,15 +871,15 @@
 
         ClassMapping[] mappings = getMappings();
         ReverseCodeGenerator gen;
-        for (int i = 0; i < mappings.length; i++) {
+        for (ClassMapping mapping : mappings) {
             if (_log.isInfoEnabled())
-                _log.info(_loc.get("class-code", mappings[i]));
+                _log.info(_loc.get("class-code", mapping));
 
-            ApplicationIdTool aid = newApplicationIdTool(mappings[i]);
+            ApplicationIdTool aid = newApplicationIdTool(mapping);
             if (getGenerateAnnotations())
-                gen = new AnnotatedCodeGenerator(mappings[i], aid);
+                gen = new AnnotatedCodeGenerator(mapping, aid);
             else
-                gen = new ReverseCodeGenerator(mappings[i], aid);
+                gen = new ReverseCodeGenerator(mapping, aid);
 
             gen.generateCode();
 
@@ -885,17 +888,18 @@
                 written.add(gen.getFile());
                 if (aid != null && !aid.isInnerClass())
                     aid.record();
-            } else {
+            }
+            else {
                 StringWriter writer = new StringWriter();
                 gen.writeCode(writer);
-                output.put(mappings[i].getDescribedType(), writer.toString());
+                output.put(mapping.getDescribedType(), writer.toString());
 
                 if (aid != null && !aid.isInnerClass()) {
                     writer = new StringWriter();
                     aid.setWriter(writer);
                     aid.record();
-                    output.put(mappings[i].getObjectIdType(),
-                        writer.toString());
+                    output.put(mapping.getObjectIdType(),
+                            writer.toString());
                 }
             }
         }
@@ -926,10 +930,9 @@
         throws IOException {
         // pretend mappings are all resolved
         ClassMapping[] mappings = getMappings();
-        for (int i = 0; i < mappings.length; i++)
-        {
-            mappings[i].setResolve(MODE_META | MODE_MAPPING, true);
-            mappings[i].setUseSchemaElement(getUseSchemaElement());
+        for (ClassMapping classMapping : mappings) {
+            classMapping.setResolve(MODE_META | MODE_MAPPING, true);
+            classMapping.setUseSchemaElement(getUseSchemaElement());
         }
         // store in user's configured IO
         MetaDataFactory mdf = _conf.newMetaDataFactoryInstance();
@@ -941,9 +944,9 @@
             MODE_META | MODE_MAPPING, output);
 
         Set files = new TreeSet();
-        for (int i = 0; i < mappings.length; i++)
-            if (mappings[i].getSourceFile() != null)
-                files.add(mappings[i].getSourceFile());
+        for (ClassMapping mapping : mappings)
+            if (mapping.getSourceFile() != null)
+                files.add(mapping.getSourceFile());
         return files;
     }
 
@@ -951,10 +954,9 @@
         Map output = new HashMap();
         // pretend mappings are all resolved
         ClassMapping[] mappings = getMappings();
-        for (int i = 0; i < mappings.length; i++)
-        {
-            mappings[i].setResolve(MODE_META | MODE_MAPPING, true);
-            mappings[i].setUseSchemaElement(getUseSchemaElement());
+        for (ClassMapping mapping : mappings) {
+            mapping.setResolve(MODE_META | MODE_MAPPING, true);
+            mapping.setUseSchemaElement(getUseSchemaElement());
         }
         // store in user's configured IO
         MetaDataFactory mdf = _conf.newMetaDataFactoryInstance();
@@ -1058,12 +1060,12 @@
         if (pk != null && pk.columnsMatch(fk.getColumns()))
             return true;
         Index[] idx = fk.getTable().getIndexes();
-        for (int i = 0; i < idx.length; i++)
-            if (idx[i].isUnique() && idx[i].columnsMatch(fk.getColumns()))
+        for (Index index : idx)
+            if (index.isUnique() && index.columnsMatch(fk.getColumns()))
                 return true;
         Unique[] unq = fk.getTable().getUniques();
-        for (int i = 0; i < unq.length; i++)
-            if (unq[i].columnsMatch(fk.getColumns()))
+        for (Unique unique : unq)
+            if (unique.columnsMatch(fk.getColumns()))
                 return true;
         return false;
     }
@@ -1077,15 +1079,15 @@
         PrimaryKey pk = table.getPrimaryKey();
         ForeignKey unq = null;
         int count = 0;
-        for (int i = 0; i < fks.length; i++) {
-            if (pk != null && pk.columnsMatch(fks[i].getColumns()))
-                return fks[i];
-            if (!isUnique(fks[i]))
+        for (ForeignKey fk : fks) {
+            if (pk != null && pk.columnsMatch(fk.getColumns()))
+                return fk;
+            if (!isUnique(fk))
                 continue;
 
             count++;
             if (unq == null)
-                unq = fks[i];
+                unq = fk;
         }
         return (count == 1) ? unq : null;
     }
@@ -1129,9 +1131,9 @@
 
         Table table = cols[0].getTable();
         Index[] idxs = table.getIndexes();
-        for (int i = 0; i < idxs.length; i++)
-            if (idxs[i].columnsMatch(cols))
-                return idxs[i];
+        for (Index idx : idxs)
+            if (idx.columnsMatch(cols))
+                return idx;
         return null;
     }
 
@@ -1144,9 +1146,9 @@
 
         Table table = cols[0].getTable();
         Unique[] unqs = table.getUniques();
-        for (int i = 0; i < unqs.length; i++)
-            if (unqs[i].columnsMatch(cols))
-                return unqs[i];
+        for (Unique unq : unqs)
+            if (unq.columnsMatch(cols))
+                return unq;
         return null;
     }
 
@@ -1337,9 +1339,9 @@
         boolean outer) {
         // first map foreign keys to relations
         ForeignKey[] fks = table.getForeignKeys();
-        for (int i = 0; i < fks.length; i++)
-            if (fks[i] != join && fks[i] != cls.getJoinForeignKey())
-                mapForeignKey(cls, fks[i], join, outer);
+        for (ForeignKey fk : fks)
+            if (fk != join && fk != cls.getJoinForeignKey())
+                mapForeignKey(cls, fk, join, outer);
 
         // map any columns not controlled by foreign keys; also force primary
         // key cols to get mapped to simple fields even if the columns are
@@ -1347,13 +1349,13 @@
         PrimaryKey pk = (join != null) ? null : table.getPrimaryKey();
         boolean pkcol;
         Column[] cols = table.getColumns();
-        for (int i = 0; i < cols.length; i++) {
-            pkcol = pk != null && pk.containsColumn(cols[i]);
+        for (Column col : cols) {
+            pkcol = pk != null && pk.containsColumn(col);
             if (pkcol && cls.getIdentityType() == ClassMetaData.ID_DATASTORE)
                 continue;
             if ((cls.getPCSuperclass() == null && pkcol)
-                || !isForeignKeyColumn(cols[i]))
-                mapColumn(cls, cols[i], join, outer);
+                    || !isForeignKeyColumn(col))
+                mapColumn(cls, col, join, outer);
         }
     }
 
@@ -1362,8 +1364,8 @@
      */
     private static boolean isForeignKeyColumn(Column col) {
         ForeignKey[] fks = col.getTable().getForeignKeys();
-        for (int i = 0; i < fks.length; i++)
-            if (fks[i].containsColumn(col))
+        for (ForeignKey fk : fks)
+            if (fk.containsColumn(col))
                 return true;
         return false;
     }
@@ -1509,8 +1511,9 @@
             if (allUpperCase(name))
                 name = name.toLowerCase();
             subs = StringUtil.split(name, "_", 0);
-            for (int i = 0; i < subs.length; i++)
-                buf.append(StringUtil.capitalize(subs[i]));
+            for (String sub : subs) {
+                buf.append(StringUtil.capitalize(sub));
+            }
         }
 
         name = replaceInvalidCharacters(table.getName());
@@ -2034,8 +2037,8 @@
         } else {
             SchemaParser parser = new XMLSchemaParser(conf);
             File file;
-            for (int i = 0; i < args.length; i++) {
-                file = Files.getFile(args[i], loader);
+            for (String arg : args) {
+                file = Files.getFile(arg, loader);
                 log.info(_loc.get("revtool-running-file", file));
                 parser.parse(file);
             }
@@ -2173,8 +2176,8 @@
          */
         private boolean hasSubclasses(ClassMapping cls) {
             ClassMetaData[] metas = repos.getMetaDatas();
-            for (int i = 0; i < metas.length; i++)
-                if (metas[i].getPCSuperclass() == cls.getDescribedType())
+            for (ClassMetaData meta : metas)
+                if (meta.getPCSuperclass() == cls.getDescribedType())
                     return true;
             return false;
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueMappingImpl.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueMappingImpl.java
index 9fe8173..1348fee 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueMappingImpl.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueMappingImpl.java
@@ -184,11 +184,11 @@
         if (embeddedMeta != null) {
             FieldMapping[] fields = embeddedMeta.getFieldMappings();
             int j = 0;
-            for (int i = 0; i < fields.length; i++) {
-                ValueMapping val = fields[i].getValueMapping();
+            for (FieldMapping field : fields) {
+                ValueMapping val = field.getValueMapping();
                 if (val.getDeclaredTypeMapping() == target)
                     if (targetNumber == j)
-                    return val.getForeignKey();
+                        return val.getForeignKey();
                     else
                         j++;
             }
@@ -258,13 +258,14 @@
         newfk.setJoins(cols, tcols);
         if (_fk != null) {
             cols = _fk.getConstantColumns();
-            for (int i = 0; i < cols.length; i++)
-                newfk.joinConstant(cols[i], _fk.getConstant(cols[i]));
+            for (Column column : cols) {
+                newfk.joinConstant(column, _fk.getConstant(column));
+            }
 
             cols = _fk.getConstantPrimaryKeyColumns();
-            for (int i = 0; i < cols.length; i++)
-                newfk.joinConstant(_fk.getPrimaryKeyConstant(cols[i]),
-                    getEquivalentColumn(cols[i].getIdentifier(), target, true));
+            for (Column col : cols)
+                newfk.joinConstant(_fk.getPrimaryKeyConstant(col),
+                        getEquivalentColumn(col.getIdentifier(), target, true));
         }
         return newfk;
     }
@@ -382,8 +383,9 @@
         else if (_fk != null)
             row.whereForeignKey(_fk, null);
         else
-            for (int i = 0; i < _cols.length; i++)
-                row.whereNull(_cols[i]);
+            for (Column col : _cols) {
+                row.whereNull(col);
+            }
     }
 
     @Override
@@ -467,8 +469,10 @@
 
     @Override
     public void refSchemaComponents() {
-        for (int i = 0; i < _cols.length; i++)
-            _cols[i].ref();
+        for (Column col : _cols) {
+            col.ref();
+        }
+
         if (_fk != null) {
             _fk.ref();
             _fk.refColumns();
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Version.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Version.java
index db17416..8b8dcf1 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Version.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Version.java
@@ -168,8 +168,9 @@
      * Increment the reference count of used schema components.
      */
     public void refSchemaComponents() {
-        for (int i = 0; i < _cols.length; i++)
-            _cols[i].ref();
+        for (Column col : _cols) {
+            col.ref();
+        }
     }
 
     /**
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ColumnVersionStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ColumnVersionStrategy.java
index 7af3be7..32de141 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ColumnVersionStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ColumnVersionStrategy.java
@@ -162,8 +162,9 @@
         		templates[i].setIdentifier(infoColumn.getIdentifier());
         	}
         	Column[] cols = info.getColumns(vers, templates, adapt);
-        	for (int i = 0; i < cols.length; i++)
-        		cols[i].setVersionStrategy(this);
+            for (Column col : cols) {
+                col.setVersionStrategy(this);
+            }
         	vers.setColumns(cols);
         	vers.setColumnIO(info.getColumnIO());
         } else {
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ElementEmbedValueHandler.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ElementEmbedValueHandler.java
index 18d1443..db7cc62 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ElementEmbedValueHandler.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ElementEmbedValueHandler.java
@@ -198,8 +198,8 @@
             if (fms[i].getManagement() != FieldMetaData.MANAGE_PERSISTENT)
                 continue;
             cols = ((Embeddable) fms[i]).getColumns();
-            for (int j = 0; j < cols.length; j++)
-                if (cols[j] == col)
+            for (Column column : cols)
+                if (column == col)
                     return fms[i];
         }
         return null;
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EmbedFieldStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EmbedFieldStrategy.java
index 629d111..b5bfc9a 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EmbedFieldStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EmbedFieldStrategy.java
@@ -139,8 +139,8 @@
                 getFieldMappings();
             for (int i = 0; !found && i < fields.length; i++) {
                 cols = fields[i].getColumns();
-                for (int j = 0; j < cols.length; j++)
-                    if (cols[j].equals(col))
+                for (Column column : cols)
+                    if (column.equals(col))
                         found = true;
             }
             _synthetic = !found;
@@ -175,10 +175,10 @@
             em = new NullEmbeddedStateManager(owner, field);
         rm = new EmbeddedRowManager(rm, row);
         FieldMapping[] fields = field.getEmbeddedMapping().getFieldMappings();
-        for (int i = 0; i < fields.length; i++)
-            if (!Boolean.TRUE.equals(fields[i].isCustomInsert(em, store)))
-                if (!fields[i].isPrimaryKey())
-                    fields[i].insert(em, store, rm);
+        for (FieldMapping fieldMapping : fields)
+            if (!Boolean.TRUE.equals(fieldMapping.isCustomInsert(em, store)))
+                if (!fieldMapping.isPrimaryKey())
+                    fieldMapping.insert(em, store, rm);
 
         if (field.getColumnIO().isInsertable(0, true))
             setNullIndicatorColumn(sm, row);
@@ -266,9 +266,9 @@
         if (sm == null)
             sm = new NullEmbeddedStateManager(owner, field);
         FieldMapping[] fields = field.getEmbeddedMapping().getFieldMappings();
-        for (int i = 0; i < fields.length; i++)
-            if (!Boolean.TRUE.equals(fields[i].isCustomDelete(sm, store)))
-                fields[i].delete(sm, store, rm);
+        for (FieldMapping fieldMapping : fields)
+            if (!Boolean.TRUE.equals(fieldMapping.isCustomDelete(sm, store)))
+                fieldMapping.delete(sm, store, rm);
     }
 
     /**
@@ -327,16 +327,16 @@
 
         FieldMapping[] fields = field.getEmbeddedMapping().getFieldMappings();
         Boolean custom = null;
-        for (int i = 0; i < fields.length; i++) {
+        for (FieldMapping fieldMapping : fields) {
             switch (action) {
                 case INSERT:
-                    custom = fields[i].isCustomInsert(sm, store);
+                    custom = fieldMapping.isCustomInsert(sm, store);
                     break;
                 case UPDATE:
-                    custom = fields[i].isCustomUpdate(sm, store);
+                    custom = fieldMapping.isCustomUpdate(sm, store);
                     break;
                 case DELETE:
-                    custom = fields[i].isCustomDelete(sm, store);
+                    custom = fieldMapping.isCustomDelete(sm, store);
                     break;
             }
 
@@ -359,9 +359,9 @@
         if (em == null)
             em = new NullEmbeddedStateManager(sm, field);
         FieldMapping[] fields = field.getEmbeddedMapping().getFieldMappings();
-        for (int i = 0; i < fields.length; i++)
-            if (!Boolean.FALSE.equals(fields[i].isCustomInsert(em, store)))
-                fields[i].customInsert(em, store);
+        for (FieldMapping fieldMapping : fields)
+            if (!Boolean.FALSE.equals(fieldMapping.isCustomInsert(em, store)))
+                fieldMapping.customInsert(em, store);
     }
 
     @Override
@@ -387,9 +387,9 @@
         if (em == null)
             em = new NullEmbeddedStateManager(sm, field);
         FieldMapping[] fields = field.getEmbeddedMapping().getFieldMappings();
-        for (int i = 0; i < fields.length; i++)
-            if (!Boolean.FALSE.equals(fields[i].isCustomDelete(em, store)))
-                fields[i].customDelete(em, store);
+        for (FieldMapping fieldMapping : fields)
+            if (!Boolean.FALSE.equals(fieldMapping.isCustomDelete(em, store)))
+                fieldMapping.customDelete(em, store);
     }
 
     @Override
@@ -465,14 +465,14 @@
         FieldMapping[] fields = field.getEmbeddedMapping().getFieldMappings();
         boolean containsUnloadedEagerField = false;
 
-        for (int i = 0; i < fields.length; i++) {
-            boolean inResultSet = checkResult(fields[i],res);
+        for (FieldMapping fieldMapping : fields) {
+            boolean inResultSet = checkResult(fieldMapping, res);
             if (inResultSet) {
                 // At least one of the embeddable's field is in the ResultSet.
                 return true;
             }
 
-            if (fetch.requiresFetch(fields[i]) == FetchConfiguration.FETCH_LOAD) {
+            if (fetch.requiresFetch(fieldMapping) == FetchConfiguration.FETCH_LOAD) {
                 containsUnloadedEagerField = true;
             }
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EmbedValueHandler.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EmbedValueHandler.java
index b49043b..d2b049c 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EmbedValueHandler.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EmbedValueHandler.java
@@ -82,16 +82,16 @@
         Column[] curCols;
         Object[] curArgs;
         ColumnIO curIO;
-        for (int i = 0; i < fms.length; i++) {
-            if (fms[i].getManagement() != FieldMetaData.MANAGE_PERSISTENT)
+        for (FieldMapping fm : fms) {
+            if (fm.getManagement() != FieldMetaData.MANAGE_PERSISTENT)
                 continue;
-            FieldStrategy strat = fms[i].getStrategy();
+            FieldStrategy strat = fm.getStrategy();
 
             if (!(strat instanceof Embeddable))
                 throw new MetaDataException(_loc.get("not-embeddable",
-                    vm, fms[i]));
+                        vm, fm));
 
-            ValueMapping val = fms[i].getValueMapping();
+            ValueMapping val = fm.getValueMapping();
             if (val.getEmbeddedMapping() != null)
                 map(val, name, io, adapt, cols, args);
 
@@ -100,19 +100,19 @@
             for (int j = 0; j < curCols.length; j++) {
                 io.setInsertable(cols.size(), curIO.isInsertable(j, false));
                 io.setNullInsertable(cols.size(),
-                    curIO.isInsertable(j, true));
+                        curIO.isInsertable(j, true));
                 io.setUpdatable(cols.size(), curIO.isUpdatable(j, false));
                 io.setNullUpdatable(cols.size(), curIO.isUpdatable(j, true));
                 cols.add(curCols[j]);
             }
 
-            curArgs = ((Embeddable) fms[i].getStrategy()).getResultArguments();
+            curArgs = ((Embeddable) fm.getStrategy()).getResultArguments();
             if (curCols.length == 1)
                 args.add(curArgs);
             else if (curCols.length > 1)
                 for (int j = 0; j < curCols.length; j++)
                     args.add((curArgs == null) ? null
-                        : ((Object[]) curArgs)[j]);
+                            : ((Object[]) curArgs)[j]);
         }
     }
 
@@ -235,29 +235,32 @@
         Embeddable embed;
         Object cval;
         Column[] ecols;
-        for (int i = 0; i < fms.length; i++) {
-            if (fms[i].getManagement() != FieldMetaData.MANAGE_PERSISTENT)
+        for (FieldMapping fm : fms) {
+            if (fm.getManagement() != FieldMetaData.MANAGE_PERSISTENT)
                 continue;
 
-            ValueMapping vm1 = fms[i].getValueMapping();
+            ValueMapping vm1 = fm.getValueMapping();
             OpenJPAStateManager em1 = null;
 
-            embed = (Embeddable) fms[i].getStrategy();
+            embed = (Embeddable) fm.getStrategy();
             if (vm1.getEmbeddedMapping() != null) {
                 if (em instanceof StateManagerImpl) {
-                em1 = store.getContext().embed(null, null, em, vm1);
-                idx = toObjectValue1(em1, vm1, val, store, fetch, cols, idx);
-                } else if (em instanceof ObjectIdStateManager) {
+                    em1 = store.getContext().embed(null, null, em, vm1);
+                    idx = toObjectValue1(em1, vm1, val, store, fetch, cols, idx);
+                }
+                else if (em instanceof ObjectIdStateManager) {
                     em1 = new ObjectIdStateManager(null, null, vm1);
                     idx = toObjectValue1(em1, vm1, val, store, null,
-                            getColumns(fms[i]), idx);
+                            getColumns(fm), idx);
                 }
                 if (em1 != null) {
                     cval = em1.getManagedInstance();
-                } else {
+                }
+                else {
                     cval = null;
                 }
-            } else {
+            }
+            else {
                 ecols = embed.getColumns();
                 if (ecols.length == 0)
                     cval = null;
@@ -277,10 +280,10 @@
             else {
                 if (!(em instanceof ObjectIdStateManager))
                     cval = embed.toEmbeddedObjectValue(cval);
-                if (fms[i].getHandler() != null)
-                    cval = fms[i].getHandler().toObjectValue(fms[i], cval);
+                if (fm.getHandler() != null)
+                    cval = fm.getHandler().toObjectValue(fm, cval);
 
-                em.store(fms[i].getIndex(), cval);
+                em.store(fm.getIndex(), cval);
             }
         }
         return idx;
@@ -299,20 +302,21 @@
     public static void getEmbeddedIdCols(FieldMapping fmd, List cols) {
         ClassMapping embed = fmd.getEmbeddedMapping();
         FieldMapping[] fmds = embed.getFieldMappings();
-        for (int i = 0; i < fmds.length; i++) {
-            if (fmds[i].getValue().getEmbeddedMetaData() == null) {
-                getIdColumns(fmds[i], cols);
-            } else {
-                getEmbeddedIdCols(fmds[i], cols);
+        for (FieldMapping fieldMapping : fmds) {
+            if (fieldMapping.getValue().getEmbeddedMetaData() == null) {
+                getIdColumns(fieldMapping, cols);
+            }
+            else {
+                getEmbeddedIdCols(fieldMapping, cols);
             }
         }
     }
 
     public static void getIdColumns(FieldMapping fmd, List cols) {
         Column[] pkCols =  ((ValueMappingImpl)fmd.getValue()).getColumns();
-        for (int j = 0; j < pkCols.length; j++) {
+        for (Column pkCol : pkCols) {
             Column newCol = new Column();
-            newCol.copy(pkCols[j]);
+            newCol.copy(pkCol);
             cols.add(newCol);
         }
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EnumValueHandler.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EnumValueHandler.java
index 1a6c518..155c0ea 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EnumValueHandler.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EnumValueHandler.java
@@ -88,8 +88,9 @@
             // look for the longest enum value name; use 20 as min length to
             // leave room for future long names
             int len = 20;
-            for (int i = 0; i < _vals.length; i++)
-                len = Math.max(_vals[i].name().length(), len);
+            for (Enum<?> val : _vals) {
+                len = Math.max(val.name().length(), len);
+            }
 
             col.setJavaType(JavaTypes.STRING);
             col.setSize(len);
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerCollectionTableFieldStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerCollectionTableFieldStrategy.java
index 7119b0d..d5c8c4d 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerCollectionTableFieldStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerCollectionTableFieldStrategy.java
@@ -260,9 +260,9 @@
             Row delRow = rm.getSecondaryRow(field.getTable(),
                 Row.ACTION_DELETE);
             delRow.whereForeignKey(field.getJoinForeignKey(), sm);
-            for (Iterator itr = rem.iterator(); itr.hasNext();) {
-                HandlerStrategies.where(elem, itr.next(), store, delRow,
-                    _cols);
+            for (Object o : rem) {
+                HandlerStrategies.where(elem, o, store, delRow,
+                        _cols);
                 rm.flushSecondaryRow(delRow);
             }
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerFieldStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerFieldStrategy.java
index 908a551..cf0d2d9 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerFieldStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerFieldStrategy.java
@@ -93,21 +93,24 @@
                 if (_cols[i].isAutoAssigned())
                     marked = true;
             if (!marked)
-                for (int i = 0; i < _cols.length; i++)
-                    _cols[i].setAutoAssigned(true);
+                for (Column col : _cols) {
+                    col.setAutoAssigned(true);
+                }
         }
 
         // add primary key columns to table pk if logical
         field.mapPrimaryKey(adapt);
         PrimaryKey pk = field.getTable().getPrimaryKey();
         if (field.isPrimaryKey() && pk != null && (adapt || pk.isLogical()))
-            for (int i = 0; i < _cols.length; i++)
-                pk.addColumn(_cols[i]);
+            for (Column col : _cols) {
+                pk.addColumn(col);
+            }
 
         // set joinable
         if (!field.getHandler().objectValueRequiresLoad(field))
-            for (int i = 0; i < _cols.length; i++)
-                field.getDefiningMapping().setJoinable(_cols[i], this);
+            for (Column col : _cols) {
+                field.getDefiningMapping().setJoinable(col, this);
+            }
     }
 
     @Override
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerHandlerMapTableFieldStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerHandlerMapTableFieldStrategy.java
index 5348ee0..d0ca701 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerHandlerMapTableFieldStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerHandlerMapTableFieldStrategy.java
@@ -20,7 +20,6 @@
 
 import java.sql.SQLException;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -172,12 +171,12 @@
         ValueMapping key = field.getKeyMapping();
         ValueMapping val = field.getElementMapping();
         Map.Entry entry;
-        for (Iterator itr = map.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : map.entrySet()) {
+            entry = (Map.Entry) o;
             HandlerStrategies.set(key, entry.getKey(), store, row, _kcols,
-                _kio, true);
+                    _kio, true);
             HandlerStrategies.set(val, entry.getValue(), store, row, _vcols,
-                _vio, true);
+                    _vio, true);
             rm.flushSecondaryRow(row);
         }
     }
@@ -207,9 +206,9 @@
             Row delRow = rm.getSecondaryRow(field.getTable(),
                 Row.ACTION_DELETE);
             delRow.whereForeignKey(field.getJoinForeignKey(), sm);
-            for (Iterator itr = rem.iterator(); itr.hasNext();) {
-                HandlerStrategies.where(key, itr.next(), store, delRow,
-                    _kcols);
+            for (Object o : rem) {
+                HandlerStrategies.where(key, o, store, delRow,
+                        _kcols);
                 rm.flushSecondaryRow(delRow);
             }
         }
@@ -224,12 +223,12 @@
             addRow.setForeignKey(field.getJoinForeignKey(),
                 field.getJoinColumnIO(), sm);
 
-            for (Iterator itr = add.iterator(); itr.hasNext();) {
-                mkey = itr.next();
+            for (Object o : add) {
+                mkey = o;
                 HandlerStrategies.set(key, mkey, store, addRow, _kcols,
-                    _kio, true);
+                        _kio, true);
                 HandlerStrategies.set(val, map.get(mkey), store, addRow,
-                    _vcols, _vio, true);
+                        _vcols, _vio, true);
                 rm.flushSecondaryRow(addRow);
             }
         }
@@ -241,11 +240,11 @@
                 Row.ACTION_UPDATE);
             changeRow.whereForeignKey(field.getJoinForeignKey(), sm);
 
-            for (Iterator itr = change.iterator(); itr.hasNext();) {
-                mkey = itr.next();
+            for (Object o : change) {
+                mkey = o;
                 HandlerStrategies.where(key, mkey, store, changeRow, _kcols);
                 HandlerStrategies.set(val, map.get(mkey), store, changeRow,
-                    _vcols, _vio, true);
+                        _vcols, _vio, true);
                 rm.flushSecondaryRow(changeRow);
             }
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerRelationMapTableFieldStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerRelationMapTableFieldStrategy.java
index d96bdd8..84b0321 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerRelationMapTableFieldStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerRelationMapTableFieldStrategy.java
@@ -20,7 +20,6 @@
 
 import java.sql.SQLException;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
@@ -237,16 +236,17 @@
         StoreContext ctx = store.getContext();
         OpenJPAStateManager valsm;
         Map.Entry entry;
-        for (Iterator itr = map.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : map.entrySet()) {
+            entry = (Map.Entry) o;
             valsm = RelationStrategies.getStateManager(entry.getValue(),
-                ctx);
-            if (field.isUni1ToMFK()){
+                    ctx);
+            if (field.isUni1ToMFK()) {
                 row = rm.getRow(field.getElementMapping().getDeclaredTypeMapping().getTable(),
-                    Row.ACTION_UPDATE, valsm, true);
+                        Row.ACTION_UPDATE, valsm, true);
                 row.wherePrimaryKey(valsm);
                 val.setForeignKey(row, sm);
-            } else {
+            }
+            else {
                 val.setForeignKey(row, valsm);
             }
             HandlerStrategies.set(key, entry.getKey(), store, row, _kcols,
@@ -313,15 +313,16 @@
                 changeRow.whereForeignKey(field.getJoinForeignKey(), sm);
             }
 
-            for (Iterator itr = change.iterator(); itr.hasNext();) {
-                mkey = itr.next();
+            for (Object o : change) {
+                mkey = o;
                 valsm = RelationStrategies.getStateManager(map.get(mkey), ctx);
-                if (field.isUni1ToMFK()){
+                if (field.isUni1ToMFK()) {
                     changeRow = rm.getRow(field.getElementMapping().getDeclaredTypeMapping().getTable(),
-                        Row.ACTION_UPDATE, valsm, true);
+                            Row.ACTION_UPDATE, valsm, true);
                     changeRow.wherePrimaryKey(valsm);
                     val.setForeignKey(changeRow, sm);
-                } else {
+                }
+                else {
                     val.setForeignKey(changeRow, valsm);
                 }
 
@@ -340,22 +341,24 @@
                     Row.ACTION_DELETE);
                 delRow.whereForeignKey(field.getJoinForeignKey(), sm);
             }
-            for (Iterator itr = rem.iterator(); itr.hasNext();) {
-                mkey = itr.next();
-                if (field.isUni1ToMFK()){
+            for (Object value : rem) {
+                mkey = value;
+                if (field.isUni1ToMFK()) {
                     updateSetNull(sm, mkey, store, rm);
-                } else {
+                }
+                else {
                     HandlerStrategies.where(key, mkey, store, delRow, _kcols);
                     rm.flushSecondaryRow(delRow);
                 }
             }
             if (!canChange && !change.isEmpty()) {
-                for (Iterator itr = change.iterator(); itr.hasNext();) {
-                    mkey = itr.next();
-                    if (field.isUni1ToMFK()){
+                for (Object o : change) {
+                    mkey = o;
+                    if (field.isUni1ToMFK()) {
                         updateSetNull(sm, mkey, store, rm);
-                    } else {
-                        HandlerStrategies.where(key, mkey, store, delRow,  _kcols);
+                    }
+                    else {
+                        HandlerStrategies.where(key, mkey, store, delRow, _kcols);
                         rm.flushSecondaryRow(delRow);
                     }
                 }
@@ -372,38 +375,40 @@
                 addRow.setForeignKey(field.getJoinForeignKey(),
                         field.getJoinColumnIO(), sm);
             }
-            for (Iterator itr = add.iterator(); itr.hasNext();) {
-                mkey = itr.next();
+            for (Object value : add) {
+                mkey = value;
                 valsm = RelationStrategies.getStateManager(map.get(mkey), ctx);
-                if (field.isUni1ToMFK()){
+                if (field.isUni1ToMFK()) {
                     addRow = rm.getRow(field.getElementMapping().getDeclaredTypeMapping().getTable(),
-                        Row.ACTION_UPDATE, valsm, true);
+                            Row.ACTION_UPDATE, valsm, true);
                     addRow.wherePrimaryKey(valsm);
                     val.setForeignKey(addRow, sm);
-                } else {
+                }
+                else {
                     val.setForeignKey(addRow, valsm);
                 }
 
                 HandlerStrategies.set(key, mkey, store, addRow, _kcols,
-                    _kio, true);
+                        _kio, true);
                 if (!field.isUni1ToMFK())
                     rm.flushSecondaryRow(addRow);
             }
             if (!canChange && !change.isEmpty()) {
-                for (Iterator itr = change.iterator(); itr.hasNext();) {
-                    mkey = itr.next();
+                for (Object o : change) {
+                    mkey = o;
                     valsm = RelationStrategies.getStateManager(map.get(mkey), ctx);
-                    if (field.isUni1ToMFK()){
+                    if (field.isUni1ToMFK()) {
                         addRow = rm.getRow(field.getElementMapping().getDeclaredTypeMapping().getTable(),
-                            Row.ACTION_UPDATE, valsm, true);
+                                Row.ACTION_UPDATE, valsm, true);
                         addRow.wherePrimaryKey(valsm);
                         val.setForeignKey(addRow, sm);
-                    } else {
+                    }
+                    else {
                         val.setForeignKey(addRow, valsm);
                     }
 
                     HandlerStrategies.set(key, mkey, store, addRow, _kcols,
-                        _kio, true);
+                            _kio, true);
                     if (!field.isUni1ToMFK())
                         rm.flushSecondaryRow(addRow);
                 }
@@ -469,8 +474,7 @@
 
     private void updateSetNull(OpenJPAStateManager sm, JDBCStore store, RowManager rm,
         Set rem) throws SQLException {
-        for (Iterator itr = rem.iterator(); itr.hasNext();) {
-            Object mkey = itr.next();
+        for (Object mkey : rem) {
             updateSetNull(sm, mkey, store, rm);
         }
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerStrategies.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerStrategies.java
index 6c80a11..53a5941 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerStrategies.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerStrategies.java
@@ -65,8 +65,8 @@
             cols = vinfo.getColumns(vm, colName, cols,
                 vm.getFieldMapping().getTable(), adapt);
             if (vinfo.isImplicitRelation()) {
-                for (int i = 0; i < cols.length; i++) {
-                    cols[i].setImplicitRelation(true);
+                for (Column col : cols) {
+                    col.setImplicitRelation(true);
                 }
             }
             ColumnIO mappedIO = vinfo.getColumnIO();
@@ -171,8 +171,9 @@
 
         val = toDataStoreValue(vm, val, cols, store);
         if (val == null)
-            for (int i = 0; i < cols.length; i++)
-                row.whereNull(cols[i]);
+            for (Column col : cols) {
+                row.whereNull(col);
+            }
         else if (cols.length == 1)
             where(row, cols[0], val);
         else {
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/InValueDiscriminatorStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/InValueDiscriminatorStrategy.java
index 0b28c67..907e027 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/InValueDiscriminatorStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/InValueDiscriminatorStrategy.java
@@ -176,8 +176,9 @@
             sql.append(" IS ").appendValue(null).append(" OR ").append(alias);
         sql.append(" IN (");
         sql.appendValue(getDiscriminatorValue(base), col);
-        for (int i = 0; i < subs.length; i++)
-            sql.append(", ").appendValue(getDiscriminatorValue(subs[i]), col);
+        for (ClassMapping sub : subs) {
+            sql.append(", ").appendValue(getDiscriminatorValue(sub), col);
+        }
         sql.append(")");
         if (outer)
             sql.append(")");
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MapTableFieldStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MapTableFieldStrategy.java
index 21ad6f4..46035ba 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MapTableFieldStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MapTableFieldStrategy.java
@@ -326,11 +326,11 @@
 
     private FieldMapping getFieldMapping(ClassMapping meta) {
         FieldMapping[] fields = meta.getFieldMappings();
-        for (int i = 0; i < fields.length; i++) {
-            ValueMapping val = fields[i].getValueMapping();
-            if (fields[i].getMappedByMetaData() == field &&
+        for (FieldMapping fieldMapping : fields) {
+            ValueMapping val = fieldMapping.getValueMapping();
+            if (fieldMapping.getMappedByMetaData() == field &&
                     val.getDeclaredTypeCode() == JavaTypes.MAP)
-                return fields[i];
+                return fieldMapping;
         }
         return null;
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/NumberVersionStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/NumberVersionStrategy.java
index cc8c21e..2d63fce 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/NumberVersionStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/NumberVersionStrategy.java
@@ -81,8 +81,9 @@
     public Map<Column,String> getBulkUpdateValues() {
         Column[] cols = vers.getColumns();
         Map<Column,String> map = new HashMap<>(cols.length);
-        for (int i = 0; i < cols.length; i++)
-            map.put(cols[i], cols[i].getName() + " + 1");
+        for (Column col : cols) {
+            map.put(col, col.getName() + " + 1");
+        }
         return map;
     }
 }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ObjectIdValueHandler.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ObjectIdValueHandler.java
index fb22f4c..d9162a9 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ObjectIdValueHandler.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ObjectIdValueHandler.java
@@ -86,25 +86,25 @@
         }
 
         FieldMapping[] fmds = embeddedMeta.getFieldMappings();
-        for (int i = 0; i < fmds.length; i++) {
-            mapsIdColList = fmds[i].getValueInfo().getMapsIdColumns();
+        for (FieldMapping fmd : fmds) {
+            mapsIdColList = fmd.getValueInfo().getMapsIdColumns();
             if (mapsIdColList.size() == 0)
                 continue;
-            ClassMapping embeddedMeta1 = (ClassMapping)fmds[i].getEmbeddedMetaData();
+            ClassMapping embeddedMeta1 = (ClassMapping) fmd.getEmbeddedMetaData();
             if (embeddedMeta1 != null)
                 setMapsIdCols(mapsIdColList, embeddedMeta1);
             else
-                setMapsIdCols(mapsIdColList, fmds[i]);
+                setMapsIdCols(mapsIdColList, fmd);
         }
     }
 
     private void setMapsIdCols(List cols, ClassMapping cm) {
-        for (int i = 0; i < cols.size(); i++) {
-            DBIdentifier refColName = ((Column)cols.get(i)).getTargetIdentifier();
+        for (Object col : cols) {
+            DBIdentifier refColName = ((Column) col).getTargetIdentifier();
             FieldMapping fm = getReferenceField(cm, refColName);
             if (fm != null) {
                 List colList1 = new ArrayList();
-                colList1.add(cols.get(i));
+                colList1.add(col);
                 fm.setMapsIdCols(true);
                 fm.getValueInfo().setMapsIdColumns(colList1);
             }
@@ -118,11 +118,11 @@
             return;
         }
 
-        for (int i = 0; i < cols.size(); i++) {
-            DBIdentifier refColName = ((Column)cols.get(i)).getTargetIdentifier();
+        for (Object col : cols) {
+            DBIdentifier refColName = ((Column) col).getTargetIdentifier();
             if (isReferenceField(fm, refColName)) {
                 List colList1 = new ArrayList();
-                colList1.add(cols.get(i));
+                colList1.add(col);
                 fm.setMapsIdCols(true);
                 fm.getValueInfo().setMapsIdColumns(colList1);
             }
@@ -131,9 +131,9 @@
 
     private FieldMapping getReferenceField(ClassMapping cm, DBIdentifier refColName) {
         FieldMapping[] fmds = cm.getFieldMappings();
-        for (int i = 0; i < fmds.length; i++) {
-            if (isReferenceField(fmds[i], refColName))
-                return fmds[i];
+        for (FieldMapping fmd : fmds) {
+            if (isReferenceField(fmd, refColName))
+                return fmd;
         }
         return null;
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/PrimitiveFieldStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/PrimitiveFieldStrategy.java
index 5177acf..77dff65 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/PrimitiveFieldStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/PrimitiveFieldStrategy.java
@@ -94,8 +94,9 @@
         if (field.getValueStrategy() == ValueStrategies.AUTOASSIGN)
             cols[0].setAutoAssigned(true);
         if (vinfo.isImplicitRelation())
-        	for (int i = 0; i < cols.length; i++)
-        		cols[i].setImplicitRelation(true);
+            for (Column col : cols) {
+                col.setImplicitRelation(true);
+            }
         field.setColumns(cols);
         field.setColumnIO(vinfo.getColumnIO());
         field.mapConstraints(fieldName, adapt);
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationFieldStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationFieldStrategy.java
index fa9ad26..ce0cdaf 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationFieldStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationFieldStrategy.java
@@ -186,10 +186,12 @@
         if (field.isPrimaryKey()) {
             Column[] cols = field.getColumns();
             if (pk != null && (adapt || pk.isLogical()))
-                for (int i = 0; i < cols.length; i++)
-                    pk.addColumn(cols[i]);
-            for (int i = 0; i < cols.length; i++)
-                field.getDefiningMapping().setJoinable(cols[i], this);
+                for (Column col : cols) {
+                    pk.addColumn(col);
+                }
+            for (Column col : cols) {
+                field.getDefiningMapping().setJoinable(col, this);
+            }
         }
 
         // map constraints after pk so we don't re-index / re-unique pk col
@@ -205,8 +207,8 @@
     private void setMappedByIdColumns() {
         ClassMetaData owner = field.getDefiningMetaData();
         FieldMetaData[] pks = owner.getPrimaryKeyFields();
-        for (int i = 0; i < pks.length; i++) {
-            FieldMapping fm = (FieldMapping) pks[i];
+        for (FieldMetaData pk : pks) {
+            FieldMapping fm = (FieldMapping) pk;
             ValueMappingImpl val = (ValueMappingImpl) field.getValue();
             ValueMappingInfo info = val.getValueInfo();
             if (info.getColumns().size() == 0)
@@ -222,15 +224,16 @@
         String mappedByIdValue = field.getMappedByIdValue();
         if (embeddedId != null) {
             FieldMetaData[] fmds = embeddedId.getFields();
-            for (int i = 0; i < fmds.length; i++) {
-                if ((fmds[i].getName().equals(mappedByIdValue)) ||
-                    mappedByIdValue.length() == 0) {
-                    if (fmds[i].getValue().getEmbeddedMetaData() != null) {
+            for (FieldMetaData fmd : fmds) {
+                if ((fmd.getName().equals(mappedByIdValue)) ||
+                        mappedByIdValue.length() == 0) {
+                    if (fmd.getValue().getEmbeddedMetaData() != null) {
                         EmbedValueHandler.getEmbeddedIdCols(
-                                (FieldMapping)fmds[i], cols);
-                    } else
+                                (FieldMapping) fmd, cols);
+                    }
+                    else
                         EmbedValueHandler.getIdColumns(
-                                (FieldMapping)fmds[i], cols);
+                                (FieldMapping) fmd, cols);
                 }
             }
             return cols;
@@ -241,8 +244,9 @@
             if (pks.length != 1 || pks[0].getDeclaredType() != pkType)
                 return Collections.EMPTY_LIST;
             pkCols = pk.getColumns();
-            for (int i = 0; i < pkCols.length; i++)
-                cols.add(pkCols[i]);
+            for (Column pkCol : pkCols) {
+                cols.add(pkCol);
+            }
             return cols;
         }
     }
@@ -345,11 +349,11 @@
 
     private FieldMapping getMapField(ClassMetaData meta) {
         FieldMapping[] fields = ((ClassMapping)meta).getFieldMappings();
-        for (int i = 0; i < fields.length; i++) {
-            FieldMetaData mappedBy = fields[i].getMappedByMetaData();
-            if (fields[i].getDeclaredTypeCode() == JavaTypes.MAP &&
-                mappedBy == field)
-                return fields[i];
+        for (FieldMapping fieldMapping : fields) {
+            FieldMetaData mappedBy = fieldMapping.getMappedByMetaData();
+            if (fieldMapping.getDeclaredTypeCode() == JavaTypes.MAP &&
+                    mappedBy == field)
+                return fieldMapping;
         }
         return null;
     }
@@ -506,10 +510,10 @@
         // table if there is a field controlling the foreign key
         Row row = null;
         FieldMapping[] invs = field.getInverseMappings();
-        for (int i = 0; i < invs.length; i++) {
-            if (invs[i].getMappedByMetaData() == field
-                && invs[i].getTypeCode() == JavaTypes.PC) {
-                row = invs[i].getRow(rel, store, rm, action);
+        for (FieldMapping inv : invs) {
+            if (inv.getMappedByMetaData() == field
+                    && inv.getTypeCode() == JavaTypes.PC) {
+                row = inv.getRow(rel, store, rm, action);
                 break;
             }
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationHandlerMapTableFieldStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationHandlerMapTableFieldStrategy.java
index b21f62c..92a88bd 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationHandlerMapTableFieldStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationHandlerMapTableFieldStrategy.java
@@ -20,7 +20,6 @@
 
 import java.sql.SQLException;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.openjpa.jdbc.kernel.EagerFetchModes;
@@ -205,12 +204,12 @@
         StoreContext ctx = store.getContext();
         OpenJPAStateManager keysm;
         Map.Entry entry;
-        for (Iterator itr = map.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : map.entrySet()) {
+            entry = (Map.Entry) o;
             keysm = RelationStrategies.getStateManager(entry.getKey(), ctx);
             key.setForeignKey(row, keysm);
             HandlerStrategies.set(val, entry.getValue(), store, row, _vcols,
-                _vio, true);
+                    _vio, true);
             rm.flushSecondaryRow(row);
         }
     }
@@ -242,8 +241,8 @@
             Row delRow = rm.getSecondaryRow(field.getTable(),
                 Row.ACTION_DELETE);
             delRow.whereForeignKey(field.getJoinForeignKey(), sm);
-            for (Iterator itr = rem.iterator(); itr.hasNext();) {
-                keysm = RelationStrategies.getStateManager(itr.next(), ctx);
+            for (Object o : rem) {
+                keysm = RelationStrategies.getStateManager(o, ctx);
                 key.whereForeignKey(delRow, keysm);
                 rm.flushSecondaryRow(delRow);
             }
@@ -259,12 +258,12 @@
             addRow.setForeignKey(field.getJoinForeignKey(),
                 field.getJoinColumnIO(), sm);
 
-            for (Iterator itr = add.iterator(); itr.hasNext();) {
-                mkey = itr.next();
+            for (Object o : add) {
+                mkey = o;
                 keysm = RelationStrategies.getStateManager(mkey, ctx);
                 key.setForeignKey(addRow, keysm);
                 HandlerStrategies.set(val, map.get(mkey), store, addRow,
-                    _vcols, _vio, true);
+                        _vcols, _vio, true);
                 rm.flushSecondaryRow(addRow);
             }
         }
@@ -276,12 +275,12 @@
                 Row.ACTION_UPDATE);
             changeRow.whereForeignKey(field.getJoinForeignKey(), sm);
 
-            for (Iterator itr = change.iterator(); itr.hasNext();) {
-                mkey = itr.next();
+            for (Object o : change) {
+                mkey = o;
                 keysm = RelationStrategies.getStateManager(mkey, ctx);
                 key.whereForeignKey(changeRow, keysm);
                 HandlerStrategies.set(val, map.get(mkey), store, changeRow,
-                    _vcols, _vio, true);
+                        _vcols, _vio, true);
                 rm.flushSecondaryRow(changeRow);
             }
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationRelationMapTableFieldStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationRelationMapTableFieldStrategy.java
index 6eca7f2..4e0e872 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationRelationMapTableFieldStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationRelationMapTableFieldStrategy.java
@@ -20,7 +20,6 @@
 
 import java.sql.SQLException;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
@@ -296,16 +295,17 @@
         StoreContext ctx = sm.getContext();
         OpenJPAStateManager keysm, valsm;
         Map.Entry entry;
-        for (Iterator itr = map.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : map.entrySet()) {
+            entry = (Map.Entry) o;
             keysm = RelationStrategies.getStateManager(entry.getKey(), ctx);
             valsm = RelationStrategies.getStateManager(entry.getValue(), ctx);
-            if (field.isUni1ToMFK()){
+            if (field.isUni1ToMFK()) {
                 row = rm.getRow(field.getElementMapping().getDeclaredTypeMapping().getTable(),
-                    Row.ACTION_UPDATE, valsm, true);
+                        Row.ACTION_UPDATE, valsm, true);
                 row.wherePrimaryKey(valsm);
                 val.setForeignKey(row, sm);
-            } else {
+            }
+            else {
                 val.setForeignKey(row, valsm);
             }
             key.setForeignKey(row, keysm);
@@ -362,8 +362,8 @@
                     Row.ACTION_UPDATE);
                 changeRow.whereForeignKey(field.getJoinForeignKey(), sm);
             }
-            for (Iterator itr = change.iterator(); itr.hasNext();) {
-                mkey = itr.next();
+            for (Object o : change) {
+                mkey = o;
                 Object mval = map.get(mkey);
                 if (mval == null) {
                     Set<Map.Entry> entries = map.entrySet();
@@ -377,12 +377,13 @@
                 keysm = RelationStrategies.getStateManager(mkey, ctx);
                 valsm = RelationStrategies.getStateManager(mval, ctx);
                 key.whereForeignKey(changeRow, keysm);
-                if (field.isUni1ToMFK()){
+                if (field.isUni1ToMFK()) {
                     changeRow = rm.getRow(field.getElementMapping().getDeclaredTypeMapping().getTable(),
-                        Row.ACTION_UPDATE, valsm, true);
+                            Row.ACTION_UPDATE, valsm, true);
                     changeRow.wherePrimaryKey(valsm);
                     val.setForeignKey(changeRow, sm);
-                } else {
+                }
+                else {
                     val.setForeignKey(changeRow, valsm);
                     rm.flushSecondaryRow(changeRow);
                 }
@@ -399,22 +400,22 @@
                 delRow.whereForeignKey(field.getJoinForeignKey(), sm);
             }
 
-            for (Iterator itr = rem.iterator(); itr.hasNext();) {
-                Object pc = itr.next();
-                if (field.isUni1ToMFK()){
+            for (Object pc : rem) {
+                if (field.isUni1ToMFK()) {
                     updateSetNull(sm, rm, pc);
-                } else {
+                }
+                else {
                     keysm = RelationStrategies.getStateManager(pc, ctx);
                     key.whereForeignKey(delRow, keysm);
                     rm.flushSecondaryRow(delRow);
                 }
             }
             if (!canChange && !change.isEmpty()) {
-                for (Iterator itr = change.iterator(); itr.hasNext();) {
-                    Object pc = itr.next();
-                    if (field.isUni1ToMFK()){
+                for (Object pc : change) {
+                    if (field.isUni1ToMFK()) {
                         updateSetNull(sm, rm, pc);
-                    } else {
+                    }
+                    else {
                         keysm = RelationStrategies.getStateManager(pc, ctx);
                         key.whereForeignKey(delRow, keysm);
                         rm.flushSecondaryRow(delRow);
@@ -433,8 +434,8 @@
                 addRow.setForeignKey(field.getJoinForeignKey(),
                     field.getJoinColumnIO(), sm);
             }
-            for (Iterator itr = add.iterator(); itr.hasNext();) {
-                mkey = itr.next();
+            for (Object value : add) {
+                mkey = value;
                 Object mval = map.get(mkey);
                 if (mval == null) {
                     Set<Map.Entry> entries = map.entrySet();
@@ -447,21 +448,22 @@
                     continue;
                 keysm = RelationStrategies.getStateManager(mkey, ctx);
                 valsm = RelationStrategies.getStateManager(mval, ctx);
-                if (field.isUni1ToMFK()){
+                if (field.isUni1ToMFK()) {
                     addRow = rm.getRow(field.getElementMapping().getDeclaredTypeMapping().getTable(),
-                        Row.ACTION_UPDATE, valsm, true);
+                            Row.ACTION_UPDATE, valsm, true);
                     addRow.wherePrimaryKey(valsm);
                     key.setForeignKey(addRow, keysm);
                     val.setForeignKey(addRow, sm);
-                } else {
+                }
+                else {
                     key.setForeignKey(addRow, keysm);
                     val.setForeignKey(addRow, valsm);
                     rm.flushSecondaryRow(addRow);
                 }
             }
             if (!canChange && !change.isEmpty()) {
-                for (Iterator itr = change.iterator(); itr.hasNext();) {
-                    mkey = itr.next();
+                for (Object o : change) {
+                    mkey = o;
                     Object mval = map.get(mkey);
                     if (mval == null) {
                         Set<Map.Entry> entries = map.entrySet();
@@ -474,13 +476,14 @@
                         continue;
                     keysm = RelationStrategies.getStateManager(mkey, ctx);
                     valsm = RelationStrategies.getStateManager(mval, ctx);
-                    if (field.isUni1ToMFK()){
+                    if (field.isUni1ToMFK()) {
                         addRow = rm.getRow(field.getElementMapping().getDeclaredTypeMapping().getTable(),
-                            Row.ACTION_UPDATE, valsm, true);
+                                Row.ACTION_UPDATE, valsm, true);
                         addRow.wherePrimaryKey(valsm);
                         key.setForeignKey(addRow, keysm);
                         val.setForeignKey(addRow, sm);
-                    } else {
+                    }
+                    else {
                         key.setForeignKey(addRow, keysm);
                         val.setForeignKey(addRow, valsm);
                         rm.flushSecondaryRow(addRow);
@@ -556,8 +559,7 @@
 
     private void updateSetNull(OpenJPAStateManager sm, JDBCStore store, RowManager rm,
         Set rem) throws SQLException {
-        for (Iterator itr = rem.iterator(); itr.hasNext();) {
-            Object mkey = itr.next();
+        for (Object mkey : rem) {
             updateSetNull(sm, rm, mkey);
         }
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java
index d1ba820..aa46a76 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java
@@ -235,8 +235,8 @@
     public static boolean isRelationId(Column[] cols) {
         if (cols == null || cols.length == 0)
             return false;
-        for (int i = 0; i < cols.length; i++) {
-            if (!cols[i].isRelationId())
+        for (Column col : cols) {
+            if (!col.isRelationId())
                 return false;
         }
         return true;
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyInverseKeyFieldStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyInverseKeyFieldStrategy.java
index 0b988f0..f95a0bb 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyInverseKeyFieldStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyInverseKeyFieldStrategy.java
@@ -178,8 +178,9 @@
         ForeignKey fk = vinfo.getInverseTypeJoin(elem, field.getName(), adapt);
         if (_uni1MFK) {
             Column[] locals = fk.getColumns();
-            for (int i = 0; i < locals.length; i++)
-                locals[i].setUni1MFK(true);
+            for (Column local : locals) {
+                local.setUni1MFK(true);
+            }
         }
         elem.setForeignKey(fk);
         elem.setColumnIO(vinfo.getColumnIO());
@@ -261,8 +262,9 @@
         StoreContext ctx = store.getContext();
         if (field.getMappedBy() == null) {
             Collection rem = ct.getRemoved();
-            for (Iterator itr = rem.iterator(); itr.hasNext();)
-                updateInverse(ctx, itr.next(), rel, rm, null, 0);
+            for (Object o : rem) {
+                updateInverse(ctx, o, rel, rm, null, 0);
+            }
         }
 
         Collection add = ct.getAdded();
@@ -308,8 +310,9 @@
         StoreContext ctx = store.getContext();
         Collection objs = toCollection(sm.fetchObject(field.getIndex()));
         if (objs != null && !objs.isEmpty())
-            for (Iterator itr = objs.iterator(); itr.hasNext();)
-                updateInverse (ctx, itr.next(), rel, rm, sm, 0);
+            for (Object obj : objs) {
+                updateInverse(ctx, obj, rel, rm, sm, 0);
+            }
     }
 
     /**
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyTableFieldStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyTableFieldStrategy.java
index efa4f8f..61c29dd 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyTableFieldStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyTableFieldStrategy.java
@@ -233,8 +233,8 @@
                 Row.ACTION_DELETE);
             delRow.whereForeignKey(field.getJoinForeignKey(), sm);
 
-            for (Iterator itr = rem.iterator(); itr.hasNext();) {
-                esm = RelationStrategies.getStateManager(itr.next(), ctx);
+            for (Object o : rem) {
+                esm = RelationStrategies.getStateManager(o, ctx);
                 elem.whereForeignKey(delRow, esm);
                 rm.flushSecondaryRow(delRow);
             }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StateComparisonVersionStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StateComparisonVersionStrategy.java
index db58fd7..f8032be 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StateComparisonVersionStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StateComparisonVersionStrategy.java
@@ -256,17 +256,17 @@
             StringBuilder buf = new StringBuilder();
             boolean hasWhere = false;
             Object val;
-            for (int i = 0; i < cols.length; i++) {
-                val = getWhere(cols[i]);
+            for (Column col : cols) {
+                val = getWhere(col);
                 if (val == null)
                     continue;
 
                 if (hasWhere)
                     buf.append(" AND ");
                 if (val == NULL)
-                    buf.append(dict.getColumnDBName(cols[i]) + " IS NULL");
+                    buf.append(dict.getColumnDBName(col) + " IS NULL");
                 else
-                    buf.append(dict.getColumnDBName(cols[i]) + " = ?");
+                    buf.append(dict.getColumnDBName(col) + " = ?");
                 hasWhere = true;
             }
             return buf.toString();
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/SubclassJoinDiscriminatorStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/SubclassJoinDiscriminatorStrategy.java
index 4361172..05754fe 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/SubclassJoinDiscriminatorStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/SubclassJoinDiscriminatorStrategy.java
@@ -95,14 +95,14 @@
         // the subclass array is already ordered in levels of inheritance, so
         // each subclass only has to join from its direct superclass
         Column[] pks;
-        for (int i = 0; i < subs.length; i++) {
-            if (subs[i].getJoinablePCSuperclassMapping() == null)
+        for (ClassMapping sub : subs) {
+            if (sub.getJoinablePCSuperclassMapping() == null)
                 continue;
 
-            pks = subs[i].getPrimaryKeyColumns();
+            pks = sub.getPrimaryKeyColumns();
             if (pks.length > 0) {
-                sel.select(pks[0], subs[i].joinSuperclass
-                    (sel.newJoins(), true));
+                sel.select(pks[0], sub.joinSuperclass
+                        (sel.newJoins(), true));
                 seld = true;
             }
         }
@@ -122,20 +122,20 @@
         ClassMapping[] subs = base.getJoinablePCSubclassMappings();
         Class derived = base.getDescribedType();
         Column[] pks;
-        for (int i = 0; i < subs.length; i++) {
-            pks = subs[i].getPrimaryKeyColumns();
+        for (ClassMapping sub : subs) {
+            pks = sub.getPrimaryKeyColumns();
             if (pks.length == 0)
                 continue;
 
             // possible that a sibling class cols were already discovered, in
             // which case we can skip this sub
-            if (!derived.isAssignableFrom(subs[i].getDescribedType()))
+            if (!derived.isAssignableFrom(sub.getDescribedType()))
                 continue;
 
             // see if all pk cols are non-null
             if (res.contains(pks[0])
-                && res.getObject(pks[0], -1, null) != null)
-                derived = subs[i].getDescribedType();
+                    && res.getObject(pks[0], -1, null) != null)
+                derived = sub.getDescribedType();
         }
         return derived;
     }
@@ -158,8 +158,8 @@
         ClassMapping[] subs = base.getJoinablePCSubclassMappings();
         SQLBuffer buf = null;
         Column[] pks;
-        for (int i = 0; i < subs.length; i++) {
-            pks = subs[i].getPrimaryKeyColumns();
+        for (ClassMapping sub : subs) {
+            pks = sub.getPrimaryKeyColumns();
             if (pks.length == 0)
                 continue;
 
@@ -167,9 +167,10 @@
                 // make sure the base class is aliased first so that we don't
                 // end up with our outer joins before the inner ones
                 buf = new SQLBuffer(sel.getConfiguration().
-                    getDBDictionaryInstance());
+                        getDBDictionaryInstance());
                 sel.getColumnAlias(base.getPrimaryKeyColumns()[0], joins);
-            } else
+            }
+            else
                 buf.append(" AND ");
             buf.append(sel.getColumnAlias(pks[0], joins)).append(" IS NULL");
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/TimestampVersionStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/TimestampVersionStrategy.java
index c5e5dd9..836499a 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/TimestampVersionStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/TimestampVersionStrategy.java
@@ -57,8 +57,9 @@
         Column[] cols = vers.getColumns();
         Map map = new HashMap(cols.length);
         Object d = nextVersion(null);
-        for (int i = 0; i < cols.length; i++)
-            map.put(cols[i], d);
+        for (Column col : cols) {
+            map.put(col, d);
+        }
         return map;
     }
 }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ValueMapDiscriminatorStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ValueMapDiscriminatorStrategy.java
index ef1e10a..27f12e1 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ValueMapDiscriminatorStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ValueMapDiscriminatorStrategy.java
@@ -144,8 +144,9 @@
         ClassMapping[] subs = cls.getJoinablePCSubclassMappings();
         Map<String, Class<?>> map = new HashMap<>((int) ((subs.length + 1) * 1.33 + 1));
         mapDiscriminatorValue(cls, map);
-        for (int i = 0; i < subs.length; i++)
-            mapDiscriminatorValue(subs[i], map);
+        for (ClassMapping sub : subs) {
+            mapDiscriminatorValue(sub, map);
+        }
         return map;
     }
 
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/VerticalClassStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/VerticalClassStrategy.java
index 6713f1c..c4e4030 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/VerticalClassStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/VerticalClassStrategy.java
@@ -97,19 +97,20 @@
         // map joinables
         Joinable join;
         Column[] cols;
-        for (int i = 0; i < pkCols.length; i++) {
+        for (Column pkCol : pkCols) {
             // may have already registered a multi-column joinable
-            if (cls.getJoinable(pkCols[i]) != null)
+            if (cls.getJoinable(pkCol) != null)
                 continue;
 
             // create joinable that delegates all methods to the superclass'
             // joinable, but changes the columns as appropriate using
             // our superclass join fk
-            join = sup.assertJoinable(fk.getPrimaryKeyColumn(pkCols[i]));
+            join = sup.assertJoinable(fk.getPrimaryKeyColumn(pkCol));
             join = new DelegatingJoinable(join, fk);
             cols = join.getColumns();
-            for (int j = 0; j < cols.length; j++)
-                cls.setJoinable(cols[j], join);
+            for (Column col : cols) {
+                cls.setJoinable(col, join);
+            }
         }
     }
 
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Column.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Column.java
index 8bca53f..b63c82e 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Column.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Column.java
@@ -127,44 +127,44 @@
             ForeignKey[] fks;
             Column[] cols;
             Column[] pks;
-            for (int i = 0; i < schemas.length; i++) {
-                tabs = schemas[i].getTables();
-                for (int j = 0; j < tabs.length; j++) {
-                    fks = tabs[j].getForeignKeys();
-                    for (int k = 0; k < fks.length; k++) {
-                        cols = fks[k].getColumns();
-                        pks = fks[k].getPrimaryKeyColumns();
+            for (Schema value : schemas) {
+                tabs = value.getTables();
+                for (Table tab : tabs) {
+                    fks = tab.getForeignKeys();
+                    for (ForeignKey fk : fks) {
+                        cols = fk.getColumns();
+                        pks = fk.getPrimaryKeyColumns();
                         for (int l = 0; l < cols.length; l++)
                             if (this.equals(cols[l]) || this.equals(pks[l]))
-                                fks[k].removeJoin(cols[l]);
+                                fk.removeJoin(cols[l]);
 
-                        cols = fks[k].getConstantColumns();
-                        for (int l = 0; l < cols.length; l++)
-                            if (this.equals(cols[l]))
-                                fks[k].removeJoin(cols[l]);
+                        cols = fk.getConstantColumns();
+                        for (Column col : cols)
+                            if (this.equals(col))
+                                fk.removeJoin(col);
 
-                        pks = fks[k].getConstantPrimaryKeyColumns();
-                        for (int l = 0; l < pks.length; l++)
-                            if (this.equals(pks[l]))
-                                fks[k].removeJoin(pks[l]);
+                        pks = fk.getConstantPrimaryKeyColumns();
+                        for (Column pk : pks)
+                            if (this.equals(pk))
+                                fk.removeJoin(pk);
 
-                        if (fks[k].getColumns().length == 0
-                            && fks[k].getConstantColumns().length == 0)
-                            tabs[j].removeForeignKey(fks[k]);
+                        if (fk.getColumns().length == 0
+                                && fk.getConstantColumns().length == 0)
+                            tab.removeForeignKey(fk);
                     }
                 }
             }
         }
 
         Index[] idxs = table.getIndexes();
-        for (int i = 0; i < idxs.length; i++)
-            if (idxs[i].removeColumn(this) && idxs[i].getColumns().length == 0)
-                table.removeIndex(idxs[i]);
+        for (Index idx : idxs)
+            if (idx.removeColumn(this) && idx.getColumns().length == 0)
+                table.removeIndex(idx);
 
         Unique[] unqs = table.getUniques();
-        for (int i = 0; i < unqs.length; i++)
-            if (unqs[i].removeColumn(this) && unqs[i].getColumns().length == 0)
-                table.removeUnique(unqs[i]);
+        for (Unique unq : unqs)
+            if (unq.removeColumn(this) && unq.getColumns().length == 0)
+                table.removeUnique(unq);
 
         PrimaryKey pk = table.getPrimaryKey();
         if (pk != null && pk.removeColumn(this) && pk.getColumns().length == 0)
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ColumnIO.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ColumnIO.java
index dcd30da..78cd519 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ColumnIO.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ColumnIO.java
@@ -306,8 +306,8 @@
      */
     private boolean isNullable(ForeignKey fk) {
         Column[] cols = fk.getColumns();
-        for (int i = 0; i < cols.length; i++)
-            if (cols[i].isNotNull() || cols[i].isPrimaryKey())
+        for (Column col : cols)
+            if (col.isNotNull() || col.isPrimaryKey())
                 return false;
         return true;
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DBCPDriverDataSource.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DBCPDriverDataSource.java
index e24d3d2..35c6314 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DBCPDriverDataSource.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DBCPDriverDataSource.java
@@ -20,7 +20,6 @@
 
 import java.sql.Connection;
 import java.sql.SQLException;
-import java.util.Iterator;
 import java.util.Locale;
 import java.util.Properties;
 
@@ -219,8 +218,8 @@
 
         // now, merge in any passed in properties
         if (props != null && !props.isEmpty()) {
-            for (Iterator<Object> itr = props.keySet().iterator(); itr.hasNext();) {
-                String key = (String)itr.next();
+            for (Object o : props.keySet()) {
+                String key = (String) o;
                 String value = props.getProperty(key);
                 // need to map "user" to "username" for Commons DBCP
                 if ("user".equalsIgnoreCase(key)) {
@@ -231,7 +230,8 @@
                 if (existingKey != null) {
                     // update existing entry
                     mergedProps.setProperty(existingKey, value);
-                } else {
+                }
+                else {
                     // add property to the merged set
                     mergedProps.setProperty(key, value);
                 }
@@ -260,8 +260,8 @@
     private String hasKey(Properties props, String key, String defaultKey)
     {
         if (props != null && key != null) {
-            for (Iterator<Object> itr = props.keySet().iterator(); itr.hasNext();) {
-                String entry = (String)itr.next();
+            for (Object o : props.keySet()) {
+                String entry = (String) o;
                 if (key.equalsIgnoreCase(entry))
                     return entry;
             }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DataSourceFactory.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DataSourceFactory.java
index bb81e2b..d788add 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DataSourceFactory.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DataSourceFactory.java
@@ -24,7 +24,6 @@
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Iterator;
 import java.util.List;
 
 import javax.sql.DataSource;
@@ -148,8 +147,9 @@
                 new JDBCEventConnectionDecorator();
             Configurations.configureInstance(ecd, conf, opts);
             JDBCListener[] listeners = conf.getJDBCListenerInstances();
-            for (int i = 0; i < listeners.length; i++)
-                ecd.addListener(listeners[i]);
+            for (JDBCListener listener : listeners) {
+                ecd.addListener(listener);
+            }
             decorators.add(ecd);
 
             // ask the DriverDataSource to provide any additional decorators
@@ -193,8 +193,8 @@
         try {
             // add the dictionary as a warning handler on the logging decorator
             ConnectionDecorator cd;
-            for (Iterator<ConnectionDecorator> itr = ds.getDecorators().iterator(); itr.hasNext();) {
-                cd = itr.next();
+            for (ConnectionDecorator connectionDecorator : ds.getDecorators()) {
+                cd = connectionDecorator;
                 if (cd instanceof LoggingConnectionDecorator)
                     ((LoggingConnectionDecorator) cd).setWarningHandler(dict);
             }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java
index ff856e9..70668e1 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java
@@ -207,8 +207,8 @@
             return false;
         }
 
-        for (int i = 0; i < cols.length; i++) {
-            if (cols[i].isAutoAssigned()) {
+        for (Column column : cols) {
+            if (column.isAutoAssigned()) {
                 _autoAssign = Boolean.TRUE;
                 return true;
             }
@@ -216,12 +216,12 @@
 
         ForeignKey[] fks = _pkTable.getForeignKeys();
         seen.add(this);
-        for (int i = 0; i < cols.length; i++) {
-            for (int j = 0; j < fks.length; j++) {
-                if (!fks[j].containsColumn(cols[i]))
+        for (Column col : cols) {
+            for (ForeignKey fk : fks) {
+                if (!fk.containsColumn(col))
                     continue;
-                if (!seen.contains(fks[j])
-                    && fks[j].isPrimaryKeyAutoAssigned(seen)) {
+                if (!seen.contains(fk)
+                        && fk.isPrimaryKeyAutoAssigned(seen)) {
                     _autoAssign = Boolean.TRUE;
                     return true;
                 }
@@ -527,8 +527,9 @@
      */
     public void setJoins(Column[] cols, Column[] pkCols) {
         Column[] cur = getColumns();
-        for (int i = 0; i < cur.length; i++)
-            removeJoin(cur[i]);
+        for (Column column : cur) {
+            removeJoin(column);
+        }
 
         if (cols != null)
             for (int i = 0; i < cols.length; i++)
@@ -540,8 +541,9 @@
      */
     public void setConstantJoins(Object[] consts, Column[] pkCols) {
         Column[] cur = getConstantPrimaryKeyColumns();
-        for (int i = 0; i < cur.length; i++)
-            removeJoin(cur[i]);
+        for (Column column : cur) {
+            removeJoin(column);
+        }
 
         if (consts != null)
             for (int i = 0; i < consts.length; i++)
@@ -553,8 +555,9 @@
      */
     public void setConstantJoins(Column[] cols, Object[] consts) {
         Column[] cur = getConstantColumns();
-        for (int i = 0; i < cur.length; i++)
-            removeJoin(cur[i]);
+        for (Column column : cur) {
+            removeJoin(column);
+        }
 
         if (consts != null)
             for (int i = 0; i < consts.length; i++)
@@ -691,11 +694,13 @@
      */
     public void refColumns() {
         Column[] cols = getColumns();
-        for (int i = 0; i < cols.length; i++)
-            cols[i].ref();
+        for (Column column : cols) {
+            column.ref();
+        }
         cols = getConstantColumns();
-        for (int i = 0; i < cols.length; i++)
-            cols[i].ref();
+        for (Column col : cols) {
+            col.ref();
+        }
     }
 
     /**
@@ -703,11 +708,13 @@
      */
     public void derefColumns() {
         Column[] cols = getColumns();
-        for (int i = 0; i < cols.length; i++)
-            cols[i].deref();
+        for (Column column : cols) {
+            column.deref();
+        }
         cols = getConstantColumns();
-        for (int i = 0; i < cols.length; i++)
-            cols[i].deref();
+        for (Column col : cols) {
+            col.deref();
+        }
     }
 
     /**
@@ -755,26 +762,26 @@
      */
     public boolean hasNotNullColumns() {
       Column[] columns = getColumns();
-      for (int j = 0; j < columns.length; j++) {
-          if (columns[j].isNotNull()) {
-              return true;
-          }
-      }
+        for (Column column : columns) {
+            if (column.isNotNull()) {
+                return true;
+            }
+        }
       return false;
     }
 
     private static boolean match(Column[] cols, Column[] fkCols) {
         if (cols.length != fkCols.length)
             return false;
-        for (int i = 0; i < fkCols.length; i++)
-            if (!hasColumn(cols, fkCols[i]))
+        for (Column fkCol : fkCols)
+            if (!hasColumn(cols, fkCol))
                 return false;
         return true;
     }
 
     private static boolean hasColumn(Column[] cols, Column col) {
-        for (int i = 0; i < cols.length; i++)
-            if (cols[i].getQualifiedPath().equals(col.getQualifiedPath()))
+        for (Column column : cols)
+            if (column.getQualifiedPath().equals(col.getQualifiedPath()))
                 return true;
         return false;
     }
@@ -806,55 +813,55 @@
             ForeignKey[] fks = dbdict.getImportedKeys(conn.getMetaData(),
                 DBIdentifier.newCatalog(conn.getCatalog()), schema.getIdentifier(),
                 getTable().getIdentifier(), conn, false);
-            for ( int i=0; i< fks.length; i++) {
-                Table localtable = schema.getTable(fks[i].getTableIdentifier());
+            for (ForeignKey fk : fks) {
+                Table localtable = schema.getTable(fk.getTableIdentifier());
                 Table pkTable = schema.getTable(
-                    fks[i].getPrimaryKeyTableIdentifier());
+                        fk.getPrimaryKeyTableIdentifier());
                 boolean addFK = false;
                 ForeignKey fkTemp = localtable.getForeignKey(
-                    fks[i].getIdentifier());
-                if( fkTemp == null) {
-                    addFK=true;
+                        fk.getIdentifier());
+                if (fkTemp == null) {
+                    addFK = true;
                     fkTemp = localtable.addForeignKey(
-                        fks[i].getIdentifier());
-                    fkTemp.setDeferred(fks[i].isDeferred());
-                    fkTemp.setDeleteAction(fks[i].getDeleteAction());
+                            fk.getIdentifier());
+                    fkTemp.setDeferred(fk.isDeferred());
+                    fkTemp.setDeleteAction(fk.getDeleteAction());
                 }
-                if (fks[i].getColumns() == null || fks[i].getColumns().length == 0) {
+                if (fk.getColumns() == null || fk.getColumns().length == 0) {
                     // Singular column foreign key
-                    if( ! fkTemp.containsColumn(
-                        localtable.getColumn(fks[i].getColumnIdentifier())))
-                    fkTemp.join(localtable.getColumn(fks[i].getColumnIdentifier()),
-                        pkTable.getColumn(fks[i].getPrimaryKeyColumnIdentifier()));
-                } else {
+                    if (!fkTemp.containsColumn(
+                            localtable.getColumn(fk.getColumnIdentifier())))
+                        fkTemp.join(localtable.getColumn(fk.getColumnIdentifier()),
+                                pkTable.getColumn(fk.getPrimaryKeyColumnIdentifier()));
+                }
+                else {
                     // Add the multi-column foreign key, joining local and pk columns in
                     // the temporary key
-                    Column[] locCols = fks[i].getColumns();
-                    Column[] pkCols = fks[i].getPrimaryKeyColumns();
+                    Column[] locCols = fk.getColumns();
+                    Column[] pkCols = fk.getPrimaryKeyColumns();
                     // Column counts must match
                     if (locCols != null && pkCols != null &&
-                        locCols.length != pkCols.length) {
+                            locCols.length != pkCols.length) {
                         Log log = dbdict.getLog();
                         if (log.isTraceEnabled()) {
                             log.trace(_loc.get("fk-column-mismatch"));
                         }
                     }
                     for (int j = 0; j < locCols.length; j++) {
-                        if( ! fkTemp.containsColumn(
-                            localtable.getColumn(locCols[j].getIdentifier()))) {
+                        if (!fkTemp.containsColumn(
+                                localtable.getColumn(locCols[j].getIdentifier()))) {
                             fkTemp.join(localtable.getColumn(locCols[j].getIdentifier()),
-                                pkTable.getColumn(pkCols[j].getIdentifier()));
+                                    pkTable.getColumn(pkCols[j].getIdentifier()));
                         }
                     }
                 }
-                if( equalsForeignKey(fkTemp))
-                {
-                    if(addFK)
+                if (equalsForeignKey(fkTemp)) {
+                    if (addFK)
                         localtable.removeForeignKey(fkTemp);
-                    retVal = fks[i].getIdentifier();
+                    retVal = fk.getIdentifier();
                     break;
                 }
-                if(addFK)
+                if (addFK)
                     localtable.removeForeignKey(fkTemp);
             }
         } catch(Exception ex){
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java
index 32635d5..d14242f 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java
@@ -90,12 +90,14 @@
      */
     public void setColumns(Column[] cols) {
         Column[] cur = getColumns();
-        for (int i = 0; i < cur.length; i++)
-            removeColumn(cur[i]);
+        for (Column column : cur) {
+            removeColumn(column);
+        }
 
         if (cols != null)
-            for (int i = 0; i < cols.length; i++)
-                addColumn(cols[i]);
+            for (Column col : cols) {
+                addColumn(col);
+            }
     }
 
     /**
@@ -148,8 +150,9 @@
      */
     public void refColumns() {
         Column[] cols = getColumns();
-        for (int i = 0; i < cols.length; i++)
-            cols[i].ref();
+        for (Column col : cols) {
+            col.ref();
+        }
     }
 
     /**
@@ -157,8 +160,9 @@
      */
     public void derefColumns() {
         Column[] cols = getColumns();
-        for (int i = 0; i < cols.length; i++)
-            cols[i].deref();
+        for (Column col : cols) {
+            col.deref();
+        }
     }
 
     /**
@@ -168,8 +172,8 @@
         Column[] cols = getColumns();
         if (cols.length != ocols.length)
             return false;
-        for (int i = 0; i < ocols.length; i++)
-            if (!hasColumn(cols, ocols[i]))
+        for (Column ocol : ocols)
+            if (!hasColumn(cols, ocol))
                 return false;
         return true;
     }
@@ -178,8 +182,8 @@
      * Return whether the given column exists in the array.
      */
     private static boolean hasColumn(Column[] cols, Column col) {
-        for (int i = 0; i < cols.length; i++)
-            if (cols[i].getQualifiedPath().equals(col.getQualifiedPath()))
+        for (Column column : cols)
+            if (column.getQualifiedPath().equals(col.getQualifiedPath()))
                 return true;
         return false;
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/PrimaryKey.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/PrimaryKey.java
index 1a0ebf1..162fd89 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/PrimaryKey.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/PrimaryKey.java
@@ -71,8 +71,9 @@
             && table.getSchema().getSchemaGroup() != null) {
             ForeignKey[] fks = table.getSchema().getSchemaGroup().
                 findExportedForeignKeys(this);
-            for (int i = 0; i < fks.length; i++)
-                fks[i].getTable().removeForeignKey(fks[i]);
+            for (ForeignKey fk : fks) {
+                fk.getTable().removeForeignKey(fk);
+            }
         }
         super.remove();
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Schema.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Schema.java
index f7ba3ba..8b30fc7 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Schema.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Schema.java
@@ -72,11 +72,13 @@
      */
     void remove() {
         Table[] tabs = getTables();
-        for (int i = 0; i < tabs.length; i++)
-            removeTable(tabs[i]);
+        for (Table tab : tabs) {
+            removeTable(tab);
+        }
         Sequence[] seqs = getSequences();
-        for (int i = 0; i < seqs.length; i++)
-            removeSequence(seqs[i]);
+        for (Sequence seq : seqs) {
+            removeSequence(seq);
+        }
         _group = null;
     }
 
@@ -229,8 +231,9 @@
 
         Table copy = addTable(table.getIdentifier());
         Column[] cols = table.getColumns();
-        for (int i = 0; i < cols.length; i++)
-            copy.importColumn(cols[i]);
+        for (Column col : cols) {
+            copy.importColumn(col);
+        }
 
         copy.importPrimaryKey(table.getPrimaryKey());
         return copy;
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGenerator.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGenerator.java
index 5cb75d7..a799ae7 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGenerator.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGenerator.java
@@ -27,7 +27,6 @@
 import java.util.EventObject;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
@@ -122,8 +121,8 @@
         Map<DBIdentifier, Collection<DBIdentifier>> schemas = new HashMap<>();
         DBIdentifier schema = DBIdentifier.NULL, table = DBIdentifier.NULL;
         Collection<DBIdentifier> tables = null;
-        for (int i = 0; i < args.length; i++) {
-            QualifiedDBIdentifier path = QualifiedDBIdentifier.getPath(args[i]);
+        for (DBIdentifier arg : args) {
+            QualifiedDBIdentifier path = QualifiedDBIdentifier.getPath(arg);
             schema = path.getSchemaName();
             table = path.getIdentifier();
 
@@ -139,9 +138,8 @@
         Object[][] parsed = new Object[schemas.size()][2];
         Map.Entry<DBIdentifier, Collection<DBIdentifier>> entry;
         int idx = 0;
-        for (Iterator<Map.Entry<DBIdentifier, Collection<DBIdentifier>>> itr = schemas.entrySet().iterator();
-            itr.hasNext();) {
-            entry = itr.next();
+        for (Map.Entry<DBIdentifier, Collection<DBIdentifier>> dbIdentifierCollectionEntry : schemas.entrySet()) {
+            entry = dbIdentifierCollectionEntry;
             tables = entry.getValue();
 
             parsed[idx][0] = entry.getKey();
@@ -295,22 +293,22 @@
                 return;
             }
 
-            for (int i = 0; i < schemaMap.length; i++) {
-                generateSchema((DBIdentifier) schemaMap[i][0], (DBIdentifier[]) schemaMap[i][1]);
+            for (Object[] value : schemaMap) {
+                generateSchema((DBIdentifier) value[0], (DBIdentifier[]) value[1]);
             }
 
             // generate pks, indexes, fks
             DBIdentifier schemaName = DBIdentifier.NULL;
             DBIdentifier[] tableNames;
-            for (int i = 0; i < schemaMap.length; i++) {
-                schemaName = (DBIdentifier) schemaMap[i][0];
-                tableNames = (DBIdentifier[]) schemaMap[i][1];
+            for (Object[] objects : schemaMap) {
+                schemaName = (DBIdentifier) objects[0];
+                tableNames = (DBIdentifier[]) objects[1];
 
                 // estimate the number of schema objects we will need to visit
                 // in order to estimate progress total for any listeners
                 int numTables = (tableNames != null) ? tableNames.length : getTables(schemaName).size();
                 _schemaObjects +=
-                    numTables + (_pks ? numTables : 0) + (_indexes ? numTables : 0) + (_fks ? numTables : 0);
+                        numTables + (_pks ? numTables : 0) + (_indexes ? numTables : 0) + (_fks ? numTables : 0);
 
                 if (_pks) {
                     generatePrimaryKeys(schemaName, tableNames);
@@ -360,8 +358,9 @@
             if (tableNames == null)
                 generateTables(name, DBIdentifier.NULL, _conn, meta);
             else
-                for (int i = 0; i < tableNames.length; i++)
-                    generateTables(name, tableNames[i], _conn, meta);
+                for (DBIdentifier tableName : tableNames) {
+                    generateTables(name, tableName, _conn, meta);
+                }
 
             if (_seqs) {
                 generateSequences(name, DBIdentifier.NULL, _conn, meta);
@@ -407,8 +406,9 @@
             if (tableNames == null)
                 generatePrimaryKeys(schemaName, null, _conn, meta);
             else
-                for (int i = 0; i < tableNames.length; i++)
-                    generatePrimaryKeys(schemaName, tableNames[i], _conn, meta);
+                for (DBIdentifier tableName : tableNames) {
+                    generatePrimaryKeys(schemaName, tableName, _conn, meta);
+                }
         } finally {
             // some databases require a commit after metadata to release locks
             try {
@@ -449,8 +449,9 @@
             if (tableNames == null)
                 generateIndexes(schemaName, null, _conn, meta);
             else
-                for (int i = 0; i < tableNames.length; i++)
-                    generateIndexes(schemaName, tableNames[i], _conn, meta);
+                for (DBIdentifier tableName : tableNames) {
+                    generateIndexes(schemaName, tableName, _conn, meta);
+                }
         } finally {
             // some databases require a commit after metadata to release locks
             try {
@@ -492,8 +493,9 @@
             if (tableNames == null)
                 generateForeignKeys(schemaName, null, _conn, meta);
             else
-                for (int i = 0; i < tableNames.length; i++)
-                    generateForeignKeys(schemaName, tableNames[i], _conn, meta);
+                for (DBIdentifier tableName : tableNames) {
+                    generateForeignKeys(schemaName, tableName, _conn, meta);
+                }
         } finally {
             // some databases require a commit after metadata to release locks
             try {
@@ -551,8 +553,9 @@
 
         // if database can't handle null table name, recurse on each known name
         if (cols == null && DBIdentifier.isNull(tableName)) {
-            for (Iterator<DBIdentifier> itr = tableNames.iterator(); itr.hasNext();)
-                generateTables(schemaName, itr.next(), conn, meta);
+            for (DBIdentifier name : tableNames) {
+                generateTables(schemaName, name, conn, meta);
+            }
             return;
         }
 
@@ -620,31 +623,31 @@
         // do case-insensitive comparison on allowed table and schema names
         DBIdentifier[] tables;
         DBIdentifier[] anySchemaTables = null;
-        for (int i = 0; i < _allowed.length; i++) {
-            if (_allowed[i][0] == null) {
-                anySchemaTables = (DBIdentifier[]) _allowed[i][1];
+        for (Object[] objects : _allowed) {
+            if (objects[0] == null) {
+                anySchemaTables = (DBIdentifier[]) objects[1];
                 if (schema == null)
                     break;
                 continue;
             }
-            if (!schema.equals(_allowed[i][0]))
+            if (!schema.equals(objects[0]))
                 continue;
 
             if (table == null)
                 return true;
-            tables = (DBIdentifier[]) _allowed[i][1];
+            tables = (DBIdentifier[]) objects[1];
             if (tables == null)
                 return true;
-            for (int j = 0; j < tables.length; j++)
-                if (table.equals(tables[j]))
+            for (DBIdentifier dbIdentifier : tables)
+                if (table.equals(dbIdentifier))
                     return true;
         }
 
         if (anySchemaTables != null) {
             if (table == null)
                 return true;
-            for (int i = 0; i < anySchemaTables.length; i++)
-                if (table.equals(anySchemaTables[i]))
+            for (DBIdentifier anySchemaTable : anySchemaTables)
+                if (table.equals(anySchemaTable))
                     return true;
         }
         return false;
@@ -684,10 +687,10 @@
         Table table;
         if (pks == null && tableName == null) {
             Collection<Table> tables = getTables(schemaName);
-            for (Iterator<Table> itr = tables.iterator(); itr.hasNext();) {
-                table = itr.next();
+            for (Table value : tables) {
+                table = value;
                 generatePrimaryKeys(table.getSchemaIdentifier(),
-                    table.getIdentifier(), conn, meta);
+                        table.getIdentifier(), conn, meta);
             }
             return;
         }
@@ -749,10 +752,10 @@
         Table table;
         if (idxs == null && tableName == null) {
             Collection<Table> tables = getTables(schemaName);
-            for (Iterator<Table> itr = tables.iterator(); itr.hasNext();) {
-                table = itr.next();
+            for (Table value : tables) {
+                table = value;
                 generateIndexes(table.getSchemaIdentifier(),
-                    table.getIdentifier(), conn, meta);
+                        table.getIdentifier(), conn, meta);
             }
             return;
         }
@@ -830,10 +833,10 @@
         Table table;
         if (fks == null && DBIdentifier.isNull(tableName)) {
             Collection<Table> tables = getTables(schemaName);
-            for (Iterator<Table> itr = tables.iterator(); itr.hasNext();) {
-                table = itr.next();
+            for (Table value : tables) {
+                table = value;
                 generateForeignKeys(table.getSchemaIdentifier(),
-                    table.getIdentifier(), conn, meta);
+                        table.getIdentifier(), conn, meta);
             }
             return;
         }
@@ -920,8 +923,8 @@
 
         // remove invalid fks
         if (invalids != null) {
-            for (Iterator<ForeignKey> itr = invalids.iterator(); itr.hasNext();) {
-                fk = itr.next();
+            for (ForeignKey invalid : invalids) {
+                fk = invalid;
                 fk.getTable().removeForeignKey(fk);
             }
         }
@@ -992,11 +995,10 @@
             return;
 
         Event e = new Event(schemaObject, _schemaObjects);
-        for (Iterator<Listener> i = _listeners.iterator(); i.hasNext();) {
-            Listener l = i.next();
+        for (Listener l : _listeners) {
             if (!l.schemaObjectGenerated(e))
                 throw new SQLException(_loc.get("refresh-cancelled")
-                    .getMessage());
+                        .getMessage());
         }
     }
 
@@ -1036,8 +1038,9 @@
 
         Schema[] schemas = group.getSchemas();
         Collection<Table> tables = new LinkedList<>();
-        for (int i = 0; i < schemas.length; i++)
-            tables.addAll(Arrays.asList(schemas[i].getTables()));
+        for (Schema schema : schemas) {
+            tables.addAll(Arrays.asList(schema.getTables()));
+        }
         return tables;
     }
 
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java
index e3c6415..6484d02 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java
@@ -131,21 +131,24 @@
 
         Schema copy = addSchema(schema.getIdentifier());
         Sequence[] seqs = schema.getSequences();
-        for (int i = 0; i < seqs.length; i++)
-            copy.importSequence(seqs[i]);
+        for (Sequence seq : seqs) {
+            copy.importSequence(seq);
+        }
 
         Table[] tables = schema.getTables();
         Index[] idxs;
         Unique[] unqs;
         Table tab;
-        for (int i = 0; i < tables.length; i++) {
-            tab = copy.importTable(tables[i]);
-            idxs = tables[i].getIndexes();
-            for (int j = 0; j < idxs.length; j++)
-                tab.importIndex(idxs[j]);
-            unqs = tables[i].getUniques();
-            for (int j = 0; j < unqs.length; j++)
-                tab.importUnique(unqs[j]);
+        for (Table table : tables) {
+            tab = copy.importTable(table);
+            idxs = table.getIndexes();
+            for (Index idx : idxs) {
+                tab.importIndex(idx);
+            }
+            unqs = table.getUniques();
+            for (Unique unq : unqs) {
+                tab.importUnique(unq);
+            }
         }
         return copy;
     }
@@ -209,8 +212,8 @@
         } else {
             Schema[] schemas = getSchemas();
             Table tab;
-            for (int i = 0; i < schemas.length; i++) {
-                tab = schemas[i].getTable(path.getIdentifier());
+            for (Schema schema : schemas) {
+                tab = schema.getTable(path.getIdentifier());
                 if (tab != null)
                     return tab;
             }
@@ -252,8 +255,8 @@
                 return schema.getTable(path.getIdentifier());
         } else {
             Schema[] schemas = getSchemas();
-            for (int i = 0; i < schemas.length; i++) {
-                Table tab = schemas[i].getTable(path.getIdentifier());
+            for (Schema schema : schemas) {
+                Table tab = schema.getTable(path.getIdentifier());
                 // if a table is found and it has the same schema
                 // as the input schema , it means that the table
                 // exists. However, if the input schema is null,
@@ -263,13 +266,13 @@
                 // and other entity does not have schema name but both entities
                 // map to the same table.
                 boolean isDefaultSchema = DBIdentifier.isNull(inSchema.getIdentifier()) &&
-                    !DBIdentifier.isNull(defaultSchemaName) &&
-                    DBIdentifier.equalsIgnoreCase(defaultSchemaName, schemas[i].getIdentifier());
+                        !DBIdentifier.isNull(defaultSchemaName) &&
+                        DBIdentifier.equalsIgnoreCase(defaultSchemaName, schema.getIdentifier());
                 boolean hasNoDefaultSchema = DBIdentifier.isNull(inSchema.getIdentifier()) &&
-                    DBIdentifier.isNull(defaultSchemaName);
+                        DBIdentifier.isNull(defaultSchemaName);
 
                 if (tab != null &&
-                    (schemas[i] == inSchema || isDefaultSchema || hasNoDefaultSchema))
+                        (schema == inSchema || isDefaultSchema || hasNoDefaultSchema))
                     return tab;
 
             }
@@ -344,8 +347,8 @@
         } else {
             Schema[] schemas = getSchemas();
             Sequence seq;
-            for (int i = 0; i < schemas.length; i++) {
-                seq = schemas[i].getSequence(path.getIdentifier());
+            for (Schema schema : schemas) {
+                seq = schema.getSequence(path.getIdentifier());
                 if (seq != null)
                     return seq;
             }
@@ -377,10 +380,10 @@
         } else {
             Schema[] schemas = getSchemas();
             Sequence seq;
-            for (int i = 0; i < schemas.length; i++) {
-                seq = schemas[i].getSequence(path.getIdentifier());
+            for (Schema schema : schemas) {
+                seq = schema.getSequence(path.getIdentifier());
                 if ((seq != null) &&
-                        (schemas[i] == inSchema || DBIdentifier.isNull(inSchema.getIdentifier())))
+                        (schema == inSchema || DBIdentifier.isNull(inSchema.getIdentifier())))
                     return seq;
             }
         }
@@ -399,15 +402,15 @@
         Table[] tabs;
         ForeignKey[] fks;
         Collection<ForeignKey> exports = new LinkedList<>();
-        for (int i = 0; i < schemas.length; i++) {
-            tabs = schemas[i].getTables();
-            for (int j = 0; j < tabs.length; j++) {
-                fks = tabs[j].getForeignKeys();
-                for (int k = 0; k < fks.length; k++) {
-                    if (fks[k].getPrimaryKeyTable() != null
-                        && pk.equals(fks[k].getPrimaryKeyTable().
-                        getPrimaryKey()))
-                        exports.add(fks[k]);
+        for (Schema schema : schemas) {
+            tabs = schema.getTables();
+            for (Table tab : tabs) {
+                fks = tab.getForeignKeys();
+                for (ForeignKey fk : fks) {
+                    if (fk.getPrimaryKeyTable() != null
+                            && pk.equals(fk.getPrimaryKeyTable().
+                            getPrimaryKey()))
+                        exports.add(fk);
                 }
             }
         }
@@ -424,35 +427,35 @@
         Sequence[] seqs;
         PrimaryKey pk;
         ForeignKey[] fks;
-        for (int i = 0; i < schemas.length; i++) {
-            seqs = schemas[i].getSequences();
-            for (int j = 0; j < seqs.length; j++)
-                if (seqs[j].getRefCount() == 0)
-                    schemas[i].removeSequence(seqs[j]);
+        for (Schema schema : schemas) {
+            seqs = schema.getSequences();
+            for (Sequence seq : seqs)
+                if (seq.getRefCount() == 0)
+                    schema.removeSequence(seq);
 
-            tabs = schemas[i].getTables();
-            for (int j = 0; j < tabs.length; j++) {
-                pk = tabs[j].getPrimaryKey();
-                fks = tabs[j].getForeignKeys();
-                cols = tabs[j].getColumns();
+            tabs = schema.getTables();
+            for (Table tab : tabs) {
+                pk = tab.getPrimaryKey();
+                fks = tab.getForeignKeys();
+                cols = tab.getColumns();
 
                 if (pk != null && pk.getRefCount() == 0)
-                    tabs[j].removePrimaryKey();
+                    tab.removePrimaryKey();
 
-                for (int k = 0; k < fks.length; k++)
-                    if (fks[k].getRefCount() == 0)
-                        tabs[j].removeForeignKey(fks[k]);
+                for (ForeignKey fk : fks)
+                    if (fk.getRefCount() == 0)
+                        tab.removeForeignKey(fk);
 
-                for (int k = 0; k < cols.length; k++)
-                    if (cols[k].getRefCount() == 0)
-                        tabs[j].removeColumn(cols[k]);
+                for (Column col : cols)
+                    if (col.getRefCount() == 0)
+                        tab.removeColumn(col);
 
-                if (tabs[j].getColumns().length == 0)
-                    schemas[i].removeTable(tabs[j]);
+                if (tab.getColumns().length == 0)
+                    schema.removeTable(tab);
             }
 
-            if (schemas[i].getTables().length == 0)
-                removeSchema(schemas[i]);
+            if (schema.getTables().length == 0)
+                removeSchema(schema);
         }
     }
 
@@ -475,19 +478,20 @@
      */
     protected void copy(SchemaGroup group) {
         Schema[] schemas = group.getSchemas();
-        for (int i = 0; i < schemas.length; i++)
-            importSchema(schemas[i]);
+        for (Schema value : schemas) {
+            importSchema(value);
+        }
 
         // have to do fks after all schemas are imported
         Table[] tabs;
         ForeignKey[] fks;
-        for (int i = 0; i < schemas.length; i++) {
-            tabs = schemas[i].getTables();
-            for (int j = 0; j < tabs.length; j++) {
-                fks = tabs[j].getForeignKeys();
-                for (int k = 0; k < fks.length; k++)
-                    getSchema(schemas[i].getIdentifier()).getTable
-                        (tabs[j].getIdentifier()).importForeignKey(fks[k]);
+        for (Schema schema : schemas) {
+            tabs = schema.getTables();
+            for (Table tab : tabs) {
+                fks = tab.getForeignKeys();
+                for (ForeignKey fk : fks)
+                    getSchema(schema.getIdentifier()).getTable
+                            (tab.getIdentifier()).importForeignKey(fk);
             }
         }
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java
index ac9dc0c..e138c74 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java
@@ -34,7 +34,6 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
@@ -478,10 +477,11 @@
         SchemaGroup group = getSchemaGroup();
         Schema[] schemas = group.getSchemas();
         Collection<Table> tables = new LinkedHashSet<>();
-        for (int i = 0; i < schemas.length; i++) {
-            Table[] ts = schemas[i].getTables();
-            for (int j = 0; j < ts.length; j++)
-                tables.add(ts[j]);
+        for (Schema schema : schemas) {
+            Table[] ts = schema.getTables();
+            for (Table t : ts) {
+                tables.add(t);
+            }
         }
         Table[] tableArray = tables.toArray(new Table[tables.size()]);
         Connection conn = _ds.getConnection();
@@ -571,22 +571,23 @@
         Schema schema;
         if (_seqs) {
             Sequence[] seqs;
-            for (int i = 0; i < schemas.length; i++) {
-                seqs = schemas[i].getSequences();
-                for (int j = 0; j < seqs.length; j++) {
-                    if (considerDatabaseState && db.findSequence(schemas[i], seqs[j].getQualifiedPath()) != null) {
+            for (Schema value : schemas) {
+                seqs = value.getSequences();
+                for (Sequence seq : seqs) {
+                    if (considerDatabaseState && db.findSequence(value, seq.getQualifiedPath()) != null) {
                         if (_writer == null) {
                             continue;
                         }
                     }
 
-                    if (createSequence(seqs[j])) {
-                        schema = db.getSchema(seqs[j].getSchemaIdentifier());
+                    if (createSequence(seq)) {
+                        schema = db.getSchema(seq.getSchemaIdentifier());
                         if (schema == null)
-                            schema = db.addSchema(seqs[j].getSchemaIdentifier());
-                        schema.importSequence(seqs[j]);
-                    } else
-                        _log.warn(_loc.get("add-seq", seqs[j]));
+                            schema = db.addSchema(seq.getSchemaIdentifier());
+                        schema.importSequence(seq);
+                    }
+                    else
+                        _log.warn(_loc.get("add-seq", seq));
                 }
             }
         }
@@ -597,27 +598,28 @@
         Column[] cols;
         Column col;
         DBIdentifier defaultSchemaName = DBIdentifier.newSchema(_dict.getDefaultSchemaName());
-        for (int i = 0; i < schemas.length; i++) {
-            tabs = schemas[i].getTables();
-            for (int j = 0; j < tabs.length; j++) {
-                cols = tabs[j].getColumns();
+        for (Schema schema2 : schemas) {
+            tabs = schema2.getTables();
+            for (Table tab : tabs) {
+                cols = tab.getColumns();
                 if (considerDatabaseState) {
-                    dbTable = db.findTable(schemas[i], tabs[j].getQualifiedPath(), defaultSchemaName);
+                    dbTable = db.findTable(schema2, tab.getQualifiedPath(), defaultSchemaName);
                 }
-                for (int k = 0; k < cols.length; k++) {
+                for (Column column : cols) {
                     if (dbTable != null) {
-                        DBIdentifier colName = cols[k].getIdentifier();
+                        DBIdentifier colName = column.getIdentifier();
                         col = dbTable.getColumn(colName);
                         if (col == null) {
-                            if (addColumn(cols[k]))
-                                dbTable.importColumn(cols[k]);
+                            if (addColumn(column))
+                                dbTable.importColumn(column);
                             else
-                                _log.warn(_loc.get("add-col", cols[k],
-                                        tabs[j]));
-                        } else if (!cols[k].equalsColumn(_dict, col)) {
+                                _log.warn(_loc.get("add-col", column,
+                                        tab));
+                        }
+                        else if (!column.equalsColumn(_dict, col)) {
                             _log.warn(_loc.get("bad-col", new Object[]{
                                     col, dbTable, col.getDescription(),
-                                    cols[k].getDescription() }));
+                                    column.getDescription()}));
                         }
                     }
                 }
@@ -627,19 +629,19 @@
         // primary keys
         if (_pks) {
             PrimaryKey pk;
-            for (int i = 0; i < schemas.length; i++) {
-                tabs = schemas[i].getTables();
-                for (int j = 0; j < tabs.length; j++) {
-                    pk = tabs[j].getPrimaryKey();
+            for (Schema value : schemas) {
+                tabs = value.getTables();
+                for (Table tab : tabs) {
+                    pk = tab.getPrimaryKey();
                     if (considerDatabaseState) {
-                        dbTable = db.findTable(schemas[i], tabs[j].getQualifiedPath());
+                        dbTable = db.findTable(value, tab.getQualifiedPath());
                     }
                     if (pk != null && !pk.isLogical() && dbTable != null) {
                         if (dbTable.getPrimaryKey() == null
                                 && addPrimaryKey(pk))
                             dbTable.importPrimaryKey(pk);
                         else if (dbTable.getPrimaryKey() == null)
-                            _log.warn(_loc.get("add-pk", pk, tabs[j]));
+                            _log.warn(_loc.get("add-pk", pk, tab));
                         else if (!pk.equalsPrimaryKey(dbTable.getPrimaryKey()))
                             _log.warn(_loc.get("bad-pk",
                                     dbTable.getPrimaryKey(), dbTable));
@@ -650,51 +652,53 @@
 
         // tables
         Set<Table> newTables = new HashSet<>();
-        for (int i = 0; i < schemas.length; i++) {
-            tabs = schemas[i].getTables();
-            for (int j = 0; j < tabs.length; j++) {
-                if (considerDatabaseState && db.findTable(schemas[i], tabs[j].getQualifiedPath()) != null) {
+        for (Schema schema1 : schemas) {
+            tabs = schema1.getTables();
+            for (Table tab : tabs) {
+                if (considerDatabaseState && db.findTable(schema1, tab.getQualifiedPath()) != null) {
                     if (_writer == null) {
                         continue;
                     }
                 }
 
-                if (createTable(tabs[j])) {
-                    newTables.add(tabs[j]);
-                    schema = db.getSchema(tabs[j].getSchemaIdentifier());
+                if (createTable(tab)) {
+                    newTables.add(tab);
+                    schema = db.getSchema(tab.getSchemaIdentifier());
                     if (schema == null)
-                        schema = db.addSchema(tabs[j].getSchemaIdentifier());
-                    schema.importTable(tabs[j]);
-                } else
-                    _log.warn(_loc.get("add-table", tabs[j]));
+                        schema = db.addSchema(tab.getSchemaIdentifier());
+                    schema.importTable(tab);
+                }
+                else
+                    _log.warn(_loc.get("add-table", tab));
             }
         }
 
         // indexes
         Index[] idxs;
         Index idx;
-        for (int i = 0; i < schemas.length; i++) {
-            tabs = schemas[i].getTables();
-            for (int j = 0; j < tabs.length; j++) {
+        for (Schema element : schemas) {
+            tabs = element.getTables();
+            for (Table tab : tabs) {
                 // create indexes on new tables even if indexes
                 // have been turned off
-                if (!_indexes && !newTables.contains(tabs[j]))
+                if (!_indexes && !newTables.contains(tab))
                     continue;
 
-                idxs = tabs[j].getIndexes();
+                idxs = tab.getIndexes();
                 if (considerDatabaseState) {
-                    dbTable = db.findTable(schemas[i], tabs[j].getQualifiedPath());
+                    dbTable = db.findTable(element, tab.getQualifiedPath());
                 }
-                for (int k = 0; k < idxs.length; k++) {
+                for (Index index : idxs) {
                     if (dbTable != null) {
-                        idx = findIndex(dbTable, idxs[k]);
+                        idx = findIndex(dbTable, index);
                         if (idx == null) {
-                            if (createIndex(idxs[k], dbTable, tabs[j].getUniques()))
-                                dbTable.importIndex(idxs[k]);
+                            if (createIndex(index, dbTable, tab.getUniques()))
+                                dbTable.importIndex(index);
                             else
-                                _log.warn(_loc.get("add-index", idxs[k],
-                                        tabs[j]));
-                        } else if (!idxs[k].equalsIndex(idx))
+                                _log.warn(_loc.get("add-index", index,
+                                        tab));
+                        }
+                        else if (!index.equalsIndex(idx))
                             _log.warn(_loc.get("bad-index", idx, dbTable));
                     }
                 }
@@ -703,26 +707,26 @@
 
         // Unique Constraints on group of columns
         Unique[] uniques;
-        for (int i = 0; i < schemas.length; i++) {
-            tabs = schemas[i].getTables();
-            for (int j = 0; j < tabs.length; j++) {
+        for (Schema item : schemas) {
+            tabs = item.getTables();
+            for (Table tab : tabs) {
                 // create unique constraints only on new tables
-                if (!newTables.contains(tabs[j])) {
+                if (!newTables.contains(tab)) {
                     if (_writer == null) {
                         continue;
                     }
                 }
 
-                uniques = tabs[j].getUniques();
+                uniques = tab.getUniques();
                 if (uniques == null || uniques.length == 0)
                     continue;
                 if (considerDatabaseState) {
-                    dbTable = db.findTable(tabs[j]);
+                    dbTable = db.findTable(tab);
                 }
                 if (dbTable == null)
                     continue;
-                for (int k = 0; k < uniques.length; k++) {
-                    dbTable.importUnique(uniques[k]);
+                for (Unique unique : uniques) {
+                    dbTable.importUnique(unique);
                 }
             }
         }
@@ -730,31 +734,32 @@
         // foreign keys
         ForeignKey[] fks;
         ForeignKey fk;
-        for (int i = 0; i < schemas.length; i++) {
-            tabs = schemas[i].getTables();
-            for (int j = 0; j < tabs.length; j++) {
+        for (Schema value : schemas) {
+            tabs = value.getTables();
+            for (Table tab : tabs) {
                 // create foreign keys on new tables even if fks
                 // have been turned off
-                if (!_fks && !newTables.contains(tabs[j])) {
+                if (!_fks && !newTables.contains(tab)) {
                     if (_writer == null) {
                         continue;
                     }
                 }
 
-                fks = tabs[j].getForeignKeys();
+                fks = tab.getForeignKeys();
                 if (considerDatabaseState) {
-                    dbTable = db.findTable(schemas[i], tabs[j].getQualifiedPath());
+                    dbTable = db.findTable(value, tab.getQualifiedPath());
                 }
-                for (int k = 0; k < fks.length; k++) {
-                    if (!fks[k].isLogical() && dbTable != null) {
-                        fk = findForeignKey(dbTable, fks[k]);
+                for (ForeignKey foreignKey : fks) {
+                    if (!foreignKey.isLogical() && dbTable != null) {
+                        fk = findForeignKey(dbTable, foreignKey);
                         if (fk == null) {
-                            if (addForeignKey(fks[k]))
-                                dbTable.importForeignKey(fks[k]);
+                            if (addForeignKey(foreignKey))
+                                dbTable.importForeignKey(foreignKey);
                             else
                                 _log.warn(_loc.get("add-fk",
-                                        fks[k], tabs[j]));
-                        } else if (!fks[k].equalsForeignKey(fk))
+                                        foreignKey, tab));
+                        }
+                        else if (!foreignKey.equalsForeignKey(fk))
                             _log.warn(_loc.get("bad-fk", fk, dbTable));
                     }
                 }
@@ -772,16 +777,16 @@
         Schema[] schemas = db.getSchemas();
         if (_seqs && sequences) {
             Sequence[] seqs;
-            for (int i = 0; i < schemas.length; i++) {
-                seqs = schemas[i].getSequences();
-                for (int j = 0; j < seqs.length; j++) {
-                    if (!isDroppable(seqs[j]))
+            for (Schema schema : schemas) {
+                seqs = schema.getSequences();
+                for (Sequence seq : seqs) {
+                    if (!isDroppable(seq))
                         continue;
-                    if (repos.findSequence(seqs[j]) == null) {
-                        if (dropSequence(seqs[j]))
-                            schemas[i].removeSequence(seqs[j]);
+                    if (repos.findSequence(seq) == null) {
+                        if (dropSequence(seq))
+                            schema.removeSequence(seq);
                         else
-                            _log.warn(_loc.get("drop-seq", seqs[j]));
+                            _log.warn(_loc.get("drop-seq", seq));
                     }
                 }
             }
@@ -793,30 +798,30 @@
         if (_fks) {
             ForeignKey[] fks;
             ForeignKey fk;
-            for (int i = 0; i < schemas.length; i++) {
-                tabs = schemas[i].getTables();
-                for (int j = 0; j < tabs.length; j++) {
-                    if (!isDroppable(tabs[j]))
+            for (Schema schema : schemas) {
+                tabs = schema.getTables();
+                for (Table tab : tabs) {
+                    if (!isDroppable(tab))
                         continue;
-                    fks = tabs[j].getForeignKeys();
-                    reposTable = repos.findTable(tabs[j]);
+                    fks = tab.getForeignKeys();
+                    reposTable = repos.findTable(tab);
                     if (!tables && reposTable == null)
                         continue;
 
-                    for (int k = 0; k < fks.length; k++) {
-                        if (fks[k].isLogical())
+                    for (ForeignKey foreignKey : fks) {
+                        if (foreignKey.isLogical())
                             continue;
 
                         fk = null;
                         if (reposTable != null)
-                            fk = findForeignKey(reposTable, fks[k]);
+                            fk = findForeignKey(reposTable, foreignKey);
                         if (reposTable == null || fk == null
-                            || !fks[k].equalsForeignKey(fk)) {
-                            if (dropForeignKey(fks[k]))
-                                tabs[j].removeForeignKey(fks[k]);
+                                || !foreignKey.equalsForeignKey(fk)) {
+                            if (dropForeignKey(foreignKey))
+                                tab.removeForeignKey(foreignKey);
                             else
-                                _log.warn(_loc.get("drop-fk", fks[k],
-                                    tabs[j]));
+                                _log.warn(_loc.get("drop-fk", foreignKey,
+                                        tab));
                         }
                     }
                 }
@@ -826,23 +831,23 @@
         // primary keys
         if (_pks) {
             PrimaryKey pk;
-            for (int i = 0; i < schemas.length; i++) {
-                tabs = schemas[i].getTables();
-                for (int j = 0; j < tabs.length; j++) {
-                    if (!isDroppable(tabs[j]))
+            for (Schema schema : schemas) {
+                tabs = schema.getTables();
+                for (Table tab : tabs) {
+                    if (!isDroppable(tab))
                         continue;
-                    pk = tabs[j].getPrimaryKey();
+                    pk = tab.getPrimaryKey();
                     if (pk != null && pk.isLogical())
                         continue;
 
-                    reposTable = repos.findTable(tabs[j]);
+                    reposTable = repos.findTable(tab);
                     if (pk != null && reposTable != null
-                        && (reposTable.getPrimaryKey() == null
-                        || !pk.equalsPrimaryKey(reposTable.getPrimaryKey()))) {
+                            && (reposTable.getPrimaryKey() == null
+                            || !pk.equalsPrimaryKey(reposTable.getPrimaryKey()))) {
                         if (dropPrimaryKey(pk))
-                            tabs[j].removePrimaryKey();
+                            tab.removePrimaryKey();
                         else
-                            _log.warn(_loc.get("drop-pk", pk, tabs[j]));
+                            _log.warn(_loc.get("drop-pk", pk, tab));
                     }
                 }
             }
@@ -852,24 +857,24 @@
         Column[] cols;
         Column col;
         Collection<Table> drops = new LinkedList<>();
-        for (int i = 0; i < schemas.length; i++) {
-            tabs = schemas[i].getTables();
-            for (int j = 0; j < tabs.length; j++) {
-                if (!isDroppable(tabs[j]))
+        for (Schema value : schemas) {
+            tabs = value.getTables();
+            for (Table tab : tabs) {
+                if (!isDroppable(tab))
                     continue;
-                cols = tabs[j].getColumns();
-                reposTable = repos.findTable(tabs[j]);
+                cols = tab.getColumns();
+                reposTable = repos.findTable(tab);
                 if (reposTable != null) {
-                    for (int k = 0; k < cols.length; k++) {
-                        col = reposTable.getColumn(cols[k].getIdentifier());
-                        if (col == null || !cols[k].equalsColumn(_dict, col)) {
-                            if (tabs[j].getColumns().length == 1)
-                                drops.add(tabs[j]);
-                            else if (dropColumn(cols[k]))
-                                tabs[j].removeColumn(cols[k]);
+                    for (Column column : cols) {
+                        col = reposTable.getColumn(column.getIdentifier());
+                        if (col == null || !column.equalsColumn(_dict, col)) {
+                            if (tab.getColumns().length == 1)
+                                drops.add(tab);
+                            else if (dropColumn(column))
+                                tab.removeColumn(column);
                             else
-                                _log.warn(_loc.get("drop-col", cols[k],
-                                    tabs[j]));
+                                _log.warn(_loc.get("drop-col", column,
+                                        tab));
                         }
                     }
                 }
@@ -878,12 +883,12 @@
 
         // now tables
         if (tables) {
-            for (int i = 0; i < schemas.length; i++) {
-                tabs = schemas[i].getTables();
-                for (int j = 0; j < tabs.length; j++)
-                    if (isDroppable(tabs[j])
-                        && repos.findTable(tabs[j]) == null)
-                        drops.add(tabs[j]);
+            for (Schema schema : schemas) {
+                tabs = schema.getTables();
+                for (Table tab : tabs)
+                    if (isDroppable(tab)
+                            && repos.findTable(tab) == null)
+                        drops.add(tab);
             }
         }
         dropTables(drops, db);
@@ -905,19 +910,20 @@
         if (_seqs) {
             Sequence[] seqs;
             Sequence dbSeq;
-            for (int i = 0; i < schemas.length; i++) {
-                seqs = schemas[i].getSequences();
-                for (int j = 0; j < seqs.length; j++) {
-                    if (!isDroppable(seqs[j]))
+            for (Schema schema : schemas) {
+                seqs = schema.getSequences();
+                for (Sequence seq : seqs) {
+                    if (!isDroppable(seq))
                         continue;
-                    dbSeq = db.findSequence(seqs[j]);
+                    dbSeq = db.findSequence(seq);
                     if (dbSeq != null) {
-                        if (dropSequence(seqs[j]))
+                        if (dropSequence(seq))
                             dbSeq.getSchema().removeSequence(dbSeq);
                         else
-                            _log.warn(_loc.get("drop-seq", seqs[j]));
-                    } else if (_writer != null) {
-                        dropSequence(seqs[j]);
+                            _log.warn(_loc.get("drop-seq", seq));
+                    }
+                    else if (_writer != null) {
+                        dropSequence(seq);
                     }
                 }
             }
@@ -930,33 +936,33 @@
         Table[] tabs;
         Table dbTable;
         Column[] dbCols;
-        for (int i = 0; i < schemas.length; i++) {
-            tabs = schemas[i].getTables();
+        for (Schema value : schemas) {
+            tabs = value.getTables();
             tables:
-            for (int j = 0; j < tabs.length; j++) {
-                if (!isDroppable(tabs[j]))
+            for (Table tab : tabs) {
+                if (!isDroppable(tab))
                     continue;
 
                 if (!considerDatabaseState) {
-                    drops.add(tabs[j]);
+                    drops.add(tab);
                     continue;
                 }
 
-                dbTable = db.findTable(tabs[j]);
+                dbTable = db.findTable(tab);
                 if (dbTable == null) {
                     if (_writer != null) {
-                        drops.add(tabs[j]);
+                        drops.add(tab);
                     }
                     continue;
                 }
 
                 dbCols = dbTable.getColumns();
-                for (int k = 0; k < dbCols.length; k++) {
-                    if (!dbCols[k].getIdentifier().getName().equals(_dict.getIdentityColumnName()) &&
-                        !tabs[j].containsColumn(dbCols[k]))
+                for (Column dbCol : dbCols) {
+                    if (!dbCol.getIdentifier().getName().equals(_dict.getIdentityColumnName()) &&
+                            !tab.containsColumn(dbCol))
                         continue tables;
                 }
-                drops.add(tabs[j]);
+                drops.add(tab);
             }
         }
 
@@ -965,46 +971,46 @@
         if (_fks) {
             ForeignKey[] fks;
             ForeignKey fk;
-            for (int i = 0; i < schemas.length; i++) {
-                tabs = schemas[i].getTables();
-                for (int j = 0; j < tabs.length; j++) {
-                    if (!isDroppable(tabs[j]))
+            for (Schema schema : schemas) {
+                tabs = schema.getTables();
+                for (Table tab : tabs) {
+                    if (!isDroppable(tab))
                         continue;
-                    fks = tabs[j].getForeignKeys();
-                    dbTable = db.findTable(tabs[j]);
-                    for (int k = 0; k < fks.length; k++) {
-                        if (fks[k].isLogical())
+                    fks = tab.getForeignKeys();
+                    dbTable = db.findTable(tab);
+                    for (ForeignKey foreignKey : fks) {
+                        if (foreignKey.isLogical())
                             continue;
 
                         fk = null;
                         if (dbTable != null)
-                            fk = findForeignKey(dbTable, fks[k]);
+                            fk = findForeignKey(dbTable, foreignKey);
                         if (dbTable == null || fk == null)
                             continue;
 
-                        if (dropForeignKey(fks[k]))
+                        if (dropForeignKey(foreignKey))
                             if (dbTable != null)
                                 dbTable.removeForeignKey(fk);
                             else
-                                _log.warn(_loc.get("drop-fk", fks[k], tabs[j]));
+                                _log.warn(_loc.get("drop-fk", foreignKey, tab));
                     }
                 }
             }
 
             // also drop imported foreign keys for tables that will be dropped
             Table tab;
-            for (Iterator<Table> itr = drops.iterator(); itr.hasNext();) {
-                tab = itr.next();
+            for (Table drop : drops) {
+                tab = drop;
                 dbTable = db.findTable(tab);
                 if (dbTable == null)
                     continue;
 
                 fks = db.findExportedForeignKeys(dbTable.getPrimaryKey());
-                for (int i = 0; i < fks.length; i++) {
-                    if (dropForeignKey(fks[i]))
-                        dbTable.removeForeignKey(fks[i]);
+                for (ForeignKey foreignKey : fks) {
+                    if (dropForeignKey(foreignKey))
+                        dbTable.removeForeignKey(foreignKey);
                     else
-                        _log.warn(_loc.get("drop-fk", fks[i], dbTable));
+                        _log.warn(_loc.get("drop-fk", foreignKey, dbTable));
                 }
             }
         }
@@ -1016,22 +1022,22 @@
             // columns
             Column[] cols;
             Column col;
-            for (int i = 0; i < schemas.length; i++) {
-                tabs = schemas[i].getTables();
-                for (int j = 0; j < tabs.length; j++) {
-                    if (!isDroppable(tabs[j]))
+            for (Schema schema : schemas) {
+                tabs = schema.getTables();
+                for (Table tab : tabs) {
+                    if (!isDroppable(tab))
                         continue;
-                    cols = tabs[j].getColumns();
-                    dbTable = db.findTable(tabs[j]);
-                    for (int k = 0; k < cols.length; k++) {
+                    cols = tab.getColumns();
+                    dbTable = db.findTable(tab);
+                    for (Column column : cols) {
                         col = null;
                         if (dbTable != null)
-                            col = dbTable.getColumn(cols[k].getIdentifier());
+                            col = dbTable.getColumn(column.getIdentifier());
                         if (dbTable == null || col == null)
                             continue;
 
-                        if (dropColumn(cols[k])) {
-                           dbTable.removeColumn(col);
+                        if (dropColumn(column)) {
+                            dbTable.removeColumn(col);
                         }
                     }
                 }
@@ -1062,9 +1068,9 @@
      */
     protected Index findIndex(Table dbTable, Index idx) {
         Index[] idxs = dbTable.getIndexes();
-        for (int i = 0; i < idxs.length; i++)
-            if (idx.columnsMatch(idxs[i].getColumns()))
-                return idxs[i];
+        for (Index index : idxs)
+            if (idx.columnsMatch(index.getColumns()))
+                return index;
         return null;
     }
 
@@ -1076,10 +1082,10 @@
             || fk.getConstantPrimaryKeyColumns().length > 0)
             return null;
         ForeignKey[] fks = dbTable.getForeignKeys();
-        for (int i = 0; i < fks.length; i++)
-            if (fk.columnsMatch(fks[i].getColumns(),
-                fks[i].getPrimaryKeyColumns()))
-                return fks[i];
+        for (ForeignKey foreignKey : fks)
+            if (fk.columnsMatch(foreignKey.getColumns(),
+                    foreignKey.getPrimaryKeyColumns()))
+                return foreignKey;
         return null;
     }
 
@@ -1094,13 +1100,14 @@
 
         Table table;
         Table changeTable;
-        for (Iterator<Table> itr = tables.iterator(); itr.hasNext();) {
-            table = itr.next();
+        for (Table value : tables) {
+            table = value;
             if (dropTable(table)) {
                 changeTable = change.findTable(table);
                 if (changeTable != null)
                     changeTable.getSchema().removeTable(changeTable);
-            } else
+            }
+            else
                 _log.warn(_loc.get("drop-table", table));
         }
     }
@@ -1297,13 +1304,14 @@
                 SchemaGroup group = assertSchemaGroup();
                 Schema[] schemas = group.getSchemas();
                 Table[] tabs;
-                for (int i = 0; i < schemas.length; i++) {
-                    tabs = schemas[i].getTables();
-                    for (int j = 0; j < tabs.length; j++) {
-                        if (DBIdentifier.isNull(tabs[j].getSchemaIdentifier())) {
-                            tables.add(tabs[j].getIdentifier());
-                        } else {
-                            DBIdentifier sName = tabs[j].getFullIdentifier();
+                for (Schema schema : schemas) {
+                    tabs = schema.getTables();
+                    for (Table tab : tabs) {
+                        if (DBIdentifier.isNull(tab.getSchemaIdentifier())) {
+                            tables.add(tab.getIdentifier());
+                        }
+                        else {
+                            DBIdentifier sName = tab.getFullIdentifier();
                             tables.add(sName);
                         }
                     }
@@ -1355,7 +1363,7 @@
                         conn.setAutoCommit(true);
                     }
                 }
-                for (int i = 0; i < sql.length; i++) {
+                for (String s : sql) {
                     try {
                         if (_rollbackBeforeDDL) {
                             // some connections require that rollback be
@@ -1367,12 +1375,13 @@
                             // connection pool may have issued some validation SQL.
                             try {
                                 conn.rollback();
-                            } catch (Exception e) {
+                            }
+                            catch (Exception e) {
                             }
                         }
 
                         statement = conn.createStatement();
-                        statement.executeUpdate(sql[i]);
+                        statement.executeUpdate(s);
 
                         // some connections seem to require an explicit
                         // commit for DDL statements, even when autocommit
@@ -1380,17 +1389,20 @@
                         // this limitation.
                         try {
                             conn.commit();
-                        } catch (Exception e) {
+                        }
+                        catch (Exception e) {
                         }
                     }
                     catch (SQLException se) {
                         err = true;
                         handleException(se);
-                    } finally {
+                    }
+                    finally {
                         if (statement != null)
                             try {
                                 statement.close();
-                            } catch (SQLException se) {
+                            }
+                            catch (SQLException se) {
                             }
                     }
                 }
@@ -1407,8 +1419,9 @@
                 }
             }
         } else {
-            for (int i = 0; i < sql.length; i++)
-                _writer.println(sql[i] + _sqlTerminator);
+            for (String s : sql) {
+                _writer.println(s + _sqlTerminator);
+            }
             _writer.flush();
         }
 
@@ -1594,8 +1607,8 @@
         flags.writer = Files.getWriter(fileName, loader);
 
         boolean returnValue = true;
-        for (int i = 0; i < actions.length; i++) {
-            flags.action = actions[i];
+        for (String action : actions) {
+            flags.action = action;
             returnValue &= run(conf, args, flags, loader);
         }
 
@@ -1647,8 +1660,8 @@
         SchemaParser parser = new XMLSchemaParser(conf);
         parser.setDelayConstraintResolve(true);
         File file;
-        for (int i = 0; i < args.length; i++) {
-            file = Files.getFile(args[i], loader);
+        for (String arg : args) {
+            file = Files.getFile(arg, loader);
             log.info(_loc.get("tool-running", file));
             parser.parse(file);
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java
index 34f4327..0b6caee 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java
@@ -111,18 +111,22 @@
      */
     void remove() {
         ForeignKey[] fks = getForeignKeys();
-        for (int i = 0; i < fks.length; i++)
-            removeForeignKey(fks[i]);
+        for (ForeignKey fk : fks) {
+            removeForeignKey(fk);
+        }
         Index[] idxs = getIndexes();
-        for (int i = 0; i < idxs.length; i++)
-            removeIndex(idxs[i]);
+        for (Index idx : idxs) {
+            removeIndex(idx);
+        }
         Unique[] unqs = getUniques();
-        for (int i = 0; i < unqs.length; i++)
-            removeUnique(unqs[i]);
+        for (Unique unq : unqs) {
+            removeUnique(unq);
+        }
         removePrimaryKey();
         Column[] cols = getColumns();
-        for (int i = 0; i < cols.length; i++)
-            removeColumn(cols[i]);
+        for (Column col : cols) {
+            removeColumn(col);
+        }
         _schema = null;
         _schemaName = DBIdentifier.NULL;
         _fullPath = null;
@@ -276,11 +280,11 @@
             else {
                 Collection<Column> autos = null;
                 Column[] cols = getColumns();
-                for (int i = 0; i < cols.length; i++) {
-                    if (cols[i].isAutoAssigned()) {
+                for (Column col : cols) {
+                    if (col.isAutoAssigned()) {
                         if (autos == null)
                             autos = new ArrayList<>(3);
-                        autos.add(cols[i]);
+                        autos.add(col);
                     }
                 }
                 _autoAssign = (autos == null) ? Schemas.EMPTY_COLUMNS
@@ -300,11 +304,11 @@
             else {
                 Collection<Column> rels = null;
                 Column[] cols = getColumns();
-                for (int i = 0; i < cols.length; i++) {
-                    if (cols[i].isRelationId()) {
+                for (Column col : cols) {
+                    if (col.isRelationId()) {
                         if (rels == null)
                             rels = new ArrayList<>(3);
-                        rels.add(cols[i]);
+                        rels.add(col);
                     }
                 }
                 _rels = (rels == null) ? Schemas.EMPTY_COLUMNS
@@ -581,8 +585,9 @@
         PrimaryKey copy = addPrimaryKey(pk.getIdentifier());
         copy.setLogical(pk.isLogical());
         Column[] cols = pk.getColumns();
-        for (int i = 0; i < cols.length; i++)
-            copy.addColumn(getColumn(cols[i].getIdentifier()));
+        for (Column col : cols) {
+            copy.addColumn(getColumn(col.getIdentifier()));
+        }
         return copy;
     }
 
@@ -598,9 +603,9 @@
 
     public ForeignKey getForeignKey(DBIdentifier name) {
         ForeignKey[] fks = getForeignKeys();
-        for (int i = 0; i < fks.length; i++) {
-            if (name.equals(fks[i].getIdentifier())) {
-                return fks[i];
+        for (ForeignKey fk : fks) {
+            if (name.equals(fk.getIdentifier())) {
+                return fk;
             }
         }
         return null;
@@ -700,16 +705,16 @@
                     joined.getColumn(pks[i].getIdentifier()));
 
             cols = fk.getConstantColumns();
-            for (int i = 0; i < cols.length; i++)
-                copy.joinConstant(getColumn(cols[i].getIdentifier()),
-                    fk.getPrimaryKeyConstant(cols[i]));
+            for (Column col : cols)
+                copy.joinConstant(getColumn(col.getIdentifier()),
+                        fk.getPrimaryKeyConstant(col));
 
             pks = fk.getConstantPrimaryKeyColumns();
             if (joined == null && pks.length > 0)
                 joined = schema.getSchemaGroup().findTable(pks[0].getTable());
-            for (int i = 0; i < pks.length; i++)
-                copy.joinConstant(fk.getConstant(pks[i]),
-                    joined.getColumn(pks[i].getIdentifier()));
+            for (Column pk : pks)
+                copy.joinConstant(fk.getConstant(pk),
+                        joined.getColumn(pk.getIdentifier()));
         }
         return copy;
     }
@@ -802,8 +807,9 @@
         copy.setUnique(idx.isUnique());
 
         Column[] cols = idx.getColumns();
-        for (int i = 0; i < cols.length; i++)
-            copy.addColumn(getColumn(cols[i].getIdentifier()));
+        for (Column col : cols) {
+            copy.addColumn(getColumn(col.getIdentifier()));
+        }
         return copy;
     }
 
@@ -828,9 +834,9 @@
 
     public Unique getUnique(DBIdentifier name) {
         Unique[] unqs = getUniques();
-        for (int i = 0; i < unqs.length; i++)
-            if (DBIdentifier.equal(name, unqs[i].getIdentifier()))
-                return unqs[i];
+        for (Unique unq : unqs)
+            if (DBIdentifier.equal(name, unq.getIdentifier()))
+                return unq;
         return null;
     }
 
@@ -889,8 +895,9 @@
         copy.setDeferred(unq.isDeferred());
 
         Column[] cols = unq.getColumns();
-        for (int i = 0; i < cols.length; i++)
-            copy.addColumn(getColumn(cols[i].getIdentifier()));
+        for (Column col : cols) {
+            copy.addColumn(getColumn(col.getIdentifier()));
+        }
         return copy;
     }
 
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/XMLSchemaParser.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/XMLSchemaParser.java
index 0dcb1ea..da8538f 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/XMLSchemaParser.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/XMLSchemaParser.java
@@ -190,14 +190,14 @@
         PrimaryKeyInfo pkInfo;
         String colName;
         Column col;
-        for (Iterator<PrimaryKeyInfo> itr = _pkInfos.iterator(); itr.hasNext();) {
-            pkInfo = itr.next();
-            for (Iterator<String> cols = pkInfo.cols.iterator(); cols.hasNext();) {
-                colName = cols.next();
+        for (PrimaryKeyInfo info : _pkInfos) {
+            pkInfo = info;
+            for (String s : pkInfo.cols) {
+                colName = s;
                 col = pkInfo.pk.getTable().getColumn(colName);
                 if (col == null)
                     throwUserException(_loc.get("pk-resolve", new Object[]
-                        { colName, pkInfo.pk.getTable() }));
+                            {colName, pkInfo.pk.getTable()}));
                 pkInfo.pk.addColumn(col);
             }
         }
@@ -211,15 +211,15 @@
         IndexInfo indexInfo;
         String colName;
         Column col;
-        for (Iterator<IndexInfo> itr = _indexInfos.iterator(); itr.hasNext();) {
-            indexInfo = itr.next();
-            for (Iterator<String> cols = indexInfo.cols.iterator(); cols.hasNext();) {
-                colName = cols.next();
+        for (IndexInfo info : _indexInfos) {
+            indexInfo = info;
+            for (String s : indexInfo.cols) {
+                colName = s;
                 col = indexInfo.index.getTable().getColumn(colName);
                 if (col == null)
                     throwUserException(_loc.get("index-resolve", new Object[]
-                        { indexInfo.index, colName,
-                            indexInfo.index.getTable() }));
+                            {indexInfo.index, colName,
+                                    indexInfo.index.getTable()}));
                 indexInfo.index.addColumn(col);
             }
         }
@@ -239,12 +239,12 @@
         PrimaryKey pk;
         Iterator<String> pks;
         Iterator<String> cols;
-        for (Iterator<ForeignKeyInfo> itr = _fkInfos.iterator(); itr.hasNext();) {
-            fkInfo = itr.next();
+        for (ForeignKeyInfo info : _fkInfos) {
+            fkInfo = info;
             toTable = _group.findTable(fkInfo.toTable);
             if (toTable == null || toTable.getPrimaryKey() == null)
                 throwUserException(_loc.get("fk-totable", new Object[]
-                    { fkInfo.fk, fkInfo.toTable, fkInfo.fk.getTable() }));
+                        {fkInfo.fk, fkInfo.toTable, fkInfo.fk.getTable()}));
 
             // check if only one fk column listed using shortcut
             pk = toTable.getPrimaryKey();
@@ -253,45 +253,45 @@
 
             // make joins
             pks = fkInfo.pks.iterator();
-            for (cols = fkInfo.cols.iterator(); cols.hasNext();) {
+            for (cols = fkInfo.cols.iterator(); cols.hasNext(); ) {
                 colName = (String) cols.next();
                 col = fkInfo.fk.getTable().getColumn(colName);
                 if (col == null)
                     throwUserException(_loc.get("fk-nocol",
-                        fkInfo.fk, colName, fkInfo.fk.getTable()));
+                            fkInfo.fk, colName, fkInfo.fk.getTable()));
 
                 pkColName = (String) pks.next();
                 pkCol = toTable.getColumn(pkColName);
                 if (pkCol == null)
                     throwUserException(_loc.get("fk-nopkcol", new Object[]
-                        { fkInfo.fk, pkColName, toTable,
-                            fkInfo.fk.getTable() }));
+                            {fkInfo.fk, pkColName, toTable,
+                                    fkInfo.fk.getTable()}));
 
                 fkInfo.fk.join(col, pkCol);
             }
 
             // make constant joins
             cols = fkInfo.constCols.iterator();
-            for (Iterator<Object> vals = fkInfo.consts.iterator(); vals.hasNext();) {
+            for (Object value : fkInfo.consts) {
                 colName = cols.next();
                 col = fkInfo.fk.getTable().getColumn(colName);
                 if (col == null)
                     throwUserException(_loc.get("fk-nocol",
-                        fkInfo.fk, colName, fkInfo.fk.getTable()));
+                            fkInfo.fk, colName, fkInfo.fk.getTable()));
 
-                fkInfo.fk.joinConstant(col, vals.next());
+                fkInfo.fk.joinConstant(col, value);
             }
 
             pks = fkInfo.constColsPK.iterator();
-            for (Iterator<Object> vals = fkInfo.constsPK.iterator(); vals.hasNext();) {
+            for (Object o : fkInfo.constsPK) {
                 pkColName = pks.next();
                 pkCol = toTable.getColumn(pkColName);
                 if (pkCol == null)
                     throwUserException(_loc.get("fk-nopkcol", new Object[]
-                        { fkInfo.fk, pkColName, toTable,
-                            fkInfo.fk.getTable() }));
+                            {fkInfo.fk, pkColName, toTable,
+                                    fkInfo.fk.getTable()}));
 
-                fkInfo.fk.joinConstant(vals.next(), pkCol);
+                fkInfo.fk.joinConstant(o, pkCol);
             }
         }
     }
@@ -304,14 +304,14 @@
         UniqueInfo unqInfo;
         String colName;
         Column col;
-        for (Iterator<UniqueInfo> itr = _unqInfos.iterator(); itr.hasNext();) {
-            unqInfo = itr.next();
-            for (Iterator<String> cols = unqInfo.cols.iterator(); cols.hasNext();) {
-                colName = (String) cols.next();
+        for (UniqueInfo info : _unqInfos) {
+            unqInfo = info;
+            for (String s : unqInfo.cols) {
+                colName = s;
                 col = unqInfo.unq.getTable().getColumn(colName);
                 if (col == null)
                     throwUserException(_loc.get("unq-resolve", new Object[]
-                        { unqInfo.unq, colName, unqInfo.unq.getTable() }));
+                            {unqInfo.unq, colName, unqInfo.unq.getTable()}));
                 unqInfo.unq.addColumn(col);
             }
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/XMLSchemaSerializer.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/XMLSchemaSerializer.java
index 72dbea6..fb03d51 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/XMLSchemaSerializer.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/XMLSchemaSerializer.java
@@ -21,7 +21,6 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -93,11 +92,13 @@
         if (schema == null)
             return;
         Table[] tables = schema.getTables();
-        for (int i = 0; i < tables.length; i++)
-            addTable(tables[i]);
+        for (Table table : tables) {
+            addTable(table);
+        }
         Sequence[] seqs = schema.getSequences();
-        for (int i = 0; i < seqs.length; i++)
-            addSequence(seqs[i]);
+        for (Sequence seq : seqs) {
+            addSequence(seq);
+        }
     }
 
     @Override
@@ -105,8 +106,9 @@
         if (group == null)
             return;
         Schema[] schemas = group.getSchemas();
-        for (int i = 0; i < schemas.length; i++)
-            addAll(schemas[i]);
+        for (Schema schema : schemas) {
+            addAll(schema);
+        }
     }
 
     @Override
@@ -116,11 +118,13 @@
 
         boolean removed = false;
         Table[] tables = schema.getTables();
-        for (int i = 0; i < tables.length; i++)
-            removed |= removeTable(tables[i]);
+        for (Table table : tables) {
+            removed |= removeTable(table);
+        }
         Sequence[] seqs = schema.getSequences();
-        for (int i = 0; i < seqs.length; i++)
-            removed |= removeSequence(seqs[i]);
+        for (Sequence seq : seqs) {
+            removed |= removeSequence(seq);
+        }
         return removed;
     }
 
@@ -131,8 +135,9 @@
 
         boolean removed = false;
         Schema[] schemas = group.getSchemas();
-        for (int i = 0; i < schemas.length; i++)
-            removed |= removeAll(schemas[i]);
+        for (Schema schema : schemas) {
+            removed |= removeAll(schema);
+        }
         return removed;
     }
 
@@ -162,8 +167,8 @@
         String schemaName;
         Collection schemaObjs;
         Object obj;
-        for (Iterator itr = objs.iterator(); itr.hasNext();) {
-            obj = itr.next();
+        for (Object value : objs) {
+            obj = value;
             if (obj instanceof Table)
                 schemaName = ((Table) obj).getSchemaName();
             else
@@ -178,10 +183,10 @@
 
         startElement("schemas");
         Map.Entry entry;
-        for (Iterator itr = schemas.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : schemas.entrySet()) {
+            entry = (Map.Entry) o;
             serializeSchema((String) entry.getKey(), (Collection)
-                entry.getValue());
+                    entry.getValue());
         }
         endElement("schemas");
     }
@@ -203,8 +208,8 @@
 
         // tables and seqs
         Object obj;
-        for (Iterator<?> itr = objs.iterator(); itr.hasNext();) {
-            obj = itr.next();
+        for (Object o : objs) {
+            obj = o;
             if (obj instanceof Table)
                 serializeTable((Table) obj);
             else
@@ -246,23 +251,27 @@
 
         // columns
         Column[] cols = table.getColumns();
-        for (int i = 0; i < cols.length; i++)
-            serializeColumn(cols[i]);
+        for (Column col : cols) {
+            serializeColumn(col);
+        }
 
         // foreign keys
         ForeignKey[] fks = table.getForeignKeys();
-        for (int i = 0; i < fks.length; i++)
-            serializeForeignKey(fks[i]);
+        for (ForeignKey fk : fks) {
+            serializeForeignKey(fk);
+        }
 
         // indexes
         Index[] idxs = table.getIndexes();
-        for (int i = 0; i < idxs.length; i++)
-            serializeIndex(idxs[i]);
+        for (Index idx : idxs) {
+            serializeIndex(idx);
+        }
 
         // unique constraints
         Unique[] unqs = table.getUniques();
-        for (int i = 0; i < unqs.length; i++)
-            serializeUnique(unqs[i]);
+        for (Unique unq : unqs) {
+            serializeUnique(unq);
+        }
 
         endElement("table");
     }
@@ -310,8 +319,9 @@
 
         // columns
         if (cols.length > 1)
-            for (int i = 0; i < cols.length; i++)
-                serializeOn(cols[i]);
+            for (Column col : cols) {
+                serializeOn(col);
+            }
 
         endElement("pk");
     }
@@ -331,8 +341,9 @@
 
         // columns
         if (cols.length > 1)
-            for (int i = 0; i < cols.length; i++)
-                serializeOn(cols[i]);
+            for (Column col : cols) {
+                serializeOn(col);
+            }
 
         endElement("index");
     }
@@ -353,8 +364,9 @@
 
         // columns
         if (cols.length > 1)
-            for (int i = 0; i < cols.length; i++)
-                serializeOn(cols[i]);
+            for (Column col : cols) {
+                serializeOn(col);
+            }
 
         endElement("unique");
     }
@@ -391,10 +403,12 @@
         if (cols.length > 1 || consts.length > 0 || constsPK.length > 0)
             for (int i = 0; i < cols.length; i++)
                 serializeJoin(cols[i], pks[i]);
-        for (int i = 0; i < consts.length; i++)
-            serializeJoin(consts[i], fk.getConstant(consts[i]));
-        for (int i = 0; i < constsPK.length; i++)
-            serializeJoin(fk.getPrimaryKeyConstant(constsPK[i]), constsPK[i]);
+        for (Column aConst : consts) {
+            serializeJoin(aConst, fk.getConstant(aConst));
+        }
+        for (Column column : constsPK) {
+            serializeJoin(fk.getPrimaryKeyConstant(column), column);
+        }
 
         endElement("fk");
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractResult.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractResult.java
index e8ef28f..1caadc1 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractResult.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractResult.java
@@ -39,7 +39,6 @@
 import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
 
@@ -139,12 +138,13 @@
     protected void closeEagerMap(Map eager) {
         if (eager != null) {
             Object res;
-            for (Iterator itr = eager.values().iterator(); itr.hasNext();) {
-                res = itr.next();
+            for (Object o : eager.values()) {
+                res = o;
                 if (res != this && res instanceof Closeable)
                     try {
                         ((Closeable) res).close();
-                    } catch (Exception e) {
+                    }
+                    catch (Exception e) {
                     }
             }
         }
@@ -244,8 +244,8 @@
      */
     protected boolean containsAllInternal(Object[] objs, Joins joins)
         throws SQLException {
-        for (int i = 0; i < objs.length; i++)
-            if (!containsInternal(objs[i], joins))
+        for (Object obj : objs)
+            if (!containsInternal(obj, joins))
                 return false;
         return true;
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
index 0ee2920..046c1a4 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
@@ -603,9 +603,9 @@
             StringBuilder errdStr = new StringBuilder();
 
             int[] errds = (int[]) getSqlErrdMethd.invoke(sqlca, new Object[]{});
-            for (int i = 0; i < errds.length; i++)
-                errdStr.append(errdStr.length() > 0 ? ", " : "").
-                    append(errds[i]);
+           for (int errd : errds)
+               errdStr.append(errdStr.length() > 0 ? ", " : "").
+                       append(errd);
             StringBuilder exceptionMsg = new StringBuilder();
             exceptionMsg.append("SQLCA OUTPUT");
             exceptionMsg.append("[Errp=");
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
index 3689396..e638d8e 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
@@ -2096,8 +2096,8 @@
             String s;
             idx = typeName.length();
             int curIdx = -1;
-            for (Iterator<String> i = typeModifierSet.iterator(); i.hasNext();) {
-                s = i.next();
+            for (String value : typeModifierSet) {
+                s = value;
                 if (typeName.toUpperCase(Locale.ENGLISH).indexOf(s) != -1) {
                     curIdx = typeName.toUpperCase(Locale.ENGLISH).indexOf(s);
                     if (curIdx != -1 && curIdx < idx) {
@@ -2494,16 +2494,16 @@
         Collection<String> deleteSQL = new ArrayList<>(tables.length);
         Collection<ForeignKey> restrictConstraints =
             new LinkedHashSet<>();
-        for (int i = 0; i < tables.length; i++) {
-            ForeignKey[] fks = tables[i].getForeignKeys();
-            for (int j = 0; j < fks.length; j++) {
-                if (!fks[j].isLogical() && !fks[j].isDeferred()
-                    && fks[j].getDeleteAction() == ForeignKey.ACTION_RESTRICT)
-                restrictConstraints.add(fks[j]);
+        for (Table table : tables) {
+            ForeignKey[] fks = table.getForeignKeys();
+            for (ForeignKey fk : fks) {
+                if (!fk.isLogical() && !fk.isDeferred()
+                        && fk.getDeleteAction() == ForeignKey.ACTION_RESTRICT)
+                    restrictConstraints.add(fk);
             }
 
             deleteSQL.add("DELETE FROM " +
-                toDBName(tables[i].getFullIdentifier()));
+                    toDBName(table.getFullIdentifier()));
         }
 
         for(ForeignKey fk : restrictConstraints) {
@@ -2595,8 +2595,8 @@
                 }
             }
 
-            for (Iterator itr2 = aliases.iterator(); itr2.hasNext();) {
-                String tableAlias = itr2.next().toString();
+            for (Object alias : aliases) {
+                String tableAlias = alias.toString();
                 if (fromSQL.getSQL().indexOf(tableAlias) == -1) {
                     if (!first && fromSQL.getSQL().length() > 0)
                         fromSQL.append(", ");
@@ -3582,8 +3582,8 @@
             return false;
 
         char[] vowels = { 'A', 'E', 'I', 'O', 'U', };
-        for (int i = 0; i < vowels.length; i++) {
-            int index = name.toString().toUpperCase(Locale.ENGLISH).indexOf(vowels[i]);
+        for (char vowel : vowels) {
+            int index = name.toString().toUpperCase(Locale.ENGLISH).indexOf(vowel);
             if (index != -1) {
                 name.replace(index, index + 1, "");
                 return true;
@@ -3695,8 +3695,8 @@
 
         Unique[] unqs = table.getUniques();
         String unqStr;
-        for (int i = 0; i < unqs.length; i++) {
-            unqStr = getUniqueConstraintSQL(unqs[i]);
+        for (Unique unq : unqs) {
+            unqStr = getUniqueConstraintSQL(unq);
             if (unqStr != null) {
                 if (endBuf.length() > 0)
                     endBuf.append(", ");
@@ -4006,8 +4006,8 @@
 
         int delActionId = fk.getDeleteAction();
         if (delActionId == ForeignKey.ACTION_NULL) {
-            for (int i = 0; i < locals.length; i++) {
-                if (locals[i].isNotNull())
+            for (Column local : locals) {
+                if (local.isNotNull())
                     delActionId = ForeignKey.ACTION_NONE;
             }
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/H2Dictionary.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/H2Dictionary.java
index fd218c8..a489d11 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/H2Dictionary.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/H2Dictionary.java
@@ -192,8 +192,8 @@
 
         Unique[] unqs = table.getUniques();
         String unqStr;
-        for (int i = 0; i < unqs.length; i++) {
-            unqStr = getUniqueConstraintSQL(unqs[i]);
+        for (Unique unq : unqs) {
+            unqStr = getUniqueConstraintSQL(unq);
             if (unqStr != null)
                 buf.append(", ").append(unqStr);
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/HSQLDictionary.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/HSQLDictionary.java
index a3e3332..6166412 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/HSQLDictionary.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/HSQLDictionary.java
@@ -219,8 +219,8 @@
 
         Unique[] unqs = table.getUniques();
         String unqStr;
-        for (int i = 0; i < unqs.length; i++) {
-            unqStr = getUniqueConstraintSQL(unqs[i]);
+        for (Unique unq : unqs) {
+            unqStr = getUniqueConstraintSQL(unq);
             if (unqStr != null)
                 buf.append(", ").append(unqStr);
         }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/InterbaseDictionary.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/InterbaseDictionary.java
index e05a5d8..2cd7962 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/InterbaseDictionary.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/InterbaseDictionary.java
@@ -107,8 +107,8 @@
             && col.getTable() != null) {
             // indexed varchar cols have to be <= 250 chars
             Index[] idx = col.getTable().getIndexes();
-            for (int i = 0; i < idx.length; i++) {
-                if (idx[i].containsColumn(col)) {
+            for (Index index : idx) {
+                if (index.containsColumn(col)) {
                     col.setSize(Math.min(col.getSize(), 200));
                     break;
                 }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/JoinSet.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/JoinSet.java
index 93bc9c9..7bd4184 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/JoinSet.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/JoinSet.java
@@ -108,9 +108,9 @@
         // traverse graph
         Node n;
         int idx, sidx;
-        for (int i = 0; i < _graph.size(); i++) {
+        for (Object o : _graph) {
             // seed queue with next set of disconnected joins
-            for (n = (Node) _graph.get(i); n != null; n = n.next) {
+            for (n = (Node) o; n != null; n = n.next) {
                 sidx = getSeenIndex(n.join);
                 if (!seen.get(sidx)) {
                     seen.set(sidx);
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/LogicalUnion.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/LogicalUnion.java
index 1b4349f..28f388d 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/LogicalUnion.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/LogicalUnion.java
@@ -154,8 +154,9 @@
 
     @Override
     public void setAutoDistinct(boolean distinct) {
-        for (int i = 0; i < sels.length; i++)
-            sels[i].setAutoDistinct(distinct);
+        for (UnionSelect sel : sels) {
+            sel.setAutoDistinct(distinct);
+        }
     }
 
     @Override
@@ -175,8 +176,9 @@
 
     @Override
     public void setLRS(boolean lrs) {
-        for (int i = 0; i < sels.length; i++)
-            sels[i].setLRS(lrs);
+        for (UnionSelect sel : sels) {
+            sel.setLRS(lrs);
+        }
     }
 
     @Override
@@ -187,8 +189,9 @@
     @Override
     public void setExpectedResultCount(int expectedResultCount,
         boolean force) {
-        for (int i = 0; i < sels.length; i++)
-            sels[i].setExpectedResultCount(expectedResultCount, force);
+        for (UnionSelect sel : sels) {
+            sel.setExpectedResultCount(expectedResultCount, force);
+        }
     }
 
     @Override
@@ -198,8 +201,9 @@
 
     @Override
     public void setJoinSyntax(int syntax) {
-        for (int i = 0; i < sels.length; i++)
-            sels[i].setJoinSyntax(syntax);
+        for (UnionSelect sel : sels) {
+            sel.setJoinSyntax(syntax);
+        }
     }
 
     @Override
@@ -213,8 +217,8 @@
     public boolean supportsLocking() {
         if (sels.length == 1)
             return sels[0].supportsLocking();
-        for (int i = 0; i < sels.length; i++)
-            if (!sels[i].supportsLocking())
+        for (UnionSelect sel : sels)
+            if (!sel.supportsLocking())
                 return false;
         return true;
     }
@@ -230,8 +234,9 @@
     public int getCount(JDBCStore store)
         throws SQLException {
         int count = 0;
-        for (int i = 0; i < sels.length; i++)
-            count += sels[i].getCount(store);
+        for (UnionSelect sel : sels) {
+            count += sel.getCount(store);
+        }
         return count;
     }
 
@@ -798,8 +803,9 @@
          * Record that we're ordering by the given columns.
          */
         protected void recordOrderColumns(Column[] cols, boolean asc) {
-            for (int i = 0; i < cols.length; i++)
-                recordOrder(cols[i], asc);
+            for (Column col : cols) {
+                recordOrder(col, asc);
+            }
         }
 
         @Override
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MergedResult.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MergedResult.java
index 237cc73..c2fad44 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MergedResult.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MergedResult.java
@@ -101,8 +101,9 @@
 
     @Override
     public void close() {
-        for (int i = 0; i < _res.length; i++)
-            _res[i].close();
+        for (Result re : _res) {
+            re.close();
+        }
     }
 
     @Override
@@ -197,8 +198,9 @@
     public int size()
         throws SQLException {
         int size = 0;
-        for (int i = 0; i < _res.length; i++)
-            size += _res[i].size();
+        for (Result re : _res) {
+            size += re.size();
+        }
         return size;
     }
 
@@ -650,14 +652,16 @@
 
     @Override
     public void startDataRequest(Object mapping) {
-        for (int i = 0; i < _res.length; i++)
-            _res[i].startDataRequest(mapping);
+        for (Result re : _res) {
+            re.startDataRequest(mapping);
+        }
     }
 
     @Override
     public void endDataRequest() {
-        for (int i = 0; i < _res.length; i++)
-            _res[i].endDataRequest();
+        for (Result re : _res) {
+            re.endDataRequest();
+        }
     }
 
     /**
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java
index 3d93682..c6a94b6 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java
@@ -411,8 +411,8 @@
 
         if(namePairs != null) { // unable to parse strName.
             try {
-                for (int i = 0; i < namePairs.length; i++) {
-                    if (queryOwnership(conn, namePairs[i], schema)) {
+                for (String[] namePair : namePairs) {
+                    if (queryOwnership(conn, namePair, schema)) {
                         return true;
                     }
                 }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PrimaryRow.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PrimaryRow.java
index d8001d0..c9117c0 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PrimaryRow.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PrimaryRow.java
@@ -333,8 +333,8 @@
         while (cls.getJoinablePCSuperclassMapping() != null)
             cls = cls.getJoinablePCSuperclassMapping();
         Column[] cols = cls.getPrimaryKeyColumns();
-        for (int i = 0; i < cols.length; i++)
-            if (cols[i].isAutoAssigned())
+        for (Column col : cols)
+            if (col.isAutoAssigned())
                 return true;
         return false;
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/RowImpl.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/RowImpl.java
index 402e585..87b1af0 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/RowImpl.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/RowImpl.java
@@ -224,8 +224,9 @@
         throws SQLException {
         _sql = null;
         Column[] cols = fk.getColumns();
-        for (int i = 0; i < cols.length; i++)
-            _vals[getSetIndex(cols[i])] = null;
+        for (Column col : cols) {
+            _vals[getSetIndex(col)] = null;
+        }
     }
 
     /**
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
index d26e2f9..ac052da 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
@@ -286,8 +286,8 @@
         if (_subsels == null)
             return false;
         Subselect sub;
-        for (int i = 0; i < _subsels.size(); i++) {
-            sub = (Subselect) _subsels.get(i);
+        for (Object subsel : _subsels) {
+            sub = (Subselect) subsel;
             if (sub.select == old) {
                 sub.select = sel;
                 return true;
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SecondaryRow.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SecondaryRow.java
index 47bf3aa..ea48ec5 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SecondaryRow.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SecondaryRow.java
@@ -139,8 +139,8 @@
         while (cls.getJoinablePCSuperclassMapping() != null)
             cls = cls.getJoinablePCSuperclassMapping();
         Column[] cols = cls.getPrimaryKeyColumns();
-        for (int i = 0; i < cols.length; i++)
-            if (cols[i].isAutoAssigned())
+        for (Column col : cols)
+            if (col.isAutoAssigned())
                 return true;
         return false;
     }
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java
index 0970bbc..6e553db 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java
@@ -369,8 +369,8 @@
         if (_eager == null)
             return false;
         Map.Entry entry;
-        for (Iterator itr = _eager.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : _eager.entrySet()) {
+            entry = (Map.Entry) o;
             if (entry.getValue() != this)
                 return true;
         }
@@ -478,8 +478,8 @@
         Map.Entry entry;
         Result eres;
         Map eager;
-        for (Iterator itr = sel._eager.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : sel._eager.entrySet()) {
+            entry = (Map.Entry) o;
 
             // simulated batched selects for inner/outer joins; for separate
             // selects, don't pass on lock level, because they're probably
@@ -488,7 +488,7 @@
                 eres = res;
             else
                 eres = ((SelectExecutor) entry.getValue()).execute(store,
-                    fetch);
+                        fetch);
 
             eager = res.getEagerMap(false);
             if (eager == null) {
@@ -1386,8 +1386,9 @@
         if (_ordered == null)
             return null;
         List idxs = new ArrayList(_ordered.size());
-        for (int i = 0; i < _ordered.size(); i++)
-            idxs.add(_selects.indexOf(_ordered.get(i)));
+        for (Object o : _ordered) {
+            idxs.add(_selects.indexOf(o));
+        }
         return idxs;
     }
 
@@ -1692,8 +1693,8 @@
     @Override
     public void groupBy(Column[] cols, Joins joins) {
         PathJoins pj = getJoins(joins, true);
-        for (int i = 0; i < cols.length; i++) {
-            groupByAppend(getColumnAlias(cols[i], pj));
+        for (Column col : cols) {
+            groupByAppend(getColumnAlias(col, pj));
         }
     }
 
@@ -2575,11 +2576,11 @@
             throws SQLException {
             PathJoins pj = getJoins(joins);
             Object obj;
-            for (int i = 0; i < objs.length; i++) {
+            for (Object o : objs) {
                 if (pj != null && pj.path() != null)
-                    obj = getColumnAlias((Column) objs[i], pj);
+                    obj = getColumnAlias((Column) o, pj);
                 else
-                    obj = objs[i];
+                    obj = o;
                 if (obj == null || !_sel._selects.contains(obj))
                     return false;
             }
@@ -3261,8 +3262,8 @@
             boolean found1 = false;
             boolean found2 = false;
 
-            for (int i = 0; i < aliases.length; i++) {
-                int alias = (Integer) aliases[i];
+            for (Object o : aliases) {
+                int alias = (Integer) o;
                 if (alias == j.getIndex1())
                     found1 = true;
                 if (alias == j.getIndex2())
@@ -3305,8 +3306,8 @@
             boolean found1 = false;
             boolean found2 = false;
 
-            for (int i = 0; i < aliases.length; i++) {
-                int alias = (Integer) aliases[i];
+            for (Object o : aliases) {
+                int alias = (Integer) o;
                 if (alias == join.getIndex1())
                     found1 = true;
                 if (alias == join.getIndex2())
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SolidDBDictionary.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SolidDBDictionary.java
index 42a70a3..464bdcb 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SolidDBDictionary.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SolidDBDictionary.java
@@ -167,8 +167,8 @@
 
         Unique[] unqs = table.getUniques();
         String unqStr;
-        for (int i = 0; i < unqs.length; i++) {
-            unqStr = getUniqueConstraintSQL(unqs[i]);
+        for (Unique unq : unqs) {
+            unqStr = getUniqueConstraintSQL(unq);
             if (unqStr != null)
                 buf.append(", ").append(unqStr);
         }
@@ -248,14 +248,14 @@
 
     protected boolean sequenceExists(String schemaName, String seqName, SchemaGroup group) {
         Schema[] schemas = group.getSchemas();
-        for (int i = 0; i < schemas.length; i++) {
-            String dbSchemaName = schemas[i].getIdentifier().getName();
+        for (Schema schema : schemas) {
+            String dbSchemaName = schema.getIdentifier().getName();
             if (schemaName != null && !schemaName.equalsIgnoreCase(dbSchemaName))
                 continue;
 
-            Sequence[] seqs = schemas[i].getSequences();
-            for (int j = 0; j < seqs.length; j++) {
-                String dbSeqName = seqs[j].getName();
+            Sequence[] seqs = schema.getSequences();
+            for (Sequence seq : seqs) {
+                String dbSeqName = seq.getName();
                 if (dbSeqName != null && dbSeqName.equalsIgnoreCase(seqName))
                     return true;
             }
@@ -444,23 +444,25 @@
        Column[] icols = idx.getColumns();
        boolean isDuplicate = false;
        boolean mayBeDuplicate = false;
-       for (int i = 0; i < uniques.length; i++) {
-           Column[] ucols = uniques[i].getColumns();
-           if (ucols.length < icols.length)
-               continue;
-           for (int j = 0, k = 0; j < ucols.length && k < icols.length; j++, k++) {
-               if (mayBeDuplicate && ucols[j].getQualifiedPath().equals(icols[k].getQualifiedPath())) {
-                   if (k == icols.length - 1) {
-                       isDuplicate = true;
-                   } else {
-                       mayBeDuplicate = true;
-                   }
-               } else
-                   mayBeDuplicate = false;
-           }
-           if (isDuplicate)
-               break;
-       }
+        for (Unique unique : uniques) {
+            Column[] ucols = unique.getColumns();
+            if (ucols.length < icols.length)
+                continue;
+            for (int j = 0, k = 0; j < ucols.length && k < icols.length; j++, k++) {
+                if (mayBeDuplicate && ucols[j].getQualifiedPath().equals(icols[k].getQualifiedPath())) {
+                    if (k == icols.length - 1) {
+                        isDuplicate = true;
+                    }
+                    else {
+                        mayBeDuplicate = true;
+                    }
+                }
+                else
+                    mayBeDuplicate = false;
+            }
+            if (isDuplicate)
+                break;
+        }
        return isDuplicate;
     }
 
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/StoredProcedure.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/StoredProcedure.java
index 2ec0262..2b19c4a 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/StoredProcedure.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/StoredProcedure.java
@@ -243,7 +243,9 @@
         }
         buf.append(") ");
         //buf.append("(");
-        for (String s : _sql) buf.append(s).append(" ");
+        for (String s : _sql) {
+            buf.append(s).append(" ");
+        }
         //buf.append(")");
 
         return buf.toString().trim();
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
index a3dabe6..139dd4b 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
@@ -227,8 +227,8 @@
 
         Unique[] unqs = table.getUniques();
         String unqStr;
-        for (int i = 0; i < unqs.length; i++) {
-            unqStr = getUniqueConstraintSQL(unqs[i]);
+        for (Unique unq : unqs) {
+            unqStr = getUniqueConstraintSQL(unq);
             if (unqStr != null)
                 buf.append(", ").append(unqStr);
         }
@@ -278,9 +278,9 @@
         // dynamic schema factory, where getting a column by name creates
         // that column
         Column[] cols = table.getColumns();
-        for (int i = 0; i < cols.length; i++)
-            if (identityColumnName.equalsIgnoreCase(cols[i].getIdentifier().getName()))
-                cols[i].ref();
+        for (Column col : cols)
+            if (identityColumnName.equalsIgnoreCase(col.getIdentifier().getName()))
+                col.ref();
     }
 
     @Override
diff --git a/openjpa-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestDictionaryFactory.java b/openjpa-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestDictionaryFactory.java
index 625a68a..15d3e51 100644
--- a/openjpa-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestDictionaryFactory.java
+++ b/openjpa-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestDictionaryFactory.java
@@ -195,12 +195,13 @@
      */
     @Test
     public void testUrl2Dictionary() {
-        for (int i = 0; i < testMatrix.length; ++i) {
+        for (String[] matrix : testMatrix) {
             try {
                 String dbType = (String) getProtocol.invoke(null,
-                    testMatrix[i][0]);
-                assertEquals(dbType, testMatrix[i][1]);
-            } catch (Exception e) {
+                        matrix[0]);
+                assertEquals(dbType, matrix[1]);
+            }
+            catch (Exception e) {
                 fail(e.getMessage());
             }
         }
diff --git a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/JSONObjectFormatter.java b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/JSONObjectFormatter.java
index 06c954d..9a02661 100644
--- a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/JSONObjectFormatter.java
+++ b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/JSONObjectFormatter.java
@@ -140,8 +140,8 @@
         StoreContext ctx = (StoreContext)sm.getGenericContext();
         List<Attribute<?, ?>> attrs = MetamodelHelper.getAttributesInOrder(sm.getMetaData(), model);
 
-        for (int i = 0; i < attrs.size(); i++) {
-            FieldMetaData fmd = ((Members.Member<?, ?>) attrs.get(i)).fmd;
+        for (Attribute<?, ?> attr : attrs) {
+            FieldMetaData fmd = ((Members.Member<?, ?>) attr).fmd;
             if (!loaded.get(fmd.getIndex()))
                 continue;
             Object value = sm.fetch(fmd.getIndex());
@@ -172,28 +172,29 @@
                 case JavaTypes.LOCALE:
                 case JavaTypes.STRING:
                 case JavaTypes.ENUM:
-                         root.set(fmd.getName(),value);
-                break;
+                    root.set(fmd.getName(), value);
+                    break;
 
                 case JavaTypes.PC:
                     if (value == null) {
                         root.set(fmd.getName(), null);
-                    } else {
-                        root.set(fmd.getName(),encodeManagedInstance(ctx.getStateManager(value), visited,
-                            indent+1, false, model));
+                    }
+                    else {
+                        root.set(fmd.getName(), encodeManagedInstance(ctx.getStateManager(value), visited,
+                                indent + 1, false, model));
                     }
                     break;
 
                 case JavaTypes.ARRAY:
-                    Object[] values = (Object[])value;
+                    Object[] values = (Object[]) value;
                     value = Arrays.asList(values);
-                // no break;
+                    // no break;
                 case JavaTypes.COLLECTION:
                     if (value == null) {
                         root.set(fmd.getName(), null);
                         break;
                     }
-                    Collection<?> members = (Collection<?>)value;
+                    Collection<?> members = (Collection<?>) value;
                     JSONObject.Array array = new JSONObject.Array();
                     root.set(fmd.getName(), array);
                     if (members.isEmpty()) {
@@ -203,12 +204,14 @@
                     for (Object o : members) {
                         if (o == null) {
                             array.add(null);
-                        } else {
+                        }
+                        else {
                             if (basic) {
                                 array.add(o);
-                            } else {
-                                array.add(encodeManagedInstance(ctx.getStateManager(o), visited, indent+1, true,
-                                    model));
+                            }
+                            else {
+                                array.add(encodeManagedInstance(ctx.getStateManager(o), visited, indent + 1, true,
+                                        model));
                             }
                         }
                     }
@@ -218,26 +221,26 @@
                         root.set(fmd.getName(), null);
                         break;
                     }
-                    Set<Map.Entry> entries = ((Map)value).entrySet();
+                    Set<Map.Entry> entries = ((Map) value).entrySet();
                     JSONObject.KVMap map = new JSONObject.KVMap();
                     root.set(fmd.getName(), map);
                     if (entries.isEmpty()) {
                         break;
                     }
 
-                    boolean basicKey   = fmd.getElement().getTypeMetaData() == null;
+                    boolean basicKey = fmd.getElement().getTypeMetaData() == null;
                     boolean basicValue = fmd.getValue().getTypeMetaData() == null;
-                    for (Map.Entry<?,?> e : entries) {
+                    for (Map.Entry<?, ?> e : entries) {
                         Object k = e.getKey();
                         Object v = e.getValue();
                         if (!basicKey) {
-                            k = encodeManagedInstance(ctx.getStateManager(k), visited, indent+1, true, model);
+                            k = encodeManagedInstance(ctx.getStateManager(k), visited, indent + 1, true, model);
                         }
                         if (!basicValue) {
                             v = encodeManagedInstance(ctx.getStateManager(e.getValue()), visited,
-                                indent+1, false, model);
+                                    indent + 1, false, model);
                         }
-                        map.put(k,v);
+                        map.put(k, v);
                     }
                     break;
 
diff --git a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/TokenReplacedStream.java b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/TokenReplacedStream.java
index 3beba28..e494842 100644
--- a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/TokenReplacedStream.java
+++ b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/TokenReplacedStream.java
@@ -74,8 +74,8 @@
                 Pattern p = matched(patterns); // has any pattern matched completely
                 if (p != null) { // a pattern matched completely
                     char[] replace = p.replace().toCharArray();
-                    for (int j = 0; j < replace.length; j++) {
-                        out.write(replace[j]);
+                    for (char value : replace) {
+                        out.write(value);
                     }
                     reset(patterns);
                     tmp.delete(0, tmp.length());
diff --git a/openjpa-jest/src/test/java/demo/DataLoader.java b/openjpa-jest/src/test/java/demo/DataLoader.java
index 1f19418..bc011af 100644
--- a/openjpa-jest/src/test/java/demo/DataLoader.java
+++ b/openjpa-jest/src/test/java/demo/DataLoader.java
@@ -112,8 +112,8 @@
         for (int i = 0; i < MOVIE_ACTORS.length; i++) {
             int[] roles = MOVIE_ACTORS[i];
             Movie m = movies[i];
-            for (int j = 0; j < roles.length; j++) {
-                Actor a = actors[roles[j]];
+            for (int role : roles) {
+                Actor a = actors[role];
                 a.addMovie(m);
                 m.addActor(a);
             }
@@ -121,13 +121,12 @@
     }
 
     void makePartner(Actor[] actors) {
-        for (int i = 0; i < PARTNERS.length; i++) {
-            int[] partners = PARTNERS[i];
+        for (int[] partners : PARTNERS) {
             Actor a1 = actors[partners[0]];
             Actor a2 = actors[partners[1]];
             a1.setPartner(a2);
             a2.setPartner(a1);
-       }
+        }
     }
 
 }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/conf/AutoDetachValue.java b/openjpa-kernel/src/main/java/org/apache/openjpa/conf/AutoDetachValue.java
index 0673583..9036f0d 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/conf/AutoDetachValue.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/conf/AutoDetachValue.java
@@ -71,8 +71,9 @@
     public int getConstant() {
         if (!_flagsSet) {
             String[] vals = get();
-            for (int i = 0; i < vals.length; i++)
-                _flags |= Integer.parseInt(unalias(vals[i]));
+            for (String val : vals) {
+                _flags |= Integer.parseInt(unalias(val));
+            }
             _flagsSet = true;
         }
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/conf/BrokerFactoryValue.java b/openjpa-kernel/src/main/java/org/apache/openjpa/conf/BrokerFactoryValue.java
index 73ce3b5..986e2df 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/conf/BrokerFactoryValue.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/conf/BrokerFactoryValue.java
@@ -45,9 +45,9 @@
         Map<String, String> aliases = new HashMap<>();
         aliases.put("abstractstore", AbstractStoreBrokerFactory.class.getName());
         ProductDerivation[] ds = ProductDerivations.getProductDerivations();
-        for (int i = 0; i < ds.length; i++) {
-            if (ds[i] instanceof OpenJPAProductDerivation)
-                ((OpenJPAProductDerivation) ds[i]).putBrokerFactoryAliases(aliases);
+        for (ProductDerivation d : ds) {
+            if (d instanceof OpenJPAProductDerivation)
+                ((OpenJPAProductDerivation) d).putBrokerFactoryAliases(aliases);
         }
 
         _aliases = new String[aliases.size() * 2];
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/conf/CacheMarshallerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/conf/CacheMarshallerImpl.java
index 6f3d0b1..aac5502 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/conf/CacheMarshallerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/conf/CacheMarshallerImpl.java
@@ -80,8 +80,9 @@
 
             if (o != null && o.getClass().isArray()) {
                 Object[] array = (Object[]) o;
-                for (int i = 0; i < array.length; i++)
-                    configure(array[i]);
+                for (Object value : array) {
+                    configure(value);
+                }
             } else {
                 configure(o);
             }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/conf/CacheMarshallersValue.java b/openjpa-kernel/src/main/java/org/apache/openjpa/conf/CacheMarshallersValue.java
index 66f790f..b6fc825 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/conf/CacheMarshallersValue.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/conf/CacheMarshallersValue.java
@@ -61,10 +61,10 @@
             super.instantiate(elemType, conf, fatal);
         if (ms != null) {
             _marshallers = new HashMap<>();
-            for (int i = 0; i < ms.length; i++) {
-                String mid = ms[i].getId();
+            for (CacheMarshaller m : ms) {
+                String mid = m.getId();
                 if (mid != null)
-                    _marshallers.put(mid, ms[i]);
+                    _marshallers.put(mid, m);
             }
         } else {
             _marshallers = null;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/conf/MetaDataCacheMaintenance.java b/openjpa-kernel/src/main/java/org/apache/openjpa/conf/MetaDataCacheMaintenance.java
index a78ad6e..29796f9 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/conf/MetaDataCacheMaintenance.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/conf/MetaDataCacheMaintenance.java
@@ -19,7 +19,6 @@
 package org.apache.openjpa.conf;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.openjpa.kernel.Bootstrap;
@@ -120,8 +119,9 @@
         MetaDataRepository repos = conf.getMetaDataRepositoryInstance();
         repos.setSourceMode(MetaDataModes.MODE_ALL);
         Collection types = repos.loadPersistentTypes(devpath, null);
-        for (Iterator iter = types.iterator(); iter.hasNext(); )
-            repos.getMetaData((Class) iter.next(), null, true);
+        for (Object type : types) {
+            repos.getMetaData((Class) type, null, true);
+        }
 
         loadQueries();
 
@@ -139,8 +139,9 @@
         try {
             QueryMetaData[] qmds =
                 conf.getMetaDataRepositoryInstance().getQueryMetaDatas();
-            for (int i = 0; i < qmds.length; i++)
-                loadQuery(broker, qmds[i]);
+            for (QueryMetaData qmd : qmds) {
+                loadQuery(broker, qmd);
+            }
         } finally {
             broker.close();
         }
@@ -181,26 +182,29 @@
         ClassMetaData[] metas = repos.getMetaDatas();
         log.info("  Types: " + metas.length);
         if (log.isTraceEnabled())
-            for (int i = 0; i < metas.length; i++)
-                log.trace("    " + metas[i].getDescribedType().getName());
+            for (ClassMetaData meta : metas) {
+                log.trace("    " + meta.getDescribedType().getName());
+            }
 
         QueryMetaData[] qmds = repos.getQueryMetaDatas();
         log.info("  Queries: " + qmds.length);
         if (log.isTraceEnabled())
-            for (int i = 0; i < qmds.length; i++)
-                log.trace("    " + qmds[i].getName() + ": "
-                    + qmds[i].getQueryString());
+            for (QueryMetaData qmd : qmds)
+                log.trace("    " + qmd.getName() + ": "
+                        + qmd.getQueryString());
 
         SequenceMetaData[] smds = repos.getSequenceMetaDatas();
         log.info("  Sequences: " + smds.length);
         if (log.isTraceEnabled())
-            for (int i = 0; i < smds.length; i++)
-                log.trace("    " + smds[i].getName());
+            for (SequenceMetaData smd : smds) {
+                log.trace("    " + smd.getName());
+            }
 
         log.info("  Compiled queries: "
             + (qcc == null ? "0" : "" + qcc.size()));
         if (log.isTraceEnabled() && qcc != null)
-            for (Iterator iter = qcc.keySet().iterator(); iter.hasNext(); )
-                log.trace("    " + iter.next());
+            for (Object o : qcc.keySet()) {
+                log.trace("    " + o);
+            }
     }
 }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/AbstractQueryCache.java b/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/AbstractQueryCache.java
index a2b7098..4ae37e3 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/AbstractQueryCache.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/AbstractQueryCache.java
@@ -25,7 +25,6 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -315,8 +314,8 @@
         MetaDataRepository repos = conf.getMetaDataRepositoryInstance();
         ClassMetaData meta;
         Object oid;
-        for (Iterator itr = oids.iterator(); itr.hasNext();) {
-            oid = itr.next();
+        for (Object o : oids) {
+            oid = o;
             if (oid instanceof Id)
                 classes.add(((Id) oid).getType());
             else {
@@ -359,8 +358,9 @@
      * Remove all results under the given keys from the cache.
      */
     protected void removeAllInternal(Collection qks) {
-        for (Iterator iter = qks.iterator(); iter.hasNext();)
-            removeInternal((QueryKey) iter.next());
+        for (Object qk : qks) {
+            removeInternal((QueryKey) qk);
+        }
     }
 
     /**
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCachePCDataGenerator.java b/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCachePCDataGenerator.java
index 435eda3..6a962ea 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCachePCDataGenerator.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCachePCDataGenerator.java
@@ -225,10 +225,10 @@
 
     private void addSynchronization(BCClass bc) {
         BCMethod[] methods = bc.getDeclaredMethods();
-        for (int i = 0; i < methods.length; i++) {
-            if (methods[i].isPublic()
-                && _synchs.contains(methods[i].getName()))
-                methods[i].setSynchronized(true);
+        for (BCMethod bcMethod : methods) {
+            if (bcMethod.isPublic()
+                    && _synchs.contains(bcMethod.getName()))
+                bcMethod.setSynchronized(true);
         }
 
         // add synchronized isLoaded call.
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryCacheStoreQuery.java b/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryCacheStoreQuery.java
index e2c0cc0..59402fc 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryCacheStoreQuery.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryCacheStoreQuery.java
@@ -408,8 +408,9 @@
                 return;
 
             List<Class<?>> classes = new ArrayList<>(cmd.length);
-            for (int i = 0; i < cmd.length; i++)
-                classes.add(cmd[i].getDescribedType());
+            for (ClassMetaData metaData : cmd) {
+                classes.add(metaData.getDescribedType());
+            }
 
             // evict from the query cache
             QueryCacheStoreQuery cq = (QueryCacheStoreQuery) q;
@@ -417,10 +418,10 @@
                 (q.getContext(), classes));
 
             // evict from the data cache
-            for (int i = 0; i < cmd.length; i++) {
-                if (cmd[i].getDataCache() != null && cmd[i].getDataCache().getEvictOnBulkUpdate())
-                    cmd[i].getDataCache().removeAll(
-                        cmd[i].getDescribedType(), true);
+            for (ClassMetaData classMetaData : cmd) {
+                if (classMetaData.getDataCache() != null && classMetaData.getDataCache().getEvictOnBulkUpdate())
+                    classMetaData.getDataCache().removeAll(
+                            classMetaData.getDescribedType(), true);
             }
         }
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryKey.java b/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryKey.java
index ca7134c..e79e86e 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryKey.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryKey.java
@@ -173,15 +173,15 @@
 
         // can't cache non-serializable non-managed complex types
         Class<?>[] types = q.getProjectionTypes();
-        for (int i = 0; i < types.length; i++) {
-            switch (JavaTypes.getTypeCode(types[i])) {
+        for (Class<?> type : types) {
+            switch (JavaTypes.getTypeCode(type)) {
                 case JavaTypes.ARRAY:
                     return null;
                 case JavaTypes.COLLECTION:
                 case JavaTypes.MAP:
                 case JavaTypes.OBJECT:
                     if (!ImplHelper.isManagedType(
-                        q.getStoreContext().getConfiguration(), types[i]))
+                            q.getStoreContext().getConfiguration(), type))
                         return null;
                     break;
             }
@@ -195,10 +195,10 @@
 
         Set<String> accessPathClassNames = new HashSet<>((int) (metas.length * 1.33 + 1));
         ClassMetaData meta;
-        for (int i = 0; i < metas.length; i++) {
+        for (ClassMetaData metaData : metas) {
             // since the class change framework deals with least-derived types,
             // record the least-derived access path types
-            meta = metas[i];
+            meta = metaData;
             accessPathClassNames.add(meta.getDescribedType().getName());
             while (meta.getPCSuperclass() != null) {
                 meta = meta.getPCSuperclassMetaData();
@@ -226,12 +226,12 @@
         if (subclasses) {
             metas = meta.getPCSubclassMetaDatas();
             int subTimeout;
-            for (int i = 0; i < metas.length; i++) {
-                if (metas[i].getDataCache() == null)
+            for (ClassMetaData classMetaData : metas) {
+                if (classMetaData.getDataCache() == null)
                     return null;
 
-                accessPathClassNames.add(metas[i].getDescribedType().getName());
-                subTimeout = metas[i].getDataCacheTimeout();
+                accessPathClassNames.add(classMetaData.getDescribedType().getName());
+                subTimeout = classMetaData.getDataCacheTimeout();
                 if (subTimeout != -1 && subTimeout < timeout)
                     timeout = subTimeout;
             }
@@ -327,8 +327,9 @@
                         if (contentsAreDates) {
                             // must go through by hand and do the
                             // copy, since Date is mutable.
-                            for (Iterator<Object> itr2 = c.iterator(); itr2.hasNext();)
-                                copy.add(((Date) itr2.next()).clone());
+                            for (Object value : c) {
+                                copy.add(((Date) value).clone());
+                            }
                         } else
                             copy.addAll(c);
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AutomaticManagedRuntime.java b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AutomaticManagedRuntime.java
index 0c8064c..bd42c39 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AutomaticManagedRuntime.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AutomaticManagedRuntime.java
@@ -208,11 +208,12 @@
 
         // try to find a jndi runtime
         JNDIManagedRuntime jmr = new JNDIManagedRuntime();
-        for (int i = 0; i < JNDI_LOCS.length; i++) {
-            jmr.setTransactionManagerName(JNDI_LOCS[i]);
+        for (String jndiLoc : JNDI_LOCS) {
+            jmr.setTransactionManagerName(jndiLoc);
             try {
                 tm = jmr.getTransactionManager();
-            } catch (Throwable t) {
+            }
+            catch (Throwable t) {
                 errors.add(t);
             }
             if (tm != null) {
@@ -223,12 +224,13 @@
 
         // look for a method runtime
         InvocationManagedRuntime imr = new InvocationManagedRuntime();
-        for (int i = 0; i < METHODS.length; i++) {
+        for (String method : METHODS) {
             imr.setConfiguration(_conf);
-            imr.setTransactionManagerMethod(METHODS[i]);
+            imr.setTransactionManagerMethod(method);
             try {
                 tm = imr.getTransactionManager();
-            } catch (Throwable t) {
+            }
+            catch (Throwable t) {
                 errors.add(t);
             }
             if (tm != null) {
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WASManagedRuntime.java b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WASManagedRuntime.java
index d53ae31..fbe3f60 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WASManagedRuntime.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WASManagedRuntime.java
@@ -391,11 +391,11 @@
         String [] interfaces = bcClass.getInterfaceNames();
 
         if(interfaces != null) {
-        	for(int i = 0; i < interfaces.length; i++) {
-        		if(interfaces[i].equals(INTERFACE)) {
-        			return;
-        		}
-        	}
+            for (String anInterface : interfaces) {
+                if (anInterface.equals(INTERFACE)) {
+                    return;
+                }
+            }
         }
         bcClass.declareInterface(INTERFACE);
         AsmAdaptor.write(bcClass);
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ApplicationIdTool.java b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ApplicationIdTool.java
index da7e481..922b558 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ApplicationIdTool.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ApplicationIdTool.java
@@ -141,9 +141,9 @@
         // in the current class
         FieldMetaData[] fields = meta.getPrimaryKeyFields();
         List decs = new ArrayList(fields.length);
-        for (int i = 0; i < fields.length; i++)
-            if (fields[i].getDeclaringType() == meta.getDescribedType())
-                decs.add(fields[i]);
+        for (FieldMetaData field : fields)
+            if (field.getDeclaringType() == meta.getDescribedType())
+                decs.add(field);
         return (FieldMetaData[]) decs.toArray(new FieldMetaData[decs.size()]);
     }
 
@@ -479,10 +479,10 @@
         CodeFormat imports = newCodeFormat();
         String base = ClassUtil.getPackageName(_meta.getObjectIdType());
         String pkg;
-        for (Iterator itr = pkgs.iterator(); itr.hasNext();) {
-            pkg = (String) itr.next();
+        for (Object o : pkgs) {
+            pkg = (String) o;
             if (pkg.length() > 0 && !"java.lang".equals(pkg)
-                && !base.equals(pkg)) {
+                    && !base.equals(pkg)) {
                 if (imports.length() > 0)
                     imports.endl();
                 imports.append("import ").append(pkg).append(".*;");
@@ -507,10 +507,10 @@
         pkgs.add("java.io");
         pkgs.add("java.util");
         Class type;
-        for (int i = 0; i < _fields.length; i++) {
-            type = _fields[i].getObjectIdFieldType();
+        for (FieldMetaData field : _fields) {
+            type = field.getObjectIdFieldType();
             if (type != byte[].class && type != char[].class
-                && !type.getName().startsWith("java.sql.")) {
+                    && !type.getName().startsWith("java.sql.")) {
                 pkgs.add(ClassUtil.getPackageName(type));
             }
         }
@@ -632,11 +632,11 @@
         code.openBrace(2).endl();
 
         // if we have any Object-type fields, die immediately
-        for (int i = 0; i < _fields.length; i++) {
-            if (_fields[i].getObjectIdFieldType() != Object.class)
+        for (FieldMetaData fieldMetaData : _fields) {
+            if (fieldMetaData.getObjectIdFieldType() != Object.class)
                 continue;
             code.tab(2).append("throw new UnsupportedOperationException").
-                parens().append(";").endl();
+                    parens().append(";").endl();
             code.closeBrace(2);
             return code.toString();
         }
@@ -659,12 +659,12 @@
             code.append(";").endl();
         }
 
-        for (int i = 0; i < _fields.length; i++) {
+        for (FieldMetaData field : _fields) {
             if (toke != null) {
                 code.tab(2).append("str = toke.nextToken").parens().
-                    append(";").endl();
+                        append(";").endl();
             }
-            code.tab(2).append(getConversionCode(_fields[i], "str")).endl();
+            code.tab(2).append(getConversionCode(field, "str")).endl();
         }
         if (_abstract || hasSuperclass)
             code.tab(2).append("return toke;").endl();
@@ -895,9 +895,9 @@
                 code.append("17;");
             code.endl();
 
-            for (int i = 0; i < _fields.length; i++) {
+            for (FieldMetaData field : _fields) {
                 code.tab(2).append("rs = rs * 37 + ");
-                appendHashCodeCode(_fields[i], code);
+                appendHashCodeCode(field, code);
                 code.append(";").endl();
             }
             code.tab(2).append("return rs;").endl();
@@ -1365,8 +1365,9 @@
                 getMetaDataFactory().newClassArgParser();
             cap.setClassLoader(loader);
             classes = new HashSet();
-            for (int i = 0; i < args.length; i++)
-                classes.addAll(Arrays.asList(cap.parseTypes(args[i])));
+            for (String arg : args) {
+                classes.addAll(Arrays.asList(cap.parseTypes(arg)));
+            }
         }
         if (flags.name != null && classes.size() > 1)
             throw new UserException(_loc.get("name-mult-args", classes));
@@ -1376,8 +1377,8 @@
         ClassMetaData meta;
         BCClassLoader bc = AccessController
             .doPrivileged(J2DoPrivHelper.newBCClassLoaderAction(new Project()));
-        for (Iterator itr = classes.iterator(); itr.hasNext();) {
-            cls = (Class) itr.next();
+        for (Object aClass : classes) {
+            cls = (Class) aClass;
             log.info(_loc.get("appid-running", cls));
 
             meta = repos.getMetaData(cls, null, false);
@@ -1391,7 +1392,8 @@
             if (tool.run()) {
                 log.info(_loc.get("appid-output", tool.getFile()));
                 tool.record();
-            } else
+            }
+            else
                 log.info(_loc.get("appid-norun"));
         }
         bc.getProject().clear();
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/CodeGenerator.java b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/CodeGenerator.java
index 53b3c75..299ee96 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/CodeGenerator.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/CodeGenerator.java
@@ -21,7 +21,6 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.Writer;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
@@ -193,10 +192,10 @@
         CodeFormat imports = newCodeFormat();
         String base = ClassUtil.getPackageName(_type);
         String pkg;
-        for (Iterator itr = pkgs.iterator(); itr.hasNext();) {
-            pkg = (String) itr.next();
+        for (Object o : pkgs) {
+            pkg = (String) o;
             if (pkg.length() > 0 && !"java.lang".equals(pkg)
-                && !base.equals(pkg)) {
+                    && !base.equals(pkg)) {
                 if (imports.length() > 0)
                     imports.endl();
                 imports.append("import ").append(pkg).append(".*;");
@@ -213,12 +212,14 @@
         pkgs.add(ClassUtil.getPackageName(_type.getSuperclass()));
 
         FieldMetaData[] fields = _meta.getDeclaredFields();
-        for (int i = 0; i < fields.length; i++)
-            pkgs.add(ClassUtil.getPackageName(fields[i].getDeclaredType()));
+        for (FieldMetaData fieldMetaData : fields) {
+            pkgs.add(ClassUtil.getPackageName(fieldMetaData.getDeclaredType()));
+        }
 
         fields = _meta.getPrimaryKeyFields();
-        for (int i = 0; i < fields.length; i++)
-            pkgs.add(ClassUtil.getPackageName(fields[i].getDeclaredType()));
+        for (FieldMetaData field : fields) {
+            pkgs.add(ClassUtil.getPackageName(field.getDeclaredType()));
+        }
 
         return pkgs;
     }
@@ -287,11 +288,13 @@
         CodeFormat code = newCodeFormat();
 
         FieldMetaData[] fields = _meta.getDeclaredFields();
-        for (int i = 0; i < fields.length; i++)
-            appendFieldCode(fields[i], decs, code);
+        for (FieldMetaData fieldMetaData : fields) {
+            appendFieldCode(fieldMetaData, decs, code);
+        }
         fields = _meta.getDeclaredUnmanagedFields();
-        for (int i = 0; i < fields.length; i++)
-            appendFieldCode(fields[i], decs, code);
+        for (FieldMetaData field : fields) {
+            appendFieldCode(field, decs, code);
+        }
         return new String[]{ decs.toString(), code.toString() };
     }
 
@@ -475,10 +478,10 @@
         int tabLevel) {
         if (ann == null || ann.size() == 0)
             return;
-        for (Iterator i = ann.iterator(); i.hasNext();) {
+        for (Object o : ann) {
             if (tabLevel > 0)
                 code.tab(tabLevel);
-            String s = (String) i.next();
+            String s = (String) o;
             code.append(s).endl();
         }
     }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/DynamicStorageGenerator.java b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/DynamicStorageGenerator.java
index 9ad81f6..9bc1fd0 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/DynamicStorageGenerator.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/DynamicStorageGenerator.java
@@ -268,8 +268,9 @@
      * Add all the typed set by index method.
      */
     private void addSetMethods(BCClass bc, int[] types, int totalObjects) {
-        for (int i = 0; i < TYPES.length; i++)
-            addSetMethod(TYPES[i], bc, types, totalObjects);
+        for (int type : TYPES) {
+            addSetMethod(type, bc, types, totalObjects);
+        }
     }
 
     /**
@@ -346,8 +347,9 @@
      * Add all typed get by index method for the given fields.
      */
     private void addGetMethods(BCClass bc, int[] types) {
-        for (int i = 0; i < TYPES.length; i++)
-            addGetMethod(TYPES[i], bc, types);
+        for (int type : TYPES) {
+            addGetMethod(type, bc, types);
+        }
     }
 
     /**
@@ -527,10 +529,10 @@
      * Get the wrapper for the given type.
      */
     protected Class getWrapper(Class c) {
-        for (int i = 0; i < WRAPPERS.length; i++) {
-            if (WRAPPERS[i][0].equals (c))
-				return WRAPPERS[i][1];
-		}
+        for (Class[] wrapper : WRAPPERS) {
+            if (wrapper[0].equals(c))
+                return wrapper[1];
+        }
 		return c;
 	}
 }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCDataGenerator.java b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCDataGenerator.java
index 0b23bb4..7845da5 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCDataGenerator.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCDataGenerator.java
@@ -20,7 +20,6 @@
 
 import java.util.BitSet;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -1022,8 +1021,8 @@
     private int countImplDataFields(ClassMetaData meta) {
         FieldMetaData[] fmds = meta.getFields();
         int count = 0;
-        for (int i = 0; i < fmds.length; i++)
-            if (usesImplData(fmds[i]))
+        for (FieldMetaData fmd : fmds)
+            if (usesImplData(fmd))
                 count++;
         return count;
     }
@@ -1051,8 +1050,9 @@
      * clearing the collection in the process.
      */
     protected void setTarget(Instruction ins, Collection<Instruction> jumps) {
-        for (Iterator<Instruction> it = jumps.iterator(); it.hasNext();)
-            ((JumpInstruction) it.next()).setTarget(ins);
+        for (Instruction jump : jumps) {
+            ((JumpInstruction) jump).setTarget(ins);
+        }
         jumps.clear();
     }
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
index c303a76..bb868dd 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
@@ -161,11 +161,12 @@
             AccessController.doPrivileged(
                 J2DoPrivHelper.getClassLoaderAction(AuxiliaryEnhancer.class)));
         List auxEnhancers = new ArrayList(classes.length);
-        for (int i = 0; i < classes.length; i++) {
+        for (Class aClass : classes) {
             try {
                 auxEnhancers.add(AccessController.doPrivileged(
-                    J2DoPrivHelper.newInstanceAction(classes[i])));
-            } catch (Throwable t) {
+                        J2DoPrivHelper.newInstanceAction(aClass)));
+            }
+            catch (Throwable t) {
                 // aux enhancer may rely on non-existant spec classes, etc
             }
         }
@@ -624,8 +625,9 @@
             record(_managedType);
         record(_pc);
         if (_oids != null)
-            for (Iterator itr = _oids.iterator(); itr.hasNext();)
-                record((BCClass) itr.next());
+            for (Object oid : _oids) {
+                record((BCClass) oid);
+            }
     }
 
     /**
@@ -657,46 +659,47 @@
         Method meth;
         BCMethod getter, setter;
         BCField returned, assigned = null;
-        for (int i = 0; i < fmds.length; i++) {
+        for (FieldMetaData fmd : fmds) {
 
-            if (!(fmds[i].getBackingMember() instanceof Method) ) {
+            if (!(fmd.getBackingMember() instanceof Method)) {
                 // If not mixed access is not defined, flag the field members,
                 // otherwise do not process them because they are valid
                 // persistent attributes.
                 if (!_meta.isMixedAccess()) {
                     addViolation("property-bad-member",
-                        new Object[]{ fmds[i], fmds[i].getBackingMember() },
-                        true);
+                            new Object[]{fmd, fmd.getBackingMember()},
+                            true);
                 }
                 continue;
             }
 
-            meth = (Method) fmds[i].getBackingMember();
+            meth = (Method) fmd.getBackingMember();
             // ##### this will fail if we override and don't call super.
             BCClass declaringType = _managedType.getProject()
-                .loadClass(fmds[i].getDeclaringType());
+                    .loadClass(fmd.getDeclaringType());
             getter = declaringType.getDeclaredMethod(meth.getName(),
-                meth.getParameterTypes());
+                    meth.getParameterTypes());
             if (getter == null) {
-                addViolation("property-no-getter", new Object[]{ fmds[i] },
-                    true);
+                addViolation("property-no-getter", new Object[]{fmd},
+                        true);
                 continue;
             }
             returned = getReturnedField(getter);
             if (returned != null)
-                registerBackingFieldInfo(fmds[i], getter, returned);
+                registerBackingFieldInfo(fmd, getter, returned);
 
-            setter = declaringType.getDeclaredMethod(getSetterName(fmds[i]),
-                new Class[]{ fmds[i].getDeclaredType() });
+            setter = declaringType.getDeclaredMethod(getSetterName(fmd),
+                    new Class[]{fmd.getDeclaredType()});
             if (setter == null) {
                 if (returned == null) {
                     addViolation("property-no-setter",
-                        new Object[]{ fmds[i] }, true);
+                            new Object[]{fmd}, true);
                     continue;
-                } else if (!getRedefine()) {
+                }
+                else if (!getRedefine()) {
                     // create synthetic setter
-                    setter = _managedType.declareMethod(getSetterName(fmds[i]),
-                        void.class, new Class[]{ fmds[i].getDeclaredType() });
+                    setter = _managedType.declareMethod(getSetterName(fmd),
+                            void.class, new Class[]{fmd.getDeclaredType()});
                     setter.makePrivate();
                     Code code = setter.getCode(true);
                     code.aload().setThis();
@@ -713,12 +716,12 @@
 
             if (assigned != null) {
                 if (setter != null)
-                    registerBackingFieldInfo(fmds[i], setter, assigned);
+                    registerBackingFieldInfo(fmd, setter, assigned);
 
                 if (assigned != returned)
                     addViolation("property-setter-getter-mismatch", new Object[]
-                        { fmds[i], assigned.getName(), (returned == null)
-                        ? null : returned.getName() }, false);
+                            {fmd, assigned.getName(), (returned == null)
+                                    ? null : returned.getName()}, false);
             }
         }
     }
@@ -779,9 +782,9 @@
 
             // case i:
             //     return <_attrsToFields.get(fmds[i].getName())>
-            for (int i = 0; i < fmds.length; i++) {
+            for (FieldMetaData fmd : fmds) {
                 tabins.addTarget(code.constant().setValue(
-                    _attrsToFields.get(fmds[i].getName())));
+                        _attrsToFields.get(fmd.getName())));
                 code.areturn();
             }
             // default: throw new IllegalArgumentException ()
@@ -956,11 +959,11 @@
         // so we don't need to worry about excluding synthetic methods.
         BCMethod[] methods = _managedType.getDeclaredMethods();
         Code code;
-        for (int i = 0; i < methods.length; i++) {
-            code = methods[i].getCode(false);
+        for (BCMethod method : methods) {
+            code = method.getCode(false);
 
             // don't modify the methods specified by the auxiliary enhancers
-            if (code != null && !skipEnhance(methods[i])) {
+            if (code != null && !skipEnhance(method)) {
                 replaceAndValidateFieldAccess(code, get, true, stat);
                 replaceAndValidateFieldAccess(code, put, false, stat);
             }
@@ -1219,12 +1222,12 @@
         }
 
         FieldMetaData[] fmds = _meta.getDeclaredFields();
-        for (int i = 0; i < fmds.length; i++) {
-            if (fmds[i].getManagement() != FieldMetaData.MANAGE_PERSISTENT)
+        for (FieldMetaData fmd : fmds) {
+            if (fmd.getManagement() != FieldMetaData.MANAGE_PERSISTENT)
                 continue;
 
             loadManagedInstance(code, false);
-            switch (fmds[i].getDeclaredTypeCode()) {
+            switch (fmd.getDeclaredTypeCode()) {
                 case JavaTypes.BOOLEAN:
                 case JavaTypes.BYTE:
                 case JavaTypes.CHAR:
@@ -1246,7 +1249,7 @@
                     break;
             }
 
-            addSetManagedValueCode(code, fmds[i]);
+            addSetManagedValueCode(code, fmd);
         }
 
         code.vreturn();
@@ -1375,15 +1378,15 @@
 
             // <field> = pcStateManager.provided<type>Field
             //     (this, fieldNumber);
-            for (int i = 0; i < fmds.length; i++) {
+            for (FieldMetaData fmd : fmds) {
                 tabins.addTarget(loadManagedInstance(code, false));
                 code.getfield().setField(SM, SMTYPE);
                 loadManagedInstance(code, false);
                 code.iload().setParam(0);
                 loadManagedInstance(code, false);
-                addGetManagedValueCode(code, fmds[i]);
+                addGetManagedValueCode(code, fmd);
                 code.invokeinterface().setMethod(getStateManagerMethod
-                    (fmds[i].getDeclaredType(), "provided", false, false));
+                        (fmd.getDeclaredType(), "provided", false, false));
                 code.vreturn();
             }
 
@@ -1426,22 +1429,22 @@
 
             // <field> = pcStateManager.replace<type>Field
             //  (this, fieldNumber);
-            for (int i = 0; i < fmds.length; i++) {
+            for (FieldMetaData fmd : fmds) {
                 // for the addSetManagedValueCode call below.
-                tabins.addTarget(loadManagedInstance(code, false, fmds[i]));
+                tabins.addTarget(loadManagedInstance(code, false, fmd));
 
-                loadManagedInstance(code, false, fmds[i]);
+                loadManagedInstance(code, false, fmd);
                 code.getfield().setField(SM, SMTYPE);
-                loadManagedInstance(code, false, fmds[i]);
+                loadManagedInstance(code, false, fmd);
                 code.iload().setParam(0);
                 code.invokeinterface().setMethod(getStateManagerMethod
-                    (fmds[i].getDeclaredType(), "replace", true, false));
-                if (!fmds[i].getDeclaredType().isPrimitive())
-                    code.checkcast().setType(fmds[i].getDeclaredType());
+                        (fmd.getDeclaredType(), "replace", true, false));
+                if (!fmd.getDeclaredType().isPrimitive())
+                    code.checkcast().setType(fmd.getDeclaredType());
 
-                addSetManagedValueCode(code, fmds[i]);
-                if(_addVersionInitFlag){
-                    if(fmds[i].isVersion()){
+                addSetManagedValueCode(code, fmd);
+                if (_addVersionInitFlag) {
+                    if (fmd.isVersion()) {
                         // If this case is setting the version field
                         // pcVersionInit = true;
                         loadManagedInstance(code, false);
@@ -1490,13 +1493,13 @@
             tabins.setLow(0);
             tabins.setHigh(fmds.length - 1);
 
-            for (int i = 0; i < fmds.length; i++) {
+            for (FieldMetaData fmd : fmds) {
                 // <field> = other.<field>;
                 // or set<field> (other.get<field>);
-                tabins.addTarget(loadManagedInstance(code, false, fmds[i]));
+                tabins.addTarget(loadManagedInstance(code, false, fmd));
                 code.aload().setParam(0);
-                addGetManagedValueCode(code, fmds[i], false);
-                addSetManagedValueCode(code, fmds[i]);
+                addGetManagedValueCode(code, fmd, false);
+                addSetManagedValueCode(code, fmd);
 
                 // break;
                 code.vreturn();
@@ -3182,15 +3185,15 @@
         // copy all the fields.
         // ##### limiting to JPA @Transient limitations
         FieldMetaData[] fmds = _meta.getFields();
-        for (int i = 0; i < fmds.length; i++) {
-            if (fmds[i].isTransient())
+        for (FieldMetaData fmd : fmds) {
+            if (fmd.isTransient())
                 continue;
             // o.<field> = this.<field> (or reflective analog)
             code.dup(); // for putfield
             code.aload().setThis(); // for getfield
-            getfield(code, _managedType, fmds[i].getName());
-            putfield(code, _managedType, fmds[i].getName(),
-                fmds[i].getDeclaredType());
+            getfield(code, _managedType, fmd.getName());
+            putfield(code, _managedType, fmd.getName(),
+                    fmd.getDeclaredType());
         }
 
         code.areturn().setType(Object.class);
@@ -3432,8 +3435,8 @@
             // if (<pk> != <default> [&& !"".equals (<pk>)])
             //		return Boolean.TRUE;
             FieldMetaData[] pks = _meta.getPrimaryKeyFields();
-            for (int i = 0; i < pks.length; i++) {
-                if (pks[i].getValueStrategy() == ValueStrategies.NONE)
+            for (FieldMetaData pk : pks) {
+                if (pk.getValueStrategy() == ValueStrategies.NONE)
                     continue;
 
                 target = loadManagedInstance(code, false);
@@ -3443,18 +3446,18 @@
                     ifins2.setTarget(target);
                 ifins2 = null;
 
-                addGetManagedValueCode(code, pks[i]);
-                ifins = ifDefaultValue(code, pks[i]);
-                if (pks[i].getDeclaredTypeCode() == JavaTypes.STRING) {
+                addGetManagedValueCode(code, pk);
+                ifins = ifDefaultValue(code, pk);
+                if (pk.getDeclaredTypeCode() == JavaTypes.STRING) {
                     code.constant().setValue("");
                     loadManagedInstance(code, false);
-                    addGetManagedValueCode(code, pks[i]);
+                    addGetManagedValueCode(code, pk);
                     code.invokevirtual().setMethod(String.class, "equals",
-                        boolean.class, new Class[]{ Object.class });
+                            boolean.class, new Class[]{Object.class});
                     ifins2 = code.ifne();
                 }
                 code.getstatic().setField(Boolean.class, "TRUE",
-                    Boolean.class);
+                        Boolean.class);
                 code.areturn();
             }
         }
@@ -3670,8 +3673,9 @@
      * Allow any registered auxiliary code generators to run.
      */
     private void runAuxiliaryEnhancers() {
-    	for (int i = 0; i < _auxEnhancers.length; i++)
-    		_auxEnhancers[i].run(_pc, _meta);
+        for (AuxiliaryEnhancer auxEnhancer : _auxEnhancers) {
+            auxEnhancer.run(_pc, _meta);
+        }
     }
 
     /**
@@ -3685,9 +3689,9 @@
         if ("<init>".equals(method.getName()))
             return true;
 
-        for (int i = 0; i < _auxEnhancers.length; i++)
-    		if (_auxEnhancers[i].skipEnhance(method))
-    			return true;
+        for (AuxiliaryEnhancer auxEnhancer : _auxEnhancers)
+            if (auxEnhancer.skipEnhance(method))
+                return true;
 
         return false;
     }
@@ -4022,11 +4026,11 @@
             BCField[] fields = AccessController
                 .doPrivileged(J2DoPrivHelper.getBCClassFieldsAction(bc,
                     fieldName));
-            for (int i = 0; i < fields.length; i++) {
-                field = fields[i];
+            for (BCField bcField : fields) {
+                field = bcField;
                 // if we reach a field declared in this type, then this is the
                 // most-masking field, and is the one that we want.
-                if (fields[i].getDeclarer() == declarer) {
+                if (bcField.getDeclarer() == declarer) {
                     break outer;
                 }
             }
@@ -4157,12 +4161,12 @@
         // create list of all unmanaged serializable fields
         BCField[] fields = _managedType.getDeclaredFields();
         Collection unmgd = new ArrayList(fields.length);
-        for (int i = 0; i < fields.length; i++) {
-            if (!fields[i].isTransient() && !fields[i].isStatic()
-                && !fields[i].isFinal()
-                && !fields[i].getName().startsWith(PRE)
-                && _meta.getDeclaredField(fields[i].getName()) == null)
-                unmgd.add(fields[i]);
+        for (BCField field : fields) {
+            if (!field.isTransient() && !field.isStatic()
+                    && !field.isFinal()
+                    && !field.getName().startsWith(PRE)
+                    && _meta.getDeclaredField(field.getName()) == null)
+                unmgd.add(field);
         }
 
         addReadExternal(parentDetachable, detachedState);
@@ -4253,10 +4257,10 @@
 
         // read managed fields
         FieldMetaData[] fmds = _meta.getDeclaredFields();
-        for (int i = 0; i < fmds.length; i++) {
-            if (!fmds[i].isTransient()) {
-                readExternal(code, fmds[i].getName(),
-                    fmds[i].getDeclaredType(), fmds[i]);
+        for (FieldMetaData fmd : fmds) {
+            if (!fmd.isTransient()) {
+                readExternal(code, fmd.getName(),
+                        fmd.getDeclaredType(), fmd);
             }
         }
 
@@ -4290,8 +4294,8 @@
 
         // read declared unmanaged serializable fields
         BCField field;
-        for (Iterator itr = unmgd.iterator(); itr.hasNext();) {
-            field = (BCField) itr.next();
+        for (Object o : unmgd) {
+            field = (BCField) o;
             readExternal(code, field.getName(), field.getType(), null);
         }
         code.vreturn();
@@ -4442,10 +4446,10 @@
         }
 
         FieldMetaData[] fmds = _meta.getDeclaredFields();
-        for (int i = 0; i < fmds.length; i++) {
-            if (!fmds[i].isTransient()) {
-                writeExternal(code, fmds[i].getName(),
-                    fmds[i].getDeclaredType(), fmds[i]);
+        for (FieldMetaData fmd : fmds) {
+            if (!fmd.isTransient()) {
+                writeExternal(code, fmd.getName(),
+                        fmd.getDeclaredType(), fmd);
             }
         }
 
@@ -4479,8 +4483,8 @@
 
         // write declared unmanaged serializable fields
         BCField field;
-        for (Iterator itr = unmgd.iterator(); itr.hasNext();) {
-            field = (BCField) itr.next();
+        for (Object o : unmgd) {
+            field = (BCField) o;
             writeExternal(code, field.getName(), field.getType(), null);
         }
         code.vreturn();
@@ -4873,8 +4877,9 @@
                 getMetaDataFactory().newClassArgParser();
             cap.setClassLoader(loader);
             classes = new HashSet();
-            for (int i = 0; i < args.length; i++)
-                classes.addAll(Arrays.asList(cap.parseTypes(args[i])));
+            for (String arg : args) {
+                classes.addAll(Arrays.asList(cap.parseTypes(arg)));
+            }
         }
 
         Project project = new Project();
@@ -4883,8 +4888,7 @@
         Collection persAwareClasses = new HashSet();
 
         int status;
-        for (Iterator itr = classes.iterator(); itr.hasNext();) {
-            Object o = itr.next();
+        for (Object o : classes) {
             if (log.isInfoEnabled())
                 log.info(_loc.get("enhance-running", o));
 
@@ -4901,13 +4905,16 @@
             if (status == ENHANCE_NONE) {
                 if (log.isTraceEnabled())
                     log.trace(_loc.get("enhance-norun"));
-            } else if (status == ENHANCE_INTERFACE) {
+            }
+            else if (status == ENHANCE_INTERFACE) {
                 if (log.isTraceEnabled())
                     log.trace(_loc.get("enhance-interface"));
-            } else if (status == ENHANCE_AWARE) {
+            }
+            else if (status == ENHANCE_AWARE) {
                 persAwareClasses.add(o);
                 enhancer.record();
-            } else {
+            }
+            else {
                 enhancer.record();
             }
             project.clear();
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCSubclassValidator.java b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCSubclassValidator.java
index a671593..cee8f03 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCSubclassValidator.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCSubclassValidator.java
@@ -142,30 +142,30 @@
     private void checkPropertiesAreInterceptable() {
         // just considers accessor methods for now.
         FieldMetaData[] fmds = meta.getFields();
-        for (int i = 0; i < fmds.length; i++) {
-            Method getter = getBackingMember(fmds[i]);
+        for (FieldMetaData fmd : fmds) {
+            Method getter = getBackingMember(fmd);
             if (getter == null) {
                 addError(loc.get("subclasser-no-getter",
-                    fmds[i].getName()), fmds[i]);
+                        fmd.getName()), fmd);
                 continue;
             }
-            BCField returnedField = checkGetterIsSubclassable(getter, fmds[i]);
+            BCField returnedField = checkGetterIsSubclassable(getter, fmd);
 
-            Method setter = setterForField(fmds[i]);
+            Method setter = setterForField(fmd);
             if (setter == null) {
-                addError(loc.get("subclasser-no-setter", fmds[i].getName()),
-                    fmds[i]);
+                addError(loc.get("subclasser-no-setter", fmd.getName()),
+                        fmd);
                 continue;
             }
-            BCField assignedField = checkSetterIsSubclassable(setter, fmds[i]);
+            BCField assignedField = checkSetterIsSubclassable(setter, fmd);
             if (assignedField == null)
                 continue;
 
             if (assignedField != returnedField)
                 addContractViolation(loc.get
-                    ("subclasser-setter-getter-field-mismatch",
-                        fmds[i].getName(), returnedField,assignedField),
-                    fmds[i]);
+                                ("subclasser-setter-getter-field-mismatch",
+                                        fmd.getName(), returnedField, assignedField),
+                        fmd);
 
             // ### scan through all the rest of the class to make sure it
             // ### doesn't use the field.
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ReflectingPersistenceCapable.java b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ReflectingPersistenceCapable.java
index 5efe72e..eed8304 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ReflectingPersistenceCapable.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ReflectingPersistenceCapable.java
@@ -141,8 +141,9 @@
 
     @Override
     public void pcProvideFields(int[] fieldIndices) {
-        for(int i = 0; i < fieldIndices.length; i++)
-            pcProvideField(fieldIndices[i]);
+        for (int fieldIndex : fieldIndices) {
+            pcProvideField(fieldIndex);
+        }
     }
 
     @Override
@@ -183,8 +184,9 @@
 
     @Override
     public void pcReplaceFields(int[] fieldIndices) {
-        for(int i = 0; i < fieldIndices.length; i++)
-            pcReplaceField(fieldIndices[i]);
+        for (int fieldIndex : fieldIndices) {
+            pcReplaceField(fieldIndex);
+        }
     }
 
     public void pcCopyField(Object fromObject, int i) {
@@ -199,8 +201,9 @@
             fromObject = ((ReflectingPersistenceCapable) fromObject)
                 .getManagedInstance();
 
-        for(int i = 0; i < fieldIndices.length; i++)
-            pcCopyField(fromObject, fieldIndices[i]);
+        for (int fieldIndex : fieldIndices) {
+            pcCopyField(fromObject, fieldIndex);
+        }
     }
 
     @Override
@@ -313,10 +316,10 @@
             target = oid;
 
         FieldMetaData[] pks = meta.getPrimaryKeyFields();
-        for (int i = 0; i < pks.length; i++) {
-            Object val = getValue(pks[i].getIndex(), o);
-            Field f = Reflection.findField(target.getClass(), pks[i].getName(),
-                true);
+        for (FieldMetaData pk : pks) {
+            Object val = getValue(pk.getIndex(), o);
+            Field f = Reflection.findField(target.getClass(), pk.getName(),
+                    true);
             Reflection.set(target, f, val);
         }
     }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java
index f0808b1..1cc05ec 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java
@@ -202,14 +202,14 @@
         Method[] methods = (Method[]) AccessController.doPrivileged(
             J2DoPrivHelper.getDeclaredMethodsAction(cls));
         Method candidate = null;
-        for (int i = 0 ; i < methods.length; i++) {
-    	    if (name.equals(methods[i].getName())) {
-                Class[] methodParams = methods[i].getParameterTypes();
+        for (Method method : methods) {
+            if (name.equals(method.getName())) {
+                Class[] methodParams = method.getParameterTypes();
                 if (param == null && methodParams.length == 0)
-                    candidate = mostDerived(methods[i], candidate);
+                    candidate = mostDerived(method, candidate);
                 else if (param != null && methodParams.length == 1
-                    && param.equals(methodParams[0]))
-                    candidate = mostDerived(methods[i], candidate);
+                        && param.equals(methodParams[0]))
+                    candidate = mostDerived(method, candidate);
             }
         }
         return candidate;
@@ -279,9 +279,9 @@
     private static Field getDeclaredField(Class cls, String name) {
         Field[] fields = AccessController.doPrivileged(
             J2DoPrivHelper.getDeclaredFieldsAction(cls));
-        for (int i = 0 ; i < fields.length; i++) {
-    	    if (name.equals(fields[i].getName()))
-		        return fields[i];
+        for (Field field : fields) {
+            if (name.equals(field.getName()))
+                return field;
         }
         return null;
     }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/event/AbstractRemoteCommitProvider.java b/openjpa-kernel/src/main/java/org/apache/openjpa/event/AbstractRemoteCommitProvider.java
index 1479a31..4ba1530 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/event/AbstractRemoteCommitProvider.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/event/AbstractRemoteCommitProvider.java
@@ -68,7 +68,8 @@
         if (es.length > 0 && log.isWarnEnabled())
             log.warn(_loc.get("remote-listener-ex", Arrays.asList(es)));
         if (log.isTraceEnabled())
-            for (int i = 0; i < es.length; i++)
-                log.trace(es[i]);
+            for (Exception e : es) {
+                log.trace(e);
+            }
     }
 }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java b/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java
index f1f4cee..77f913e 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java
@@ -117,11 +117,11 @@
         if (_classListeners == null)
             _classListeners = new HashMap<>();
         ListenerList listeners;
-        for (int i = 0; i < classes.length; i++) {
-            listeners = _classListeners.get(classes[i]);
+        for (Class<?> aClass : classes) {
+            listeners = _classListeners.get(aClass);
             if (listeners == null) {
                 listeners = new ListenerList(3);
-                _classListeners.put(classes[i], listeners);
+                _classListeners.put(aClass, listeners);
             }
             listeners.add(listener);
         }
@@ -140,9 +140,8 @@
             return;
         if (_classListeners != null) {
             ListenerList listeners;
-            for (Iterator<ListenerList> itr = _classListeners.values().iterator();
-                itr.hasNext();) {
-                listeners = itr.next();
+            for (ListenerList objects : _classListeners.values()) {
+                listeners = objects;
                 listeners.remove(listener);
             }
         }
@@ -236,8 +235,8 @@
             getCallbacks(type);
         if (callbacks.length == 0)
             return false;
-        for (int i = 0; i < callbacks.length; i++)
-            if (callbacks[i].hasCallback(source, type))
+        for (LifecycleCallbacks callback : callbacks)
+            if (callback.hasCallback(source, type))
                 return true;
         return false;
     }
@@ -325,11 +324,13 @@
             _firing = false;
             _fail = false;
             if (!_addListeners.isEmpty())
-                for (Iterator<Object> itr = _addListeners.iterator(); itr.hasNext();)
+                for (Iterator<Object> itr = _addListeners.iterator(); itr.hasNext();) {
                     addListener(itr.next(), (Class[]) itr.next());
+                }
             if (!_remListeners.isEmpty())
-                for (Iterator<Object> itr = _remListeners.iterator(); itr.hasNext();)
-                    removeListener(itr.next());
+                for (Object remListener : _remListeners) {
+                    removeListener(remListener);
+                }
             _addListeners.clear();
             _remListeners.clear();
             _exceps.clear();
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java b/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java
index e291f93..8e97929 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java
@@ -109,12 +109,12 @@
         do {
             Method[] methods = (Method[]) AccessController.doPrivileged(
                 J2DoPrivHelper.getDeclaredMethodsAction(currentClass));
-            for (int i = 0; i < methods.length; i++) {
-                if (!method.equals(methods[i].getName()))
+            for (Method value : methods) {
+                if (!method.equals(value.getName()))
                     continue;
 
-                if (isAssignable(methods[i].getParameterTypes(), args))
-                    return methods[i];
+                if (isAssignable(value.getParameterTypes(), args))
+                    return value;
             }
         } while ((currentClass = currentClass.getSuperclass()) != null);
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/event/RemoteCommitEventManager.java b/openjpa-kernel/src/main/java/org/apache/openjpa/event/RemoteCommitEventManager.java
index 0ff13c3..93ffe9f 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/event/RemoteCommitEventManager.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/event/RemoteCommitEventManager.java
@@ -22,7 +22,6 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
@@ -125,8 +124,9 @@
         if (_provider != null) {
             _provider.close();
             Collection listeners = getListeners();
-            for (Iterator itr = listeners.iterator(); itr.hasNext();)
-                ((RemoteCommitListener) itr.next()).close();
+            for (Object listener : listeners) {
+                ((RemoteCommitListener) listener).close();
+            }
         }
     }
 
@@ -192,8 +192,8 @@
             Object oid;
             Object obj;
             OpenJPAStateManager sm;
-            for (Iterator itr = trans.iterator(); itr.hasNext();) {
-                obj = itr.next();
+            for (Object tran : trans) {
+                obj = tran;
                 sm = broker.getStateManager(obj);
 
                 if (sm == null || !sm.isPersistent() || !sm.isDirty())
@@ -211,11 +211,13 @@
                     if (addClassNames == null)
                         addClassNames = new HashSet();
                     addClassNames.add(obj.getClass().getName());
-                } else if (sm.isDeleted()) {
+                }
+                else if (sm.isDeleted()) {
                     if (deletes == null)
                         deletes = new ArrayList();
                     deletes.add(oid);
-                } else {
+                }
+                else {
                     if (updates == null)
                         updates = new ArrayList();
                     updates.add(oid);
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/event/SingleJVMRemoteCommitProvider.java b/openjpa-kernel/src/main/java/org/apache/openjpa/event/SingleJVMRemoteCommitProvider.java
index 3e98de3..56c309c 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/event/SingleJVMRemoteCommitProvider.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/event/SingleJVMRemoteCommitProvider.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openjpa.event;
 
-import java.util.Iterator;
 import java.util.Set;
 
 import org.apache.openjpa.lib.util.collections.AbstractReferenceMap.ReferenceStrength;
@@ -47,8 +46,8 @@
     @Override
     public void broadcast(RemoteCommitEvent event) {
         SingleJVMRemoteCommitProvider provider;
-        for (Iterator iter = s_providers.iterator(); iter.hasNext();) {
-            provider = (SingleJVMRemoteCommitProvider) iter.next();
+        for (Object s_provider : s_providers) {
+            provider = (SingleJVMRemoteCommitProvider) s_provider;
 
             // don't notify this object -- this provider's factory
             // should not be notified of commits that originated
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
index e0c35eb..957da41 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
@@ -253,9 +253,8 @@
         }
 
         if (_transactionListeners != null && !_transactionListeners.isEmpty()) {
-            for (Iterator<Object> itr = _transactionListeners.iterator();
-                itr.hasNext(); ) {
-                broker.addTransactionListener(itr.next());
+            for (Object transactionListener : _transactionListeners) {
+                broker.addTransactionListener(transactionListener);
             }
         }
     }
@@ -287,8 +286,7 @@
                 _pcClassNames = Collections.emptyList();
             else {
                 Collection<String> c = new ArrayList<>(clss.size());
-                for (Iterator<Class<?>> itr = clss.iterator(); itr.hasNext();) {
-                    Class<?> cls = itr.next();
+                for (Class<?> cls : clss) {
                     c.add(cls.getName());
                     if (needsSub(cls))
                         toRedefine.add(cls);
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractLockManager.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractLockManager.java
index 7e2b74b..3814f84 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractLockManager.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractLockManager.java
@@ -19,7 +19,6 @@
 package org.apache.openjpa.kernel;
 
 import java.util.Collection;
-import java.util.Iterator;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
 import org.apache.openjpa.lib.log.Log;
@@ -59,8 +58,9 @@
     @Override
     public void lockAll(Collection sms, int level, int timeout,
         Object context) {
-        for (Iterator<?> itr = sms.iterator(); itr.hasNext();)
-            lock((OpenJPAStateManager) itr.next(), level, timeout, context);
+        for (Object sm : sms) {
+            lock((OpenJPAStateManager) sm, level, timeout, context);
+        }
     }
 
     /**
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractPCData.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractPCData.java
index 4e628fc..ae6ae81 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractPCData.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractPCData.java
@@ -25,7 +25,6 @@
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
 
@@ -91,9 +90,7 @@
                 Collection keys = new ArrayList (m.size());
                 Collection values = new ArrayList(m.size());
 
-                for (Iterator<Map.Entry> mi = m.entrySet().iterator();
-                    mi.hasNext();) {
-                    Map.Entry e = mi.next();
+                for (Map.Entry e : (Iterable<Map.Entry>) m.entrySet()) {
                     keys.add(e.getKey());
                     values.add(e.getValue());
                 }
@@ -170,18 +167,20 @@
         Collection ret = new ArrayList(data.size());
         switch (vmd.getDeclaredTypeCode()) {
             case JavaTypes.DATE:
-                for (Iterator itr=data.iterator(); itr.hasNext();)
-                    ret.add(((Date)itr.next()).clone());
+                for (Object item : data) {
+                    ret.add(((Date) item).clone());
+                }
                 return ret;
             case JavaTypes.LOCALE:
-                for (Iterator itr=data.iterator(); itr.hasNext();)
-                    ret.add((Locale) itr.next());
+                for (Object value : data) {
+                    ret.add((Locale) value);
+                }
                 return ret;
             case JavaTypes.PC:
                 if (vmd.isEmbedded()) {
-                    for (Iterator itr=data.iterator(); itr.hasNext();) {
-                        ret.add(toEmbeddedField(sm, vmd, itr.next(), fetch
-                            , context));
+                    for (Object datum : data) {
+                        ret.add(toEmbeddedField(sm, vmd, datum, fetch
+                                , context));
                     }
                     return ret;
                 }
@@ -189,13 +188,13 @@
             case JavaTypes.PC_UNTYPED:
                 Object[] r = toRelationFields(sm, data, fetch);
                 if (r != null) {
-                    for (int i = 0; i < r.length; i++)
-                        if (r[i] != null)
-                            ret.add(r[i]);
+                    for (Object o : r)
+                        if (o != null)
+                            ret.add(o);
                         else {
-                           ret.add(sm.getContext().getConfiguration().
-                               getOrphanedKeyActionInstance().
-                               orphan(data, sm, vmd));
+                            ret.add(sm.getContext().getConfiguration().
+                                    getOrphanedKeyActionInstance().
+                                    orphan(data, sm, vmd));
                         }
                     return ret;
                 }
@@ -252,8 +251,8 @@
                     return ProxyDataList.EMPTY_LIST;
                 ProxyDataList c2 = null;
                 int size;
-                for (Iterator ci = c.iterator(); ci.hasNext();) {
-                    val = toNestedData(fmd.getElement(), ci.next(), ctx);
+                for (Object value : c) {
+                    val = toNestedData(fmd.getElement(), value, ctx);
                     if (val == NULL)
                         return NULL;
                     if (c2 == null) {
@@ -263,7 +262,8 @@
                             ChangeTracker ct = ((Proxy) c).getChangeTracker();
                             if (ct != null)
                                 c2.nextSequence = ct.getNextSequence();
-                        } else
+                        }
+                        else
                             c2.nextSequence = size;
                     }
                     c2.add(val);
@@ -276,8 +276,8 @@
                 Map m2 = null;
                 Map.Entry e;
                 Object val2;
-                for (Iterator mi = m.entrySet().iterator(); mi.hasNext();) {
-                    e = (Map.Entry) mi.next();
+                for (Object o : m.entrySet()) {
+                    e = (Map.Entry) o;
                     val = toNestedData(fmd.getKey(), e.getKey(), ctx);
                     if (val == NULL)
                         return NULL;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachManager.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachManager.java
index 947ec12..ae332d2 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachManager.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachManager.java
@@ -166,16 +166,17 @@
      */
     private List invokeAfterAttach(List exceps) {
         Set entries = _attached.entrySet();
-        for (Iterator i = entries.iterator(); i.hasNext();) {
-            Map.Entry entry = (Map.Entry) i.next();
+        for (Object o : entries) {
+            Map.Entry entry = (Map.Entry) o;
             Object attached = entry.getValue();
             StateManagerImpl sm = _broker.getStateManagerImpl(attached, true);
             if (sm.isNew())
                 continue;
             try {
                 _broker.fireLifecycleEvent(attached, entry.getKey(),
-                    sm.getMetaData(), LifecycleEvent.AFTER_ATTACH);
-            } catch (RuntimeException re) {
+                        sm.getMetaData(), LifecycleEvent.AFTER_ATTACH);
+            }
+            catch (RuntimeException re) {
                 exceps = add(exceps, re);
                 if (_failFast && re instanceof CallbackException)
                     break;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java
index 349f244..6b3e657 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java
@@ -346,8 +346,7 @@
 
         // now add all elements that are in frmc but not toc
         if (frmc.size() != toc.size()) {
-            for (Iterator i = frmc.iterator(); i.hasNext();) {
-                Object ob = i.next();
+            for (Object ob : frmc) {
                 if (!toc.contains(ob))
                     toc.add(ob);
             }
@@ -438,10 +437,10 @@
         // the end, make the changes directly in tol
         if (frml.size() >= tol.size()) {
             Iterator frmi = frml.iterator();
-            for (Iterator toi = tol.iterator(); toi.hasNext();) {
+            for (Object o : tol) {
                 // if there's an incompatibility, just return a copy of frml
                 // (it's already copied if we attached it)
-                if (!equals(frmi.next(), toi.next(), pc))
+                if (!equals(frmi.next(), o, pc))
                     return (pc) ? frml : copyCollection(manager, frml, fmd, sm);
             }
 
@@ -475,10 +474,10 @@
 
         // make sure all the keys in the from map are in the two map, and
         // that they have the same values
-        for (Iterator i = frmm.entrySet().iterator(); i.hasNext();) {
-            Map.Entry entry = (Map.Entry) i.next();
+        for (Object o : frmm.entrySet()) {
+            Entry entry = (Entry) o;
             if (!tom.containsKey(entry.getKey())
-                || !equals(tom.get(entry.getKey()), entry.getValue(), valPC)) {
+                    || !equals(tom.get(entry.getKey()), entry.getValue(), valPC)) {
                 tom.put(entry.getKey(), entry.getValue());
             }
         }
@@ -512,8 +511,8 @@
         if (keymd.isDeclaredTypePC()) {
             map.clear();
             Object key, val;
-            for (Iterator itr = orig.entrySet().iterator(); itr.hasNext();) {
-                entry = (Map.Entry) itr.next();
+            for (Object o : orig.entrySet()) {
+                entry = (Entry) o;
                 key = entry.getKey();
                 if (keymd.getCascadeAttach() == ValueMetaData.CASCADE_NONE)
                     key = getReference(manager, key, sm, keymd);
@@ -530,13 +529,13 @@
             }
         } else {
             Object val;
-            for (Iterator itr = map.entrySet().iterator(); itr.hasNext();) {
-                entry = (Map.Entry) itr.next();
+            for (Object o : map.entrySet()) {
+                entry = (Entry) o;
                 if (valmd.getCascadeAttach() == ValueMetaData.CASCADE_NONE)
                     val = getReference(manager, entry.getValue(), sm, valmd);
                 else
                     val = manager.attach(entry.getValue(), null, sm, valmd,
-                        false);
+                            false);
                 entry.setValue(val);
             }
         }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
index 96065a8..8d3cb5c 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
@@ -1214,8 +1214,9 @@
                 if (failed != null && !failed.isEmpty()) {
                     if ((flags & OID_NOVALIDATE) != 0)
                         throw newObjectNotFoundException(failed);
-                    for (Iterator<Object> itr = failed.iterator(); itr.hasNext();)
-                        _loading.put(itr.next(), null);
+                    for (Object o : failed) {
+                        _loading.put(o, null);
+                    }
                 }
             }
 
@@ -1483,8 +1484,8 @@
 
         if (_pending != null) {
             StateManagerImpl sm;
-            for (Iterator<StateManagerImpl> it = _pending.iterator(); it.hasNext();) {
-                sm = it.next();
+            for (StateManagerImpl stateManager : _pending) {
+                sm = stateManager;
                 sm.transactional();
                 if (sm.isDirty())
                     setDirty(sm, true);
@@ -1893,8 +1894,8 @@
                 // more info per state
                 SavepointFieldManager fm;
                 StateManagerImpl sm;
-                for (Iterator<?> itr = saved.iterator(); itr.hasNext();) {
-                    fm = (SavepointFieldManager) itr.next();
+                for (Object value : saved) {
+                    fm = (SavepointFieldManager) value;
                     sm = fm.getStateManager();
                     sm.rollbackToSavepoint(fm);
                     oldTransCache.remove(sm);
@@ -1903,8 +1904,8 @@
                     else
                         newTransCache.addClean(sm);
                 }
-                for (Iterator<?> itr = oldTransCache.iterator(); itr.hasNext();) {
-                    sm = (StateManagerImpl) itr.next();
+                for (Object o : oldTransCache) {
+                    sm = (StateManagerImpl) o;
                     sm.rollback();
                     removeFromTransaction(sm);
                 }
@@ -2236,8 +2237,9 @@
         try {
             if (flush) {
                 // call pre store on all currently transactional objs
-                for (Iterator itr = transactional.iterator(); itr.hasNext();)
-                    ((StateManagerImpl) itr.next()).beforeFlush(reason, _call);
+                for (Object o : transactional) {
+                    ((StateManagerImpl) o).beforeFlush(reason, _call);
+                }
                 flushAdditions(transactional, reason);
             }
 
@@ -2318,8 +2320,8 @@
             // mark states as flushed
             if (flush) {
                 StateManagerImpl sm;
-                for (Iterator itr = transactional.iterator(); itr.hasNext();) {
-                    sm = (StateManagerImpl) itr.next();
+                for (Object o : transactional) {
+                    sm = (StateManagerImpl) o;
                     try {
                         // the state may have become transient, such as if
                         // it is embedded and the owner has been deleted during
@@ -2336,7 +2338,8 @@
                             sm.proxyFields(true, false);
                             _transCache.flushed(sm);
                         }
-                    } catch (Exception e) {
+                    }
+                    catch (Exception e) {
                         exceps = add(exceps, e);
                     }
                 }
@@ -2381,8 +2384,9 @@
             toArray(new StateManagerImpl[_transAdditions.size()]);
         _transAdditions = null;
 
-        for (int i = 0; i < states.length; i++)
-            states[i].beforeFlush(reason, _call);
+        for (StateManagerImpl state : states) {
+            state.beforeFlush(reason, _call);
+        }
         return true;
     }
 
@@ -2400,8 +2404,9 @@
             toArray(new StateManagerImpl[_derefAdditions.size()]);
         _derefAdditions = null;
 
-        for (int i = 0; i < states.length; i++)
-            deleteDeref(states[i]);
+        for (StateManagerImpl state : states) {
+            deleteDeref(state);
+        }
         return true;
     }
 
@@ -2528,29 +2533,32 @@
         // rely on rollback and commit calls below cause some instances might
         // not be transactional
         if (_derefCache != null && !_derefCache.isEmpty()) {
-            for (Iterator<StateManagerImpl> itr = _derefCache.iterator(); itr.hasNext();)
-                itr.next().setDereferencedDependent(false, false);
+            for (StateManagerImpl stateManager : _derefCache) {
+                stateManager.setDereferencedDependent(false, false);
+            }
             _derefCache = null;
         }
 
         // perform commit or rollback state transitions on each instance
         StateManagerImpl sm;
-        for (Iterator itr = transStates.iterator(); itr.hasNext();) {
-            sm = (StateManagerImpl) itr.next();
+        for (Object transState : transStates) {
+            sm = (StateManagerImpl) transState;
             try {
                 if (rollback) {
                     // tell objects that may have been derefed then flushed
                     // (and therefore deleted) to un-deref
                     sm.setDereferencedDependent(false, false);
                     sm.rollback();
-                } else {
+                }
+                else {
                     if (sm.getPCState() == PCState.PNEWDELETED || sm.getPCState() == PCState.PDELETED) {
                         fireLifecycleEvent(sm.getPersistenceCapable(), null, sm.getMetaData(),
-                            LifecycleEvent.AFTER_DELETE_PERFORMED);
+                                LifecycleEvent.AFTER_DELETE_PERFORMED);
                     }
                     sm.commit();
                 }
-            } catch (RuntimeException re) {
+            }
+            catch (RuntimeException re) {
                 exceps = add(exceps, re);
             }
         }
@@ -2659,9 +2667,9 @@
 
         boolean fatal = false;
         Throwable[] t = exceps.toArray(new Throwable[exceps.size()]);
-        for (int i = 0; i < t.length; i++) {
-            if (t[i] instanceof OpenJPAException
-                && ((OpenJPAException) t[i]).isFatal())
+        for (Throwable throwable : t) {
+            if (throwable instanceof OpenJPAException
+                    && ((OpenJPAException) throwable).isFatal())
                 fatal = true;
         }
         OpenJPAException err;
@@ -3110,14 +3118,15 @@
         try {
             assertNontransactionalRead();
 
-            for (Iterator<?> itr = objs.iterator(); itr.hasNext();)
-                gatherCascadeRefresh(itr.next(), call);
+            for (Object obj : objs) {
+                gatherCascadeRefresh(obj, call);
+            }
             if (_operating.isEmpty())
-            	return;
+                return;
             if (_operating.size() == 1)
-            	refreshInternal(_operating.iterator().next(), call);
+                refreshInternal(_operating.iterator().next(), call);
             else
-            	refreshInternal(_operating, call);
+                refreshInternal(_operating, call);
         } finally {
             endOperation();
         }
@@ -3178,33 +3187,35 @@
             Collection<OpenJPAStateManager> load = null;
             StateManagerImpl sm;
             Object obj;
-            for (Iterator<?> itr = objs.iterator(); itr.hasNext();) {
-                obj = itr.next();
+            for (Object o : objs) {
+                obj = o;
                 if (obj == null)
                     continue;
 
                 try {
                     sm = getStateManagerImpl(obj, true);
                     if ((processArgument(OpCallbacks.OP_REFRESH, obj, sm, call)
-                        & OpCallbacks.ACT_RUN) == 0)
+                            & OpCallbacks.ACT_RUN) == 0)
                         continue;
 
                     if (sm != null) {
                         if (sm.isDetached())
                             throw newDetachedException(obj, "refresh");
                         else if (sm.beforeRefresh(true)) {
-                        	if (load == null)
-                        		load = new ArrayList<>(objs.size());
+                            if (load == null)
+                                load = new ArrayList<>(objs.size());
                             load.add(sm);
                         }
                         int level = _fc.getReadLockLevel();
                         int timeout = _fc.getLockTimeout();
                         _lm.refreshLock(sm, level, timeout, null);
                         sm.readLocked(level, level);
-                    } else if (assertPersistenceCapable(obj).pcIsDetached()
-                        == Boolean.TRUE)
+                    }
+                    else if (assertPersistenceCapable(obj).pcIsDetached()
+                            == Boolean.TRUE)
                         throw newDetachedException(obj, "refresh");
-                } catch (OpenJPAException ke) {
+                }
+                catch (OpenJPAException ke) {
                     exceps = add(exceps, ke);
                 }
             }
@@ -3218,16 +3229,17 @@
 
                 // perform post-refresh transitions and make sure all fetch
                 // group fields are loaded
-                for (Iterator<OpenJPAStateManager> itr = load.iterator(); itr.hasNext();) {
-                    sm = (StateManagerImpl) itr.next();
+                for (OpenJPAStateManager openJPAStateManager : load) {
+                    sm = (StateManagerImpl) openJPAStateManager;
                     if (failed != null && failed.contains(sm.getId()))
                         continue;
 
                     try {
                         sm.afterRefresh();
                         sm.load(_fc, StateManagerImpl.LOAD_FGS, null, null,
-                            false);
-                    } catch (OpenJPAException ke) {
+                                false);
+                    }
+                    catch (OpenJPAException ke) {
                         exceps = add(exceps, ke);
                     }
                 }
@@ -3307,15 +3319,15 @@
             Collection<OpenJPAStateManager> load = null;
             StateManagerImpl sm;
             Collection<StateManagerImpl> sms = new ArrayList<>(objs.size());
-            for (Iterator<?> itr = objs.iterator(); itr.hasNext();) {
-                obj = itr.next();
+            for (Object o : objs) {
+                obj = o;
                 if (obj == null)
                     continue;
 
                 try {
                     sm = getStateManagerImpl(obj, true);
                     if ((processArgument(OpCallbacks.OP_RETRIEVE, obj, sm, call)
-                        & OpCallbacks.ACT_RUN) == 0)
+                            & OpCallbacks.ACT_RUN) == 0)
                         continue;
 
                     if (sm != null) {
@@ -3329,10 +3341,12 @@
                                 load.add(sm);
                             }
                         }
-                    } else if (assertPersistenceCapable(obj).pcIsDetached()
-                        == Boolean.TRUE)
+                    }
+                    else if (assertPersistenceCapable(obj).pcIsDetached()
+                            == Boolean.TRUE)
                         throw newDetachedException(obj, "retrieve");
-                } catch (UserException ue) {
+                }
+                catch (UserException ue) {
                     exceps = add(exceps, ue);
                 }
             }
@@ -3348,17 +3362,18 @@
             }
 
             // retrieve all non-failed instances
-            for (Iterator<StateManagerImpl> itr = sms.iterator(); itr.hasNext();) {
-                sm = itr.next();
+            for (StateManagerImpl stateManager : sms) {
+                sm = stateManager;
                 if (failed != null && failed.contains(sm.getId()))
                     continue;
 
                 int mode = (dfgOnly) ? StateManagerImpl.LOAD_FGS
-                    : StateManagerImpl.LOAD_ALL;
+                        : StateManagerImpl.LOAD_ALL;
                 try {
                     sm.beforeRead(-1);
                     sm.load(_fc, mode, null, null, false);
-                } catch (OpenJPAException ke) {
+                }
+                catch (OpenJPAException ke) {
                     exceps = add(exceps, ke);
                 }
             }
@@ -3415,8 +3430,8 @@
             // evict all PClean and PNonTrans objects
             Collection<StateManagerImpl> c = getManagedStates();
             StateManagerImpl sm;
-            for (Iterator<StateManagerImpl> itr = c.iterator(); itr.hasNext();) {
-                sm = itr.next();
+            for (StateManagerImpl stateManager : c) {
+                sm = stateManager;
                 if (sm.isPersistent() && !sm.isDirty())
                     evict(sm.getManagedInstance(), call);
             }
@@ -3455,13 +3470,13 @@
             Collection<StateManagerImpl> c = getManagedStates();
             StateManagerImpl sm;
             Class<?> cls;
-            for (Iterator<StateManagerImpl> itr = c.iterator(); itr.hasNext();) {
-                sm = itr.next();
+            for (StateManagerImpl stateManager : c) {
+                sm = stateManager;
                 if (sm.isPersistent() && !sm.isDirty()) {
                     cls = sm.getMetaData().getDescribedType();
                     if (cls == extent.getElementType()
-                        || (extent.hasSubclasses()
-                        && extent.getElementType().isAssignableFrom(cls)))
+                            || (extent.hasSubclasses()
+                            && extent.getElementType().isAssignableFrom(cls)))
                         evict(sm.getManagedInstance(), call);
                 }
             }
@@ -3734,15 +3749,15 @@
             ClassMetaData meta;
             Collection<StateManagerImpl> sms = new LinkedHashSet<>(objs.size());
             List<Exception> exceps = null;
-            for (Iterator<?> itr = objs.iterator(); itr.hasNext();) {
-                obj = itr.next();
+            for (Object o : objs) {
+                obj = o;
                 if (obj == null)
                     continue;
 
                 try {
                     sm = getStateManagerImpl(obj, true);
                     if ((processArgument(OpCallbacks.OP_TRANSACTIONAL, obj, sm,
-                        call) & OpCallbacks.ACT_RUN) == 0)
+                            call) & OpCallbacks.ACT_RUN) == 0)
                         continue;
 
                     if (sm == null) {
@@ -3750,10 +3765,11 @@
                         meta = _repo.getMetaData(obj.getClass(), _loader, true);
 
                         sm = newStateManagerImpl
-                            (StateManagerId.newInstance(this), meta);
+                                (StateManagerId.newInstance(this), meta);
                         sm.initialize(assertPersistenceCapable(obj),
-                            PCState.TCLEAN);
-                    } else if (sm.isPersistent()) {
+                                PCState.TCLEAN);
+                    }
+                    else if (sm.isPersistent()) {
                         assertActiveTransaction();
                         sms.add(sm);
                         if (sm.getPCState() == PCState.HOLLOW) {
@@ -3842,15 +3858,16 @@
         List<Exception> exceps) {
         // make instances transactional and make sure they are loaded
         StateManagerImpl sm;
-        for (Iterator<?> itr = sms.iterator(); itr.hasNext();) {
-            sm = (StateManagerImpl) itr.next();
+        for (Object o : sms) {
+            sm = (StateManagerImpl) o;
             if (failed != null && failed.contains(sm.getId()))
                 continue;
 
             try {
                 sm.transactional();
                 sm.load(_fc, StateManagerImpl.LOAD_FGS, null, null, false);
-            } catch (OpenJPAException ke) {
+            }
+            catch (OpenJPAException ke) {
                 exceps = add(exceps, ke);
             }
         }
@@ -4087,22 +4104,23 @@
             Collection<StateManagerImpl> sms = new LinkedHashSet<>(objs.size());
             Object obj;
             StateManagerImpl sm;
-            for (Iterator<?> itr = objs.iterator(); itr.hasNext();) {
-                obj = itr.next();
+            for (Object o : objs) {
+                obj = o;
                 if (obj == null)
                     continue;
 
                 sm = getStateManagerImpl(obj, true);
                 if ((processArgument(OpCallbacks.OP_LOCK, obj, sm, call)
-                    & OpCallbacks.ACT_RUN) == 0)
+                        & OpCallbacks.ACT_RUN) == 0)
                     continue;
                 if (sm != null && sm.isPersistent())
                     sms.add(sm);
             }
 
             _lm.lockAll(sms, level, timeout, null);
-            for (Iterator<StateManagerImpl> itr = sms.iterator(); itr.hasNext();)
-                itr.next().readLocked(level, level);
+            for (StateManagerImpl stateManager : sms) {
+                stateManager.readLocked(level, level);
+            }
         } catch (OpenJPAException ke) {
             throw ke;
         } catch (RuntimeException re) {
@@ -4598,11 +4616,12 @@
 
         if (_extents != null) {
             Extent e;
-            for (Iterator<?> itr = _extents.iterator(); itr.hasNext();) {
-                e = (Extent) itr.next();
+            for (Object extent : _extents) {
+                e = (Extent) extent;
                 try {
                     e.closeAll();
-                } catch (RuntimeException re) {
+                }
+                catch (RuntimeException re) {
                 }
             }
             _extents = null;
@@ -5040,11 +5059,13 @@
             // big by some
             Set copy = new LinkedHashSet(size());
             if (_dirty != null)
-                for (Iterator<StateManagerImpl> itr = _dirty.iterator(); itr.hasNext();)
-                    copy.add(itr.next());
+                for (StateManagerImpl stateManager : _dirty) {
+                    copy.add(stateManager);
+                }
             if (_clean != null)
-                for (Iterator<StateManagerImpl> itr = _clean.iterator(); itr.hasNext();)
-                    copy.add(itr.next());
+                for (StateManagerImpl stateManager : _clean) {
+                    copy.add(stateManager);
+                }
             return copy;
         }
 
@@ -5123,8 +5144,8 @@
 
         @Override
         public boolean containsAll(Collection coll) {
-            for (Iterator<?> itr = coll.iterator(); itr.hasNext();)
-                if (!contains(itr.next()))
+            for (Object o : coll)
+                if (!contains(o))
                     return false;
             return true;
         }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManager.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManager.java
index beb1c7f..5b639c0 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManager.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManager.java
@@ -329,8 +329,8 @@
         boolean failFast = false;
         try {
             Object detach;
-            for (Iterator itr = instances.iterator(); itr.hasNext();) {
-                detach = detachInternal(itr.next());
+            for (Object instance : instances) {
+                detach = detachInternal(instance);
                 if (_copy)
                     detached.add(detach);
             }
@@ -625,8 +625,9 @@
                 // equals and hashCode methods, and this ensures that pk fields
                 // are set properly if we return any partially-detached objects
                 // due to reentrant calls when traversing relations
-                for (int i = 0; i < pks.length; i++)
-                    detachField(from, pks[i].getIndex(), true);
+                for (FieldMetaData pk : pks) {
+                    detachField(from, pk.getIndex(), true);
+                }
                 detachVersion();
                 for (int i = 0; i < fmds.length; i++)
                     if (!fmds[i].isPrimaryKey() && !fmds[i].isVersion())
@@ -841,8 +842,8 @@
             if (_copy)
                 coll.clear();
             Object detached;
-            for (Iterator itr = orig.iterator(); itr.hasNext();) {
-                detached = detachInternal(itr.next());
+            for (Object o : orig) {
+                detached = detachInternal(o);
                 if (_copy)
                     coll.add(detached);
             }
@@ -867,8 +868,8 @@
                 if (_copy)
                     map.clear();
                 Object key, val;
-                for (Iterator itr = orig.entrySet().iterator(); itr.hasNext();){
-                    entry = (Map.Entry) itr.next();
+                for (Object o : orig.entrySet()) {
+                    entry = (Map.Entry) o;
                     key = entry.getKey();
                     if (keyPC)
                         key = detachInternal(key);
@@ -879,10 +880,10 @@
                         map.put(key, val);
                 }
             } else {
-                for (Iterator itr = map.entrySet().iterator(); itr.hasNext();) {
-                    entry = (Map.Entry) itr.next ();
-                    entry.setValue (detachInternal (entry.getValue ()));
-				}
+                for (Object o : map.entrySet()) {
+                    entry = (Map.Entry) o;
+                    entry.setValue(detachInternal(entry.getValue()));
+                }
 			}
 		}
 	}
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ExpressionStoreQuery.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ExpressionStoreQuery.java
index 6ac07c3..910cd50 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ExpressionStoreQuery.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ExpressionStoreQuery.java
@@ -152,9 +152,9 @@
 
     @Override
     public FilterListener getFilterListener(String tag) {
-        for (int i = 0; i < _listeners.length; i++)
-            if (_listeners[i].getTag().equals(tag))
-                return _listeners[i];
+        for (FilterListener listener : _listeners)
+            if (listener.getTag().equals(tag))
+                return listener;
         return null;
     }
 
@@ -466,8 +466,8 @@
             int low = Integer.MAX_VALUE;
             Object obj;
             int val;
-            for (Iterator itr = params.iterator(); itr.hasNext();) {
-                obj = itr.next();
+            for (Object param : params) {
+                obj = param;
                 if (!(obj instanceof Number))
                     return 0; // use 0 base when params are mixed types
 
@@ -510,9 +510,9 @@
                 return exps[0].accessPath;
 
             List<ClassMetaData> metas = null;
-            for (int i = 0; i < exps.length; i++)
+            for (QueryExpressions exp : exps)
                 metas = Filters.addAccessPathMetaDatas(metas,
-                    exps[i].accessPath);
+                        exp.accessPath);
             if (metas == null)
                 return StoreQuery.EMPTY_METAS;
             return (ClassMetaData[]) metas.toArray
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ExtentImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ExtentImpl.java
index 421a1c1..b6d51fe 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ExtentImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ExtentImpl.java
@@ -140,9 +140,9 @@
                 metas = EMPTY_METAS;
 
             ResultObjectProvider rop;
-            for (int i = 0; i < metas.length; i++) {
-                rop = _broker.getStoreManager().executeExtent(metas[i],
-                    _subs, _fc);
+            for (ClassMetaData classMetaData : metas) {
+                rop = _broker.getStoreManager().executeExtent(classMetaData,
+                        _subs, _fc);
                 if (rop != null)
                     chain.addIterator(new ResultObjectProviderIterator(rop));
             }
@@ -193,12 +193,13 @@
         lock();
         try {
             CloseableIterator citr;
-            for (Iterator itr = _openItrs.iterator(); itr.hasNext();) {
-                citr = (CloseableIterator) itr.next();
+            for (Object openItr : _openItrs) {
+                citr = (CloseableIterator) openItr;
                 citr.setRemoveOnClose(null);
                 try {
                     citr.close();
-                } catch (Exception e) {
+                }
+                catch (Exception e) {
                 }
             }
             _openItrs.clear();
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
index b73c3ef..118eacb 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
@@ -1025,8 +1025,8 @@
         || hasExtendedLookupPath(fmd))
             return true;
         String[] fgs = fmd.getCustomFetchGroups();
-        for (int i = 0; i < fgs.length; i++)
-            if (hasFetchGroup(fgs[i]))
+        for (String fg : fgs)
+            if (hasFetchGroup(fg))
                 return true;
         return false;
     }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Filters.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Filters.java
index 879226a..1afa7f2 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Filters.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Filters.java
@@ -832,18 +832,19 @@
         // at least it's n^2 of a small n...
         ClassMetaData meta;
         boolean add;
-        for (int i = 0; i < path.length; i++) {
+        for (ClassMetaData classMetaData : path) {
             add = true;
             for (int j = 0; add && j < last; j++) {
                 meta = metas.get(j);
 
-                if (meta.getDescribedType().isAssignableFrom(path[i].getDescribedType())) {
+                if (meta.getDescribedType().isAssignableFrom(classMetaData.getDescribedType())) {
                     // list already contains base class
                     add = false;
-                } else if (path[i].getDescribedType().isAssignableFrom(meta.getDescribedType())) {
+                }
+                else if (classMetaData.getDescribedType().isAssignableFrom(meta.getDescribedType())) {
                     // this element replaces its subclass
                     add = false;
-                    metas.set(j, path[i]);
+                    metas.set(j, classMetaData);
                 }
             }
 
@@ -851,7 +852,7 @@
             // list and path element didn't replace a subclass in the
             // list, then add it now as a new base
             if (add)
-                metas.add(path[i]);
+                metas.add(classMetaData);
         }
         return metas;
     }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/InverseManager.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/InverseManager.java
index c71dd14..529a1ba 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/InverseManager.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/InverseManager.java
@@ -19,7 +19,6 @@
 package org.apache.openjpa.kernel;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
@@ -162,10 +161,9 @@
                         value, fmd, inverses);
                     break;
                 case JavaTypes.COLLECTION:
-                    for (Iterator itr = ((Collection) value).iterator();
-                        itr.hasNext();)
+                    for (Object o : (Collection) value)
                         createInverseRelations(ctx, sm.getManagedInstance(),
-                            itr.next(), fmd, inverses);
+                                o, fmd, inverses);
                     break;
             }
         }
@@ -184,27 +182,27 @@
             return;
 
         boolean owned;
-        for (int i = 0; i < inverses.length; i++) {
-            if (!getManageLRS() && inverses[i].isLRS())
+        for (FieldMetaData invers : inverses) {
+            if (!getManageLRS() && invers.isLRS())
                 continue;
 
             // if this is the owned side of the relation and has not yet been
             // loaded, no point in setting it now, cause it'll have the correct
             // value the next time it is loaded after the flush
-            owned = fmd == inverses[i].getMappedByMetaData()
-                && _action == ACTION_MANAGE
-                && !isLoaded(other, inverses[i].getIndex());
+            owned = fmd == invers.getMappedByMetaData()
+                    && _action == ACTION_MANAGE
+                    && !isLoaded(other, invers.getIndex());
 
-            switch (inverses[i].getDeclaredTypeCode()) {
+            switch (invers.getDeclaredTypeCode()) {
                 case JavaTypes.PC:
-                    if (!owned || inverses[i].getCascadeDelete()
-                        == ValueMetaData.CASCADE_AUTO)
-                        storeField(other, inverses[i], NONE, fromRef);
+                    if (!owned || invers.getCascadeDelete()
+                            == ValueMetaData.CASCADE_AUTO)
+                        storeField(other, invers, NONE, fromRef);
                     break;
                 case JavaTypes.COLLECTION:
-                    if (!owned || inverses[i].getElement().getCascadeDelete()
-                        == ValueMetaData.CASCADE_AUTO)
-                        addToCollection(other, inverses[i], fromRef);
+                    if (!owned || invers.getElement().getCascadeDelete()
+                            == ValueMetaData.CASCADE_AUTO)
+                        addToCollection(other, invers, fromRef);
                     break;
             }
         }
@@ -266,8 +264,8 @@
             else if (newValue instanceof Map)
                 coll = ((Map)newValue).values();
             Object elem;
-            for (Iterator itr = initial.iterator(); itr.hasNext();) {
-                elem = itr.next();
+            for (Object o : initial) {
+                elem = o;
                 if (coll == null || !coll.contains(elem))
                     clearInverseRelations(sm, elem, fmd, inverses);
             }
@@ -287,28 +285,28 @@
             return;
 
         boolean owned;
-        for (int i = 0; i < inverses.length; i++) {
-            if (!getManageLRS() && inverses[i].isLRS())
+        for (FieldMetaData invers : inverses) {
+            if (!getManageLRS() && invers.isLRS())
                 continue;
 
             // if this is the owned side of the relation and has not yet been
             // loaded, no point in setting it now, cause it'll have the correct
             // value the next time it is loaded after the flush
-            owned = fmd == inverses[i].getMappedByMetaData()
-                && _action == ACTION_MANAGE
-                && !isLoaded(other, inverses[i].getIndex());
+            owned = fmd == invers.getMappedByMetaData()
+                    && _action == ACTION_MANAGE
+                    && !isLoaded(other, invers.getIndex());
 
-            switch (inverses[i].getDeclaredTypeCode()) {
+            switch (invers.getDeclaredTypeCode()) {
                 case JavaTypes.PC:
-                    if (!owned || inverses[i].getCascadeDelete()
-                        == ValueMetaData.CASCADE_AUTO)
-                        storeNull(other, inverses[i], sm.getManagedInstance());
+                    if (!owned || invers.getCascadeDelete()
+                            == ValueMetaData.CASCADE_AUTO)
+                        storeNull(other, invers, sm.getManagedInstance());
                     break;
                 case JavaTypes.COLLECTION:
-                    if (!owned || inverses[i].getElement().getCascadeDelete()
-                        == ValueMetaData.CASCADE_AUTO)
-                        removeFromCollection(other, inverses[i],
-                            sm.getManagedInstance());
+                    if (!owned || invers.getElement().getCascadeDelete()
+                            == ValueMetaData.CASCADE_AUTO)
+                        removeFromCollection(other, invers,
+                                sm.getManagedInstance());
                     break;
             }
         }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/MethodStoreQuery.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/MethodStoreQuery.java
index dceaedc..644fb96 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/MethodStoreQuery.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/MethodStoreQuery.java
@@ -302,8 +302,8 @@
             int low = Integer.MAX_VALUE;
             Object obj;
             int val;
-            for (Iterator itr = params.iterator(); itr.hasNext();) {
-                obj = itr.next();
+            for (Object param : params) {
+                obj = param;
                 if (!(obj instanceof Number))
                     return 0; // use 0 base when params are mixed types
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java
index a8cd1ba..99a3629 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java
@@ -264,9 +264,9 @@
         // check user-defined listeners from configuration
         FilterListener[] confListeners = _broker.getConfiguration().
             getFilterListenerInstances();
-        for (int i = 0; i < confListeners.length; i++)
-            if (confListeners[i].getTag().equals(tag))
-                return confListeners[i];
+        for (FilterListener confListener : confListeners)
+            if (confListener.getTag().equals(tag))
+                return confListener;
 
         // check store listeners
         return _storeQuery.getFilterListener(tag);
@@ -320,9 +320,9 @@
         // check user-defined listeners from configuration
         AggregateListener[] confListeners = _broker.getConfiguration().
             getAggregateListenerInstances();
-        for (int i = 0; i < confListeners.length; i++)
-            if (confListeners[i].getTag().equals(tag))
-                return confListeners[i];
+        for (AggregateListener confListener : confListeners)
+            if (confListener.getTag().equals(tag))
+                return confListener;
 
         // check store listeners
         return _storeQuery.getAggregateListener(tag);
@@ -1137,9 +1137,8 @@
      * @param params the parameters passed to the query
      */
     private void updateInMemory(Object ob, Object[] params, StoreQuery q) {
-        for (Iterator it = getUpdates().entrySet().iterator();
-            it.hasNext();) {
-            Map.Entry e = (Map.Entry) it.next();
+        for (Object o : getUpdates().entrySet()) {
+            Entry e = (Entry) o;
             Path path = (Path) e.getKey();
             FieldMetaData fmd = path.last();
             OpenJPAStateManager sm = _broker.getStateManager(ob);
@@ -1148,15 +1147,19 @@
             Object value = e.getValue();
             if (value instanceof Val) {
                 val = ((Val) value).
-                    evaluate(ob, null, getStoreContext(), params);
-            } else if (value instanceof Literal) {
+                        evaluate(ob, null, getStoreContext(), params);
+            }
+            else if (value instanceof Literal) {
                 val = ((Literal) value).getValue();
-            } else if (value instanceof Constant) {
+            }
+            else if (value instanceof Constant) {
                 val = ((Constant) value).getValue(params);
-            } else {
+            }
+            else {
                 try {
                     val = q.evaluate(value, ob, params, sm);
-                } catch (UnsupportedException e1) {
+                }
+                catch (UnsupportedException e1) {
                     throw new UserException(
                             _loc.get("fail-to-get-update-value"));
                 }
@@ -1164,47 +1167,47 @@
 
             int i = fmd.getIndex();
             PersistenceCapable into = ImplHelper.toPersistenceCapable(ob,
-                _broker.getConfiguration());
+                    _broker.getConfiguration());
 
             // set the actual field in the instance
             int set = OpenJPAStateManager.SET_USER;
             switch (fmd.getDeclaredTypeCode()) {
                 case JavaTypes.BOOLEAN:
                     sm.settingBooleanField(into, i, sm.fetchBooleanField(i),
-                        val == null ? false : (Boolean) val,
-                        set);
+                            val == null ? false : (Boolean) val,
+                            set);
                     break;
                 case JavaTypes.BYTE:
                     sm.settingByteField(into, i, sm.fetchByteField(i),
-                        val == null ? 0 : ((Number) val).byteValue(), set);
+                            val == null ? 0 : ((Number) val).byteValue(), set);
                     break;
                 case JavaTypes.CHAR:
                     sm.settingCharField(into, i, sm.fetchCharField(i),
-                        val == null ? 0 : val.toString().charAt(0), set);
+                            val == null ? 0 : val.toString().charAt(0), set);
                     break;
                 case JavaTypes.DOUBLE:
                     sm.settingDoubleField(into, i, sm.fetchDoubleField(i),
-                        val == null ? 0 : ((Number) val).doubleValue(), set);
+                            val == null ? 0 : ((Number) val).doubleValue(), set);
                     break;
                 case JavaTypes.FLOAT:
                     sm.settingFloatField(into, i, sm.fetchFloatField(i),
-                        val == null ? 0 : ((Number) val).floatValue(), set);
+                            val == null ? 0 : ((Number) val).floatValue(), set);
                     break;
                 case JavaTypes.INT:
                     sm.settingIntField(into, i, sm.fetchIntField(i),
-                        val == null ? 0 : ((Number) val).intValue(), set);
+                            val == null ? 0 : ((Number) val).intValue(), set);
                     break;
                 case JavaTypes.LONG:
                     sm.settingLongField(into, i, sm.fetchLongField(i),
-                        val == null ? 0 : ((Number) val).longValue(), set);
+                            val == null ? 0 : ((Number) val).longValue(), set);
                     break;
                 case JavaTypes.SHORT:
                     sm.settingShortField(into, i, sm.fetchShortField(i),
-                        val == null ? 0 : ((Number) val).shortValue(), set);
+                            val == null ? 0 : ((Number) val).shortValue(), set);
                     break;
                 case JavaTypes.STRING:
                     sm.settingStringField(into, i, sm.fetchStringField(i),
-                        val == null ? null : val.toString(), set);
+                            val == null ? null : val.toString(), set);
                     break;
                 case JavaTypes.DATE:
                 case JavaTypes.NUMBER:
@@ -1223,7 +1226,7 @@
                 case JavaTypes.OID:
                 case JavaTypes.ENUM:
                     sm.settingObjectField(into, i, sm.fetchObjectField(i), val,
-                        set);
+                            set);
                     break;
                 default:
                     throw new UserException(_loc.get("only-update-primitives"));
@@ -1239,8 +1242,9 @@
         if (params.length > 0) {
             if (types != null && types.size() == params.length) {
                 int i = 0;
-                for (Iterator<Object> itr = types.keySet().iterator(); itr.hasNext();)
-                    pmap.put(itr.next(), params[i++]);
+                for (Object o : types.keySet()) {
+                    pmap.put(o, params[i++]);
+                }
             } else {
                 for (int i = 0; i < params.length; i++)
                     pmap.put(String.valueOf(i), params[i]);
@@ -1432,24 +1436,24 @@
 
         // compare dirty classes to the access path classes
         Class<?> accClass;
-        for (int i = 0; i < accessMetas.length; i++) {
-            if (accessMetas[i] == null)
+        for (ClassMetaData accessMeta : accessMetas) {
+            if (accessMeta == null)
                 continue;
             // shortcut if actual class is dirty
-            accClass = accessMetas[i].getDescribedType();
+            accClass = accessMeta.getDescribedType();
             if (persisted.contains(accClass) || updated.contains(accClass)
-                || deleted.contains(accClass))
+                    || deleted.contains(accClass))
                 return true;
 
             // check for dirty subclass
-            for (Iterator<Class<?>> dirty = persisted.iterator(); dirty.hasNext();)
-                if (accClass.isAssignableFrom(dirty.next()))
+            for (Class<?> item : persisted)
+                if (accClass.isAssignableFrom(item))
                     return true;
-            for (Iterator<Class<?>> dirty = updated.iterator(); dirty.hasNext();)
-                if (accClass.isAssignableFrom(dirty.next()))
+            for (Class<?> value : updated)
+                if (accClass.isAssignableFrom(value))
                     return true;
-            for (Iterator<Class<?>> dirty = deleted.iterator(); dirty.hasNext();)
-                if (accClass.isAssignableFrom(dirty.next()))
+            for (Class<?> aClass : deleted)
+                if (accClass.isAssignableFrom(aClass))
                     return true;
         }
 
@@ -1476,8 +1480,8 @@
             assertOpen();
 
             RemoveOnCloseResultList res;
-            for (Iterator<RemoveOnCloseResultList> itr = _resultLists.iterator(); itr.hasNext();) {
-                res = itr.next();
+            for (RemoveOnCloseResultList resultList : _resultLists) {
+                res = resultList;
                 if (force || res.isProviderOpen())
                     res.close(false);
             }
@@ -1738,8 +1742,8 @@
         if (imports != null && imports.length > 0) {
             String dotName = "." + name;
             String importName;
-            for (int i = 0; i < imports.length; i++) {
-                importName = imports[i];
+            for (String anImport : imports) {
+                importName = anImport;
 
                 // full class name import
                 if (importName.endsWith(dotName))
@@ -1747,7 +1751,7 @@
                     // wildcard; strip to package
                 else if (importName.endsWith(".*")) {
                     importName = importName.substring
-                        (0, importName.length() - 1);
+                            (0, importName.length() - 1);
                     type = toClass(importName + name);
                 }
                 if (type != null)
@@ -2004,16 +2008,18 @@
         @Override
         public Number executeDelete(StoreQuery q, Object[] params) {
             long num = 0;
-            for (int i = 0; i < _executors.length; i++)
-                num += _executors[i].executeDelete(q, params).longValue();
+            for (StoreQuery.Executor executor : _executors) {
+                num += executor.executeDelete(q, params).longValue();
+            }
             return num;
         }
 
         @Override
         public Number executeUpdate(StoreQuery q, Object[] params) {
             long num = 0;
-            for (int i = 0; i < _executors.length; i++)
-                num += _executors[i].executeUpdate(q, params).longValue();
+            for (StoreQuery.Executor executor : _executors) {
+                num += executor.executeUpdate(q, params).longValue();
+            }
             return num;
         }
 
@@ -2026,8 +2032,8 @@
             List results = new ArrayList(_executors.length);
             StoreQuery.Range ropRange = new StoreQuery.Range(0L, range.end);
             String[] actions;
-            for (int i = 0; i < _executors.length; i++) {
-                actions = _executors[i].getDataStoreActions(q, params,ropRange);
+            for (StoreQuery.Executor executor : _executors) {
+                actions = executor.getDataStoreActions(q, params, ropRange);
                 if (actions != null && actions.length > 0)
                     results.addAll(Arrays.asList(actions));
             }
@@ -2096,9 +2102,9 @@
 
             // create set of base class metadatas in access path
             List metas = null;
-            for (int i = 0; i < _executors.length; i++)
-                metas = Filters.addAccessPathMetaDatas(metas, _executors[i].
-                    getAccessPathMetaDatas(q));
+            for (StoreQuery.Executor executor : _executors)
+                metas = Filters.addAccessPathMetaDatas(metas, executor.
+                        getAccessPathMetaDatas(q));
             if (metas == null)
                 return StoreQuery.EMPTY_METAS;
             return (ClassMetaData[]) metas.toArray
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryLanguages.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryLanguages.java
index a89114a..d18aa20 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryLanguages.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryLanguages.java
@@ -45,14 +45,16 @@
             ExpressionParser.class,
             AccessController.doPrivileged(
                 J2DoPrivHelper.getClassLoaderAction(ExpressionParser.class)));
-        for (int i = 0; i < classes.length; i++) {
+        for (Class aClass : classes) {
             ExpressionParser ep;
             try {
                 ep = (ExpressionParser) AccessController.doPrivileged(
-                    J2DoPrivHelper.newInstanceAction(classes[i]));
-            } catch (PrivilegedActionException pae) {
+                        J2DoPrivHelper.newInstanceAction(aClass));
+            }
+            catch (PrivilegedActionException pae) {
                 throw new InternalException(pae.getException());
-            } catch (InstantiationException | IllegalAccessException e) {
+            }
+            catch (InstantiationException | IllegalAccessException e) {
                 throw new InternalException(e);
             }
             _expressionParsers.put(ep.getLanguage(), ep);
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ResultPacker.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ResultPacker.java
index 4dc3180..813556f 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ResultPacker.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ResultPacker.java
@@ -312,23 +312,23 @@
 
         // check public fields first
         Field field = null;
-        for (int i = 0; i < fields.length; i++) {
+        for (Field item : fields) {
             // if we find a field with the exact name, either return it
             // if it's the right type or give up if it's not
-            if (fields[i].getName().equals(alias)) {
+            if (item.getName().equals(alias)) {
                 if (type == null
-                    || Filters.canConvert(type, fields[i].getType(), true))
-                    return fields[i];
+                        || Filters.canConvert(type, item.getType(), true))
+                    return item;
                 break;
             }
 
             // otherwise if we find a field with the right name but the
             // wrong case, record it and if we don't find an exact match
             // for a field or setter we'll use it
-            if (field == null && fields[i].getName().equalsIgnoreCase(alias)
-                && (type == null
-                || Filters.canConvert(type, fields[i].getType(), true)))
-                field = fields[i];
+            if (field == null && item.getName().equalsIgnoreCase(alias)
+                    && (type == null
+                    || Filters.canConvert(type, item.getType(), true)))
+                field = item;
         }
 
         // check setter methods
@@ -336,10 +336,10 @@
         Method method = null;
         boolean eqName = false;
         Class<?>[] params;
-        for (int i = 0; i < methods.length; i++) {
-            if (!methods[i].getName().equalsIgnoreCase(setName))
+        for (Method value : methods) {
+            if (!value.getName().equalsIgnoreCase(setName))
                 continue;
-            params = methods[i].getParameterTypes();
+            params = value.getParameterTypes();
             if (params.length != 1)
                 continue;
 
@@ -349,21 +349,22 @@
                 // don't find an exact type match later, we'll use it.  if
                 // the names are not an exact match, only record this setter
                 // if we haven't found any others that match at all
-                if (methods[i].getName().equals(setName)) {
+                if (value.getName().equals(setName)) {
                     eqName = true;
-                    method = methods[i];
-                } else if (method == null)
-                    method = methods[i];
-            } else
-            if (type == null || Filters.canConvert(type, params[0], true)) {
+                    method = value;
+                }
+                else if (method == null)
+                    method = value;
+            }
+            else if (type == null || Filters.canConvert(type, params[0], true)) {
                 // we found a setter with the right type; now see if the name
                 // is an exact match.  if so, return the setter.  if not,
                 // record the setter only if we haven't found a generic one
                 // with an exact name match
-                if (methods[i].getName().equals(setName))
-                    return methods[i];
+                if (value.getName().equals(setName))
+                    return value;
                 if (method == null || !eqName)
-                    method = methods[i];
+                    method = value;
             }
         }
 
@@ -379,15 +380,15 @@
      */
     private static Method findPut(Method[] methods) {
         Class<?>[] params;
-        for (int i = 0; i < methods.length; i++) {
-            if (!methods[i].getName().equals("put"))
+        for (Method method : methods) {
+            if (!method.getName().equals("put"))
                 continue;
 
-            params = methods[i].getParameterTypes();
+            params = method.getParameterTypes();
             if (params.length == 2
-                && params[0] == Object.class
-                && params[1] == Object.class)
-                return methods[i];
+                    && params[0] == Object.class
+                    && params[1] == Object.class)
+                return method;
         }
 		return null;
 	}
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/SingleFieldManager.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/SingleFieldManager.java
index 2281921..776de66 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/SingleFieldManager.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/SingleFieldManager.java
@@ -26,7 +26,6 @@
 import java.util.Calendar;
 import java.util.Collection;
 import java.util.Date;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.TimeZone;
 
@@ -232,16 +231,18 @@
      * Release the given embedded objects.
      */
     private void releaseEmbedded(ValueMetaData vmd, Object[] objs) {
-        for (int i = 0; i < objs.length; i++)
-            releaseEmbedded(vmd, objs[i]);
+        for (Object obj : objs) {
+            releaseEmbedded(vmd, obj);
+        }
     }
 
     /**
      * Release the given embedded objects.
      */
     private void releaseEmbedded(ValueMetaData vmd, Collection objs) {
-        for (Iterator itr = objs.iterator(); itr.hasNext();)
-            releaseEmbedded(vmd, itr.next());
+        for (Object obj : objs) {
+            releaseEmbedded(vmd, obj);
+        }
     }
 
     /**
@@ -386,16 +387,18 @@
      * Delete the objects in the given value.
      */
     private void delete(ValueMetaData vmd, Object[] objs, OpCallbacks call) {
-        for (int i = 0; i < objs.length; i++)
-            delete(vmd, objs[i], call);
+        for (Object obj : objs) {
+            delete(vmd, obj, call);
+        }
     }
 
     /**
      * Delete the objects embedded in the given value.
      */
     private void delete(ValueMetaData vmd, Collection objs, OpCallbacks call) {
-        for (Iterator itr = objs.iterator(); itr.hasNext();)
-            delete(vmd, itr.next(), call);
+        for (Object obj : objs) {
+            delete(vmd, obj, call);
+        }
     }
 
     /**
@@ -417,16 +420,18 @@
      * Dereference all valid persistent objects in the given collection.
      */
     private void dereferenceDependent(Object[] objs) {
-        for (int i = 0; i < objs.length; i++)
-            dereferenceDependent(objs[i]);
+        for (Object obj : objs) {
+            dereferenceDependent(obj);
+        }
     }
 
     /**
      * Dereference all valid persistent objects in the given collection.
      */
     private void dereferenceDependent(Collection objs) {
-        for (Iterator itr = objs.iterator(); itr.hasNext();)
-            dereferenceDependent(itr.next());
+        for (Object obj : objs) {
+            dereferenceDependent(obj);
+        }
     }
 
     /**
@@ -441,7 +446,7 @@
     }
 
     void dereferenceEmbedDependent(StateManagerImpl sm) {
-    	sm.setDereferencedEmbedDependent(true);
+        sm.setDereferencedEmbedDependent(true);
     }
 
     /**
@@ -480,16 +485,18 @@
      * Gather each element.
      */
     private void gatherCascadeRefresh(Object[] arr, OpCallbacks call) {
-        for (int i = 0; i < arr.length; i++)
-            _broker.gatherCascadeRefresh(arr[i], call);
+        for (Object o : arr) {
+            _broker.gatherCascadeRefresh(o, call);
+        }
     }
 
     /**
      * Gather each element.
      */
     private void gatherCascadeRefresh(Collection coll, OpCallbacks call) {
-        for (Iterator itr = coll.iterator(); itr.hasNext();)
-            _broker.gatherCascadeRefresh(itr.next(), call);
+        for (Object o : coll) {
+            _broker.gatherCascadeRefresh(o, call);
+        }
     }
 
     /**
@@ -741,8 +748,9 @@
      */
     private void preFlushPCs(ValueMetaData vmd, Collection keys, Map map,
         boolean logical, OpCallbacks call) {
-        for (Iterator itr = keys.iterator(); itr.hasNext();)
-            preFlushPC(vmd, map.get(itr.next()), logical, call);
+        for (Object key : keys) {
+            preFlushPC(vmd, map.get(key), logical, call);
+        }
     }
 
     /**
@@ -751,8 +759,9 @@
      */
     private void preFlushPCs(ValueMetaData vmd, Object[] objs,
         boolean logical, OpCallbacks call) {
-        for (int i = 0; i < objs.length; i++)
-            preFlushPC(vmd, objs[i], logical, call);
+        for (Object obj : objs) {
+            preFlushPC(vmd, obj, logical, call);
+        }
     }
 
     /**
@@ -761,8 +770,9 @@
      */
     private void preFlushPCs(ValueMetaData vmd, Collection objs,
         boolean logical, OpCallbacks call) {
-        for (Iterator itr = objs.iterator(); itr.hasNext();)
-            preFlushPC(vmd, itr.next(), logical, call);
+        for (Object obj : objs) {
+            preFlushPC(vmd, obj, logical, call);
+        }
     }
 
     /**
@@ -852,8 +862,9 @@
             coll = (Collection) _sm.newFieldProxy(vmd.getFieldMetaData().getIndex());
         }
         coll.clear();
-        for (Iterator itr = orig.iterator(); itr.hasNext();)
-            coll.add(embed(vmd, itr.next()));
+        for (Object o : orig) {
+            coll.add(embed(vmd, o));
+        }
         return coll;
     }
 
@@ -879,8 +890,8 @@
             }
             map.clear();
             Object key, val;
-            for (Iterator itr = orig.entrySet().iterator(); itr.hasNext();) {
-                entry = (Map.Entry) itr.next();
+            for (Object o : orig.entrySet()) {
+                entry = (Map.Entry) o;
                 key = embed(fmd.getKey(), entry.getKey());
                 val = entry.getValue();
                 if (valEmbed)
@@ -889,10 +900,10 @@
             }
         } else {
             map = orig;
-            for (Iterator itr = map.entrySet().iterator(); itr.hasNext();) {
-                entry = (Map.Entry) itr.next();
+            for (Object o : map.entrySet()) {
+                entry = (Map.Entry) o;
                 entry.setValue(embed(fmd.getElement(),
-                    entry.getValue()));
+                        entry.getValue()));
             }
         }
         return map;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
index e9dfca8..a9e619b 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
@@ -33,7 +33,6 @@
 import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Objects;
 import java.util.TimeZone;
@@ -1630,8 +1629,8 @@
 
     private boolean hasGeneratedKey() {
         FieldMetaData[] pkFields = _meta.getPrimaryKeyFields();
-        for (int i = 0; i < pkFields.length; i++) {
-            if (pkFields[i].getValueStrategy() == ValueStrategies.AUTOASSIGN)
+        for (FieldMetaData pkField : pkFields) {
+            if (pkField.getValueStrategy() == ValueStrategies.AUTOASSIGN)
                 return true;
         }
         return false;
@@ -3454,13 +3453,12 @@
                 && postLoad(FetchGroup.NAME_DEFAULT, fetch))
                 return;
             String[] fgs = fmd.getCustomFetchGroups();
-            for (int i = 0; i < fgs.length; i++)
-                if (fetch.hasFetchGroup(fgs[i]) && postLoad(fgs[i], fetch))
+            for (String fg : fgs)
+                if (fetch.hasFetchGroup(fg) && postLoad(fg, fetch))
                     return;
         } else {
-            for (Iterator itr = fetch.getFetchGroups().iterator();
-                itr.hasNext();) {
-                if (postLoad((String) itr.next(), fetch))
+            for (String s : fetch.getFetchGroups()) {
+                if (postLoad(s, fetch))
                     return;
             }
         }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/VersionAttachStrategy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/VersionAttachStrategy.java
index 4eecec6..163960a 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/VersionAttachStrategy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/VersionAttachStrategy.java
@@ -20,7 +20,6 @@
 
 import java.lang.reflect.Field;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.openjpa.enhance.PersistenceCapable;
@@ -155,18 +154,18 @@
         FetchConfiguration fetch = broker.getFetchConfiguration();
         try {
             FieldMetaData[] fmds = sm.getMetaData().getFields();
-            for (int i = 0; i < fmds.length; i++) {
+            for (FieldMetaData fmd : fmds) {
                 switch (detach) {
                     case DETACH_ALL:
-                        attachField(manager, toAttach, sm, fmds[i], true);
+                        attachField(manager, toAttach, sm, fmd, true);
                         break;
                     case DETACH_FETCH_GROUPS:
-                        if (fetch.requiresFetch(fmds[i])
-                            != FetchConfiguration.FETCH_NONE)
-                            attachField(manager, toAttach, sm, fmds[i], true);
+                        if (fetch.requiresFetch(fmd)
+                                != FetchConfiguration.FETCH_NONE)
+                            attachField(manager, toAttach, sm, fmd, true);
                         break;
                     case DETACH_LOADED:
-                        attachField(manager, toAttach, sm, fmds[i], false);
+                        attachField(manager, toAttach, sm, fmd, false);
                         break;
                 }
             }
@@ -319,8 +318,8 @@
         if (fmd.getElement().isEmbedded())
             copy = (Collection) sm.newFieldProxy(fmd.getIndex());
         else {
-            for (Iterator itr = coll.iterator(); itr.hasNext();) {
-                if (manager.getBroker().isDetached(itr.next())) {
+            for (Object o : coll) {
+                if (manager.getBroker().isDetached(o)) {
                     copy = (Collection) sm.newFieldProxy(fmd.getIndex());
                     break;
                 }
@@ -328,9 +327,9 @@
         }
 
         Object attached;
-        for (Iterator itr = coll.iterator(); itr.hasNext();) {
+        for (Object o : coll) {
             attached = attachInPlace(manager, sm, fmd.getElement(),
-                itr.next());
+                    o);
             if (copy != null)
                 copy.add(attached);
         }
@@ -355,11 +354,11 @@
         if (fmd.getKey().isEmbeddedPC() || fmd.getElement().isEmbeddedPC())
             copy = (Map) sm.newFieldProxy(fmd.getIndex());
         else {
-            for (Iterator itr = map.entrySet().iterator(); itr.hasNext();) {
-                entry = (Map.Entry) itr.next();
+            for (Object o : map.entrySet()) {
+                entry = (Map.Entry) o;
                 if ((keyPC && manager.getBroker().isDetached(entry.getKey()))
-                    || (valPC && manager.getBroker().isDetached
-                    (entry.getValue()))) {
+                        || (valPC && manager.getBroker().isDetached
+                        (entry.getValue()))) {
                     copy = (Map) sm.newFieldProxy(fmd.getIndex());
                     break;
                 }
@@ -367,8 +366,8 @@
         }
 
         Object key, val;
-        for (Iterator itr = map.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : map.entrySet()) {
+            entry = (Map.Entry) o;
             key = entry.getKey();
             if (keyPC)
                 key = attachInPlace(manager, sm, fmd.getKey(), key);
@@ -408,8 +407,8 @@
 
     private boolean isPrimaryKeysGenerated(ClassMetaData meta) {
         FieldMetaData[] pks = meta.getPrimaryKeyFields();
-        for (int i = 0; i < pks.length; i++) {
-            if (pks[i].getValueStrategy() != ValueStrategies.NONE)
+        for (FieldMetaData pk : pks) {
+            if (pk.getValueStrategy() != ValueStrategies.NONE)
                 return true;
         }
         return false;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Args.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Args.java
index 75fc807..296326a 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Args.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Args.java
@@ -89,8 +89,9 @@
     @Override
     public void acceptVisit(ExpressionVisitor visitor) {
         visitor.enter(this);
-        for (int i = 0; i < _args.size(); i++)
-            ((Val) _args.get(i)).acceptVisit(visitor);
+        for (Value arg : _args) {
+            ((Val) arg).acceptVisit(visitor);
+        }
         visitor.exit(this);
     }
 }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Avg.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Avg.java
index 464f3b3..d39c7ea 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Avg.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Avg.java
@@ -19,7 +19,6 @@
 package org.apache.openjpa.kernel.exps;
 
 import java.util.Collection;
-import java.util.Iterator;
 
 import org.apache.openjpa.kernel.Filters;
 
@@ -54,8 +53,8 @@
         Object sum = Filters.convert(0, c);
         Object cur;
         int size = 0;
-        for (Iterator itr = os.iterator(); itr.hasNext();) {
-            cur = itr.next();
+        for (Object o : os) {
+            cur = o;
             if (cur == null)
                 continue;
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/BindVariableAndExpression.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/BindVariableAndExpression.java
index 9b6132e..ce441db 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/BindVariableAndExpression.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/BindVariableAndExpression.java
@@ -19,7 +19,6 @@
 package org.apache.openjpa.kernel.exps;
 
 import java.util.Collection;
-import java.util.Iterator;
 
 import org.apache.openjpa.kernel.StoreContext;
 
@@ -64,8 +63,8 @@
 
         // the subtree is true if true for any variable in the collection
         BoundVariable var = bind.getVariable();
-        for (Iterator itr = vals.iterator(); itr.hasNext();) {
-            if (!var.setValue(itr.next()))
+        for (Object val : vals) {
+            if (!var.setValue(val))
                 continue;
             if (getExpression2().evaluate(candidate, orig, ctx, params))
                 return true;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CandidatePath.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CandidatePath.java
index 8c88f1c..5aba2c6 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CandidatePath.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CandidatePath.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openjpa.kernel.exps;
 
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.ListIterator;
 import java.util.Objects;
@@ -113,13 +112,13 @@
         Object action;
         OpenJPAStateManager sm;
         Broker tmpBroker = null;
-        for (Iterator itr = _actions.iterator(); itr.hasNext();) {
-            action = itr.next();
+        for (Object o : _actions) {
+            action = o;
 
             // fail on null value
             if (candidate == null) {
                 if (action instanceof Traversal
-                    && ((Traversal) action).nullTraversal)
+                        && ((Traversal) action).nullTraversal)
                     return null;
                 throw new NullPointerException();
             }
@@ -136,8 +135,8 @@
             tmpBroker = null;
             if (ImplHelper.isManageable(candidate))
                 sm = (OpenJPAStateManager) (ImplHelper.toPersistenceCapable(
-                    candidate, ctx.getConfiguration())).
-                    pcGetStateManager();
+                        candidate, ctx.getConfiguration())).
+                        pcGetStateManager();
             if (sm == null) {
                 tmpBroker = ctx.getBroker();
                 tmpBroker.transactional(candidate, false, null);
@@ -148,7 +147,8 @@
                 // get the specified field value and switch candidate
                 Traversal traversal = (Traversal) action;
                 candidate = sm.fetchField(traversal.field.getIndex(), true);
-            } finally {
+            }
+            finally {
                 // transactional does not clear the state, which is
                 // important since tmpCandidate might be also managed by
                 // another broker if it's a proxied non-pc instance
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Cast.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Cast.java
index f5567d4..a84483f 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Cast.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Cast.java
@@ -20,7 +20,6 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Iterator;
 
 import org.apache.openjpa.kernel.Filters;
 import org.apache.openjpa.kernel.StoreContext;
@@ -69,8 +68,9 @@
             return res;
 
         Collection casts = new ArrayList(res.size());
-        for (Iterator itr = res.iterator(); itr.hasNext();)
-            casts.add(Filters.convert(itr.next(), _cast));
+        for (Object re : res) {
+            casts.add(Filters.convert(re, _cast));
+        }
         return casts;
     }
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Coalesce.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Coalesce.java
index fc8e287..cfec7b0 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Coalesce.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Coalesce.java
@@ -94,8 +94,9 @@
     @Override
     public void acceptVisit(ExpressionVisitor visitor) {
         visitor.enter(this);
-        for (int i = 0; i < _val.length; i++)
-            _val[i].acceptVisit(visitor);
+        for (Val val : _val) {
+            val.acceptVisit(visitor);
+        }
         visitor.exit(this);
     }
 }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Count.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Count.java
index 8ec8c05..115b1f8 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Count.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Count.java
@@ -19,7 +19,6 @@
 package org.apache.openjpa.kernel.exps;
 
 import java.util.Collection;
-import java.util.Iterator;
 
 
 /**
@@ -48,8 +47,8 @@
     @Override
     protected Object operate(Collection os, Class c) {
         long count = 0;
-        for (Iterator itr = os.iterator(); itr.hasNext();)
-            if (itr.next() != null)
+        for (Object o : os)
+            if (o != null)
                 count++;
         return count;
     }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/GeneralCase.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/GeneralCase.java
index 894b76a..8fb8a19 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/GeneralCase.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/GeneralCase.java
@@ -47,13 +47,13 @@
     @Override
     protected Object eval(Object candidate, Object orig, StoreContext ctx,
         Object[] params) {
-        for (int i = 0; i < _exp.length; i++) {
-            boolean compare = ((WhenCondition) _exp[i]).getExp().
-                eval(candidate, orig, ctx, params);
+        for (Exp exp : _exp) {
+            boolean compare = ((WhenCondition) exp).getExp().
+                    eval(candidate, orig, ctx, params);
 
             if (compare)
-                return ((WhenCondition) _exp[i]).getVal().
-                    eval(candidate, orig, ctx, params);
+                return ((WhenCondition) exp).getVal().
+                        eval(candidate, orig, ctx, params);
             else
                 continue;
         }
@@ -63,13 +63,13 @@
     protected Object eval(Object candidate,StoreContext ctx,
         Object[] params) {
 
-        for (int i = 0; i < _exp.length; i++) {
-            boolean compare = ((WhenCondition) _exp[i]).getExp().
-                eval(candidate, null, ctx, params);
+        for (Exp exp : _exp) {
+            boolean compare = ((WhenCondition) exp).getExp().
+                    eval(candidate, null, ctx, params);
 
             if (compare)
-                return ((WhenCondition) _exp[i]).getVal().
-                    eval(candidate, null, ctx, params);
+                return ((WhenCondition) exp).getVal().
+                        eval(candidate, null, ctx, params);
             else
                 continue;
         }
@@ -79,8 +79,8 @@
     @Override
     public Class getType() {
         Class c1 = _val.getType();
-        for (int i = 0; i < _exp.length; i++) {
-            Class c2 = ((WhenCondition) _exp[i]).getVal().getType();
+        for (Exp exp : _exp) {
+            Class c2 = ((WhenCondition) exp).getVal().getType();
             c1 = Filters.promote(c1, c2);
         }
         return c1;
@@ -93,8 +93,9 @@
     @Override
     public void acceptVisit(ExpressionVisitor visitor) {
         visitor.enter(this);
-        for (int i = 0; i < _exp.length; i++)
-            _exp[i].acceptVisit(visitor);
+        for (Exp exp : _exp) {
+            exp.acceptVisit(visitor);
+        }
         _val.acceptVisit(visitor);
         visitor.exit(this);
     }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/InMemoryExpressionFactory.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/InMemoryExpressionFactory.java
index cb771c7..8e83bbe 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/InMemoryExpressionFactory.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/InMemoryExpressionFactory.java
@@ -134,12 +134,12 @@
         List group = null;
         Object pc;
         boolean eq;
-        for (Iterator itr = matches.iterator(); itr.hasNext();) {
-            pc = itr.next();
+        for (Object match : matches) {
+            pc = match;
             eq = true;
             for (int i = 0; i < exps.grouping.length; i++) {
                 curs[i] = ((Val) exps.grouping[i]).evaluate(pc, pc, ctx,
-                    params);
+                        params);
                 eq = eq && Objects.equals(prevs[i], curs[i]);
             }
 
@@ -231,9 +231,9 @@
 
         // evaluate each candidate
         List projected = new ArrayList(matches.size());
-        for (Iterator itr = matches.iterator(); itr.hasNext();)
-            projected.add(project(itr.next(), exps, exps.grouping.length > 0,
-                ctx, params));
+        for (Object match : matches)
+            projected.add(project(match, exps, exps.grouping.length > 0,
+                    ctx, params));
         return projected;
     }
 
@@ -754,8 +754,9 @@
         @Override
         public int hashCode() {
             int rs = 17;
-            for (int i = 0; i < _arr.length; i++)
-                rs = 37 * rs + ((_arr[i] == null) ? 0 : _arr[i].hashCode());
+            for (Object o : _arr) {
+                rs = 37 * rs + ((o == null) ? 0 : o.hashCode());
+            }
             return rs;
         }
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Max.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Max.java
index 2939691..c3dec6e 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Max.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Max.java
@@ -19,7 +19,6 @@
 package org.apache.openjpa.kernel.exps;
 
 import java.util.Collection;
-import java.util.Iterator;
 
 /**
  * Find the max.
@@ -48,8 +47,8 @@
     protected Object operate(Collection os, Class c) {
         Comparable max = null;
         Comparable cur;
-        for (Iterator itr = os.iterator(); itr.hasNext();) {
-            cur = (Comparable) itr.next();
+        for (Object o : os) {
+            cur = (Comparable) o;
             if (cur != null && (max == null || max.compareTo(cur) < 0))
                 max = cur;
         }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Min.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Min.java
index 97a7024..623b79e 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Min.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Min.java
@@ -19,7 +19,6 @@
 package org.apache.openjpa.kernel.exps;
 
 import java.util.Collection;
-import java.util.Iterator;
 
 /**
  * Find the min.
@@ -48,8 +47,8 @@
     protected Object operate(Collection os, Class c) {
         Comparable min = null;
         Comparable cur;
-        for (Iterator itr = os.iterator(); itr.hasNext();) {
-            cur = (Comparable) itr.next();
+        for (Object o : os) {
+            cur = (Comparable) o;
             if (cur != null && (min == null || min.compareTo(cur) > 0))
                 min = cur;
         }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/SimpleCase.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/SimpleCase.java
index 4cf3aaa..5ffbe71 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/SimpleCase.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/SimpleCase.java
@@ -43,17 +43,17 @@
     protected Object eval(Object candidate, Object orig, StoreContext ctx,
         Object[] params) {
         Object o1 = _caseOperand.eval(candidate, orig, ctx, params);
-        for (int i = 0; i < _exp.length; i++) {
-            Object o2 = ((WhenScalar) _exp[i]).getVal1().
-                eval(candidate, orig, ctx, params);
+        for (Exp exp : _exp) {
+            Object o2 = ((WhenScalar) exp).getVal1().
+                    eval(candidate, orig, ctx, params);
             if (o1 != null && o2 != null) {
                 Class c = Filters.promote(o1.getClass(), o2.getClass());
                 o1 = Filters.convert(o1, c);
                 o2 = Filters.convert(o2, c);
             }
             if (compare(o1, o2))
-                return ((WhenScalar) _exp[i]).getVal2().
-                    eval(candidate, orig, ctx, params);
+                return ((WhenScalar) exp).getVal2().
+                        eval(candidate, orig, ctx, params);
             else
                 continue;
         }
@@ -63,17 +63,17 @@
     protected Object eval(Object candidate,StoreContext ctx,
             Object[] params) {
         Object o1 = _caseOperand.eval(candidate, null, ctx, params);
-        for (int i = 0; i < _exp.length; i++) {
-            Object o2 = ((WhenScalar) _exp[i]).getVal1().
-                eval(candidate, null, ctx, params);
+        for (Exp exp : _exp) {
+            Object o2 = ((WhenScalar) exp).getVal1().
+                    eval(candidate, null, ctx, params);
             if (o1 != null && o2 != null) {
                 Class c = Filters.promote(o1.getClass(), o2.getClass());
                 o1 = Filters.convert(o1, c);
                 o2 = Filters.convert(o2, c);
             }
             if (compare(o1, o2))
-                return ((WhenScalar) _exp[i]).getVal2().
-                    eval(candidate, null, ctx, params);
+                return ((WhenScalar) exp).getVal2().
+                        eval(candidate, null, ctx, params);
             else
                 continue;
         }
@@ -91,8 +91,8 @@
     @Override
     public Class getType() {
         Class c1 = _val.getType();
-        for (int i = 0; i < _exp.length; i++) {
-            Class c2 = ((WhenScalar) _exp[i]).getVal1().getType();
+        for (Exp exp : _exp) {
+            Class c2 = ((WhenScalar) exp).getVal1().getType();
             c1 = Filters.promote(c1, c2);
         }
         return c1;
@@ -106,8 +106,9 @@
     public void acceptVisit(ExpressionVisitor visitor) {
         visitor.enter(this);
         _caseOperand.acceptVisit(visitor);
-        for (int i = 0; i < _exp.length; i++)
-            _exp[i].acceptVisit(visitor);
+        for (Exp exp : _exp) {
+            exp.acceptVisit(visitor);
+        }
         _val.acceptVisit(visitor);
         visitor.exit(this);
     }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Sum.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Sum.java
index e2dac71..fc89bd7 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Sum.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Sum.java
@@ -19,7 +19,6 @@
 package org.apache.openjpa.kernel.exps;
 
 import java.util.Collection;
-import java.util.Iterator;
 
 import org.apache.openjpa.kernel.Filters;
 
@@ -59,8 +58,8 @@
         Class type = getType(c);
         Object sum = Filters.convert(0, type);
         Object cur;
-        for (Iterator itr = os.iterator(); itr.hasNext();) {
-            cur = itr.next();
+        for (Object o : os) {
+            cur = o;
             if (cur != null)
                 sum = Filters.add(sum, type, cur, c);
         }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Val.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Val.java
index 1d3425a..a9ccc14 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Val.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Val.java
@@ -20,7 +20,6 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.openjpa.kernel.StoreContext;
@@ -84,10 +83,10 @@
         StoreContext ctx, Object[] params) {
         Collection ret = new ArrayList(candidates.size());
         Object candidate;
-        for (Iterator itr = candidates.iterator(); itr.hasNext();) {
-            candidate = itr.next();
+        for (Object o : candidates) {
+            candidate = o;
             ret.add(evaluate(candidate, (orig == null) ? candidate : orig,
-                ctx, params));
+                    ctx, params));
         }
         return ret;
     }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java
index 97db506..fb7af42 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java
@@ -2395,8 +2395,7 @@
             out.println(toString(prefix)
                 + (text && this.text != null ? " [" + this.text + "]" : ""));
             if (children != null) {
-                for (int i = 0; i < children.length; ++i) {
-                    JPQLNode n = children[i];
+                for (JPQLNode n : children) {
                     if (n != null) {
                         n.dump(out, prefix + " ", text);
                     }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractCFMetaDataFactory.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractCFMetaDataFactory.java
index 1200e24..673410d 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractCFMetaDataFactory.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractCFMetaDataFactory.java
@@ -35,7 +35,6 @@
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -106,8 +105,8 @@
             this.files = new HashSet<>((int) (strs.length * 1.33 + 1));
 
             File file;
-            for (int i = 0; i < strs.length; i++) {
-                file = new File(strs[i]);
+            for (String str : strs) {
+                file = new File(str);
                 if (AccessController.doPrivileged(
                         J2DoPrivHelper.existsAction(file)))
                     this.files.add(file);
@@ -133,8 +132,9 @@
             String[] strs = StringUtil.split(urls, ";", 0);
             this.urls = new HashSet<>((int) (strs.length * 1.33 + 1));
             try {
-                for (int i = 0; i < strs.length; i++)
-                    this.urls.add(new URL(strs[i]));
+                for (String str : strs) {
+                    this.urls.add(new URL(str));
+                }
             } catch (MalformedURLException mue) {
                 throw new UserException(mue);
             }
@@ -191,9 +191,9 @@
             getClassResolverInstance().getClassLoader(cls, null);
         Map<String,ClassMetaData> clsNames = new HashMap<>
         	((int) (metas.length * 1.33 + 1));
-        for (int i = 0; i < metas.length; i++)
-            clsNames.put(metas[i].getDescribedType().getName(), metas[i]);
-
+        for (ClassMetaData classMetaData : metas) {
+            clsNames.put(classMetaData.getDescribedType().getName(), classMetaData);
+        }
         // assign default files if in metadata mode (in other modes we assume
         // the files would have to be read already to create the metadatas)
         Set metaFiles = null;
@@ -230,15 +230,15 @@
                 ser.addAll(pr);
             }
 
-            for (int i = 0; i < metas.length; i++)
-                ser.addMetaData(metas[i]);
+            for (ClassMetaData meta : metas) ser.addMetaData(meta);
             if ((mode & MODE_MAPPING) != 0)
-                for (int i = 0; i < seqs.length; i++)
-                    ser.addSequenceMetaData(seqs[i]);
-            for (int i = 0; i < queries.length; i++)
-                if (queries[i].getSourceMode() != MODE_QUERY
-                    && (queries[i].getSourceMode() & mode) != 0)
-                    ser.addQueryMetaData(queries[i]);
+                for (SequenceMetaData seq : seqs) {
+                    ser.addSequenceMetaData(seq);
+                }
+            for (QueryMetaData query : queries)
+                if (query.getSourceMode() != MODE_QUERY
+                        && (query.getSourceMode() & mode) != 0)
+                    ser.addQueryMetaData(query);
 
             int flags = MetaDataSerializer.PRETTY;
             if ((store & STORE_VERBOSE) != 0)
@@ -264,9 +264,9 @@
                     parse(parser, queryFiles);
                     ser.addAll(parser.getRepository());
                 }
-                for (int i = 0; i < queries.length; i++)
-                    if (queries[i].getSourceMode() == MODE_QUERY)
-                        ser.addQueryMetaData(queries[i]);
+                for (QueryMetaData query : queries)
+                    if (query.getSourceMode() == MODE_QUERY)
+                        ser.addQueryMetaData(query);
                 serialize(ser, output, MetaDataSerializer.PRETTY);
             }
         }
@@ -302,12 +302,12 @@
         if ((mode & (MODE_META | MODE_MAPPING)) != 0) {
             clsNames = new HashSet((int) (cls.length * 1.33 + 1));
             ClassMetaData meta;
-            for (int i = 0; i < cls.length; i++) {
-                if (cls[i] == null)
+            for (Class cl : cls) {
+                if (cl == null)
                     clsNames.add(null);
                 else
-                    clsNames.add(cls[i].getName());
-                meta = pr.getMetaData(cls[i], envLoader, false);
+                    clsNames.add(cl.getName());
+                meta = pr.getMetaData(cl, envLoader, false);
                 if (meta != null) {
                     if (getSourceFile(meta) != null)
                         files.add(getSourceFile(meta));
@@ -325,17 +325,17 @@
             ? null : new ArrayList();
         boolean rem;
         Class def;
-        for (int i = 0; i < queries.length; i++) {
-            if (!isMappingOnlyFactory() && queries[i].getSourceFile() != null)
-                files.add(queries[i].getSourceFile());
-            def = queries[i].getDefiningType();
-            rem = (queries[i].getSourceMode() & mode) != 0
-                && clsNames.contains((def == null) ? null : def.getName());
+        for (QueryMetaData query : queries) {
+            if (!isMappingOnlyFactory() && query.getSourceFile() != null)
+                files.add(query.getSourceFile());
+            def = query.getDefiningType();
+            rem = (query.getSourceMode() & mode) != 0
+                    && clsNames.contains((def == null) ? null : def.getName());
             if (rem || (!isMappingOnlyFactory()
-                && queries[i].getSourceMode() == MODE_QUERY))
-                pr.removeQueryMetaData(queries[i]);
-            if (qqs != null && queries[i].getSourceMode() == MODE_QUERY && !rem)
-                qqs.add(queries[i]);
+                    && query.getSourceMode() == MODE_QUERY))
+                pr.removeQueryMetaData(query);
+            if (qqs != null && query.getSourceMode() == MODE_QUERY && !rem)
+                qqs.add(query);
         }
 
         // write new metadata without removed instances
@@ -348,16 +348,17 @@
             // remove from serializer rather than from repository above so that
             // calling code can take advantage of metadata still in repos
             if (isMappingOnlyFactory())
-                for (int i = 0; i < cls.length; i++)
-                    ser.removeMetaData(pr.getMetaData(cls[i], envLoader,
-                        false));
+                for (Class cl : cls)
+                    ser.removeMetaData(pr.getMetaData(cl, envLoader,
+                            false));
             serialize(ser, null, MetaDataSerializer.PRETTY);
         }
         if (qqs != null && !qqs.isEmpty()) {
             ser = newSerializer();
             ser.setMode(MODE_QUERY);
-            for (int i = 0; i < qqs.size(); i++)
-                ser.addQueryMetaData((QueryMetaData) qqs.get(i));
+            for (Object qq : qqs) {
+                ser.addQueryMetaData((QueryMetaData) qq);
+            }
             serialize(ser, null, MetaDataSerializer.PRETTY);
         }
         return true;
@@ -374,42 +375,42 @@
         QueryMetaData[] queries, SequenceMetaData[] seqs, int mode,
         Map clsNames) {
         Set files = null;
-        for (int i = 0; i < metas.length; i++) {
-            if (getSourceFile(metas[i]) == null)
-                setSourceFile(metas[i], defaultSourceFile(metas[i]));
+        for (ClassMetaData meta : metas) {
+            if (getSourceFile(meta) == null)
+                setSourceFile(meta, defaultSourceFile(meta));
             if (AccessController.doPrivileged(J2DoPrivHelper
-                    .existsAction(getSourceFile(metas[i])))) {
+                    .existsAction(getSourceFile(meta)))) {
                 if (files == null)
                     files = new HashSet();
-                files.add(getSourceFile(metas[i]));
+                files.add(getSourceFile(meta));
             }
         }
-        for (int i = 0; i < queries.length; i++) {
-            if (queries[i].getSourceMode() == MODE_QUERY
-                || (mode & queries[i].getSourceMode()) == 0)
+        for (QueryMetaData query : queries) {
+            if (query.getSourceMode() == MODE_QUERY
+                    || (mode & query.getSourceMode()) == 0)
                 continue;
-            if (queries[i].getSourceFile() == null) {
-                File defaultFile = defaultSourceFile(queries[i], clsNames);
-                queries[i].setSource(defaultFile, queries[i].getSourceScope(), queries[i].getSourceType(),
-                    defaultFile == null ? "" : defaultFile.getPath());
+            if (query.getSourceFile() == null) {
+                File defaultFile = defaultSourceFile(query, clsNames);
+                query.setSource(defaultFile, query.getSourceScope(), query.getSourceType(),
+                        defaultFile == null ? "" : defaultFile.getPath());
             }
             if (AccessController.doPrivileged(
-                    J2DoPrivHelper.existsAction(queries[i].getSourceFile()))) {
+                    J2DoPrivHelper.existsAction(query.getSourceFile()))) {
                 if (files == null)
                     files = new HashSet();
-                files.add(queries[i].getSourceFile());
+                files.add(query.getSourceFile());
             }
         }
         if ((mode & MODE_MAPPING) != 0) {
-            for (int i = 0; i < seqs.length; i++) {
-                if (getSourceFile(seqs[i]) == null)
-                    setSourceFile(seqs[i], defaultSourceFile(seqs[i],
-                        clsNames));
+            for (SequenceMetaData seq : seqs) {
+                if (getSourceFile(seq) == null)
+                    setSourceFile(seq, defaultSourceFile(seq,
+                            clsNames));
                 if (AccessController.doPrivileged(
-                        J2DoPrivHelper.existsAction(getSourceFile(seqs[i])))) {
+                        J2DoPrivHelper.existsAction(getSourceFile(seq)))) {
                     if (files == null)
                         files = new HashSet();
-                    files.add(getSourceFile(seqs[i]));
+                    files.add(getSourceFile(seq));
                 }
             }
         }
@@ -426,19 +427,19 @@
     private Set assignDefaultQueryFiles(QueryMetaData[] queries,
         Map clsNames) {
         Set files = null;
-        for (int i = 0; i < queries.length; i++) {
-            if (queries[i].getSourceMode() != MODE_QUERY)
+        for (QueryMetaData query : queries) {
+            if (query.getSourceMode() != MODE_QUERY)
                 continue;
-            if (queries[i].getSourceFile() == null) {
-                File defaultFile = defaultSourceFile(queries[i], clsNames);
-                queries[i].setSource(defaultFile, queries[i].getSourceScope(), queries[i].getSourceType(),
-                    defaultFile == null ? "" : defaultFile.getPath());
+            if (query.getSourceFile() == null) {
+                File defaultFile = defaultSourceFile(query, clsNames);
+                query.setSource(defaultFile, query.getSourceScope(), query.getSourceType(),
+                        defaultFile == null ? "" : defaultFile.getPath());
             }
             if (AccessController.doPrivileged(
-                    J2DoPrivHelper.existsAction(queries[i].getSourceFile()))) {
+                    J2DoPrivHelper.existsAction(query.getSourceFile()))) {
                 if (files == null)
                     files = new HashSet();
-                files.add(queries[i].getSourceFile());
+                files.add(query.getSourceFile());
             }
         }
         return files;
@@ -457,8 +458,9 @@
      */
     protected void parse(MetaDataParser parser, Collection files) {
         try {
-            for (Iterator itr = files.iterator(); itr.hasNext();)
-                parser.parse((File) itr.next());
+            for (Object file : files) {
+                parser.parse((File) file);
+            }
         } catch (IOException ioe) {
             throw new GeneralException(ioe);
         }
@@ -469,8 +471,9 @@
      */
     protected void parse(MetaDataParser parser, Class[] cls) {
         try {
-            for (int i = 0; i < cls.length; i++)
-                parser.parse(cls[i], isParseTopDown());
+            for (Class cl : cls) {
+                parser.parse(cl, isParseTopDown());
+            }
         } catch (IOException ioe) {
             throw new GeneralException(ioe);
         }
@@ -503,11 +506,11 @@
      */
     protected void backupAndDelete(Collection files) {
         File file;
-        for (Iterator itr = files.iterator(); itr.hasNext();) {
-            file = (File) itr.next();
+        for (Object o : files) {
+            file = (File) o;
             if (Files.backup(file, false) != null)
                 AccessController
-                    .doPrivileged(J2DoPrivHelper.deleteAction(file));
+                        .doPrivileged(J2DoPrivHelper.deleteAction(file));
         }
     }
 
@@ -596,8 +599,8 @@
 
         Map.Entry entry;
         String pkg;
-        for (Iterator itr = clsNames.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : clsNames.entrySet()) {
+            entry = (Map.Entry) o;
             pkg = ClassUtil.getPackageName((String) entry.getKey());
             if (pkg.length() == 0)
                 return (ClassMetaData) entry.getValue();
@@ -645,42 +648,46 @@
         Set<String> names = new HashSet<>();
         if (files != null) {
             File file;
-            for (Iterator itr = files.iterator(); itr.hasNext();) {
-                file = (File) itr.next();
+            for (File value : files) {
+                file = value;
                 if (AccessController.doPrivileged(J2DoPrivHelper
                         .isDirectoryAction(file))) {
                     if (log.isTraceEnabled())
                         log.trace(_loc.get("scanning-directory", file));
                     scan(new FileMetaDataIterator(file, newMetaDataFilter()),
-                        cparser, names, true, file);
-                } else if (file.getName().endsWith(".jar")) {
+                            cparser, names, true, file);
+                }
+                else if (file.getName().endsWith(".jar")) {
                     if (log.isTraceEnabled())
                         log.trace(_loc.get("scanning-jar", file));
                     try {
                         ZipFile zFile = AccessController
-                            .doPrivileged(J2DoPrivHelper
-                                .newZipFileAction(file));
+                                .doPrivileged(J2DoPrivHelper
+                                        .newZipFileAction(file));
                         scan(new ZipFileMetaDataIterator(zFile,
-                            newMetaDataFilter()), cparser, names, true, file);
-                    } catch (PrivilegedActionException pae) {
+                                newMetaDataFilter()), cparser, names, true, file);
+                    }
+                    catch (PrivilegedActionException pae) {
                         throw (IOException) pae.getException();
                     }
-                } else {
+                }
+                else {
                     if (log.isTraceEnabled())
                         log.trace(_loc.get("scanning-file", file));
                     clss = cparser.parseTypeNames(new FileMetaDataIterator
-                        (file));
+                            (file));
                     List<String> newNames = Arrays.asList(clss);
                     if (log.isTraceEnabled())
                         log.trace(_loc.get("scan-found-names", newNames, file));
                     names.addAll(newNames);
                     File f = AccessController
-                        .doPrivileged(J2DoPrivHelper
-                            .getAbsoluteFileAction(file));
+                            .doPrivileged(J2DoPrivHelper
+                                    .getAbsoluteFileAction(file));
                     try {
                         mapPersistentTypeNames(AccessController
-                            .doPrivileged(J2DoPrivHelper.toURLAction(f)), clss);
-                    } catch (PrivilegedActionException pae) {
+                                .doPrivileged(J2DoPrivHelper.toURLAction(f)), clss);
+                    }
+                    catch (PrivilegedActionException pae) {
                         throw (FileNotFoundException) pae.getException();
                     }
                 }
@@ -688,21 +695,22 @@
         }
         URL url;
         if (urls != null) {
-            for (Iterator itr = urls.iterator(); itr.hasNext();) {
-                url = (URL) itr.next();
+            for (URL value : urls) {
+                url = value;
                 if ("file".equals(url.getProtocol())) {
                     File file = AccessController
-                        .doPrivileged(J2DoPrivHelper
-                            .getAbsoluteFileAction(new File(url.getFile())));
+                            .doPrivileged(J2DoPrivHelper
+                                    .getAbsoluteFileAction(new File(url.getFile())));
                     if (files != null && files.contains(file)) {
                         continue;
-                    } else if (AccessController
+                    }
+                    else if (AccessController
                             .doPrivileged(J2DoPrivHelper.isDirectoryAction(file))) {
                         if (log.isTraceEnabled())
                             log.trace(_loc.get("scanning-directory", file));
                         scan(
-                            new FileMetaDataIterator(file, newMetaDataFilter()),
-                            cparser, names, true, file);
+                                new FileMetaDataIterator(file, newMetaDataFilter()),
+                                cparser, names, true, file);
                         continue;
                     }
                 }
@@ -715,7 +723,7 @@
                     if (url.toString().endsWith(".jar")) {
                         ZipInputStream zis = AccessController.doPrivileged(new PrivilegedAction<ZipInputStream>() {
 
-                            @SuppressWarnings({ "rawtypes", "unchecked" })
+                            @SuppressWarnings({"rawtypes", "unchecked"})
                             @Override
                             public ZipInputStream run() {
                                 try {
@@ -726,7 +734,8 @@
                                     Class virtualFileClass = Class.forName("org.jboss.vfs.VirtualFile");
                                     Method openStream = virtualFileClass.getDeclaredMethod("openStream");
                                     return (ZipInputStream) openStream.invoke(jarFile);
-                                } catch (Exception e) {
+                                }
+                                catch (Exception e) {
                                     log.error(_loc.get("while-scanning-vfs-url", finalUrl), e);
                                 }
                                 return null;
@@ -735,19 +744,21 @@
                         if (zis != null) {
                             scan(new ZipStreamMetaDataIterator(zis, newMetaDataFilter()), cparser, names, true, url);
                         }
-                    } else {
+                    }
+                    else {
                         final URLConnection conn = url.openConnection();
                         final Object vfsContent = conn.getContent();
                         File file = AccessController.doPrivileged(new PrivilegedAction<File>() {
 
-                            @SuppressWarnings({ "rawtypes", "unchecked" })
+                            @SuppressWarnings({"rawtypes", "unchecked"})
                             @Override
                             public File run() {
                                 try {
                                     Class virtualFileClass = Class.forName("org.jboss.vfs.VirtualFile");
                                     Method getPhysicalFile = virtualFileClass.getDeclaredMethod("getPhysicalFile");
                                     return (File) getPhysicalFile.invoke(vfsContent);
-                                } catch (Exception e) {
+                                }
+                                catch (Exception e) {
                                     log.error(_loc.get("while-scanning-vfs-url", finalUrl), e);
                                 }
                                 return null;
@@ -764,27 +775,31 @@
                         if (log.isTraceEnabled())
                             log.trace(_loc.get("scanning-jar-url", url));
                         scan(new ZipFileMetaDataIterator(url,
-                            newMetaDataFilter()), cparser, names, true, url);
-                    } else {
+                                newMetaDataFilter()), cparser, names, true, url);
+                    }
+                    else {
                         if (log.isTraceEnabled())
                             log.trace(_loc.get("scanning-jar-url", url));
                         scan(new JarFileURLMetaDataIterator(url,
-                            newMetaDataFilter()), cparser, names, true, url);
+                                newMetaDataFilter()), cparser, names, true, url);
                     }
-                } else if (url.getPath().endsWith(".jar")) {
+                }
+                else if (url.getPath().endsWith(".jar")) {
                     if (log.isTraceEnabled())
                         log.trace(_loc.get("scanning-jar-at-url", url));
                     try {
                         InputStream is = (InputStream)
-                            AccessController.doPrivileged(
-                                J2DoPrivHelper.openStreamAction(url));
+                                AccessController.doPrivileged(
+                                        J2DoPrivHelper.openStreamAction(url));
                         scan(new ZipStreamMetaDataIterator(
-                            new ZipInputStream(is),
-                            newMetaDataFilter()), cparser, names, true, url);
-                    } catch (PrivilegedActionException pae) {
+                                new ZipInputStream(is),
+                                newMetaDataFilter()), cparser, names, true, url);
+                    }
+                    catch (PrivilegedActionException pae) {
                         throw (IOException) pae.getException();
                     }
-                } else {
+                }
+                else {
                     // Open an InputStream from the URL and sniff for a zip header.  If it is, then this is
                     // a URL with a jar-formated InputStream, as per the JPA specification.  Otherwise, fall back
                     // to URLMetaDataIterator.
@@ -792,15 +807,16 @@
 
                     try {
                         is = new BufferedInputStream((InputStream) AccessController.
-                            doPrivileged(J2DoPrivHelper.openStreamAction(url)));
-                    } catch (PrivilegedActionException pae) {
+                                doPrivileged(J2DoPrivHelper.openStreamAction(url)));
+                    }
+                    catch (PrivilegedActionException pae) {
                         throw (IOException) pae.getException();
                     }
 
                     // Check for zip header magic 0x50 0x4b 0x03 0x04
                     is.mark(0);
                     boolean zipHeaderMatch = is.read() == 0x50 && is.read() == 0x4b && is.read() == 0x03 &&
-                        is.read() == 0x04;
+                            is.read() == 0x04;
                     is.reset();
 
                     if (zipHeaderMatch) {
@@ -808,8 +824,9 @@
                         if (log.isTraceEnabled())
                             log.trace(_loc.get("scanning-jar-at-url", url));
                         scan(new ZipStreamMetaDataIterator(new ZipInputStream(is), newMetaDataFilter()),
-                            cparser, names, true, url);
-                    } else {
+                                cparser, names, true, url);
+                    }
+                    else {
                         // Fall back to URLMetaDataIterator
                         if (log.isTraceEnabled())
                             log.trace(_loc.get("scanning-url", url));
@@ -826,38 +843,40 @@
         if (rsrcs != null) {
             String rsrc;
             MetaDataIterator mitr;
-            for (Iterator itr = rsrcs.iterator(); itr.hasNext();) {
-                rsrc = (String) itr.next();
+            for (String s : rsrcs) {
+                rsrc = s;
                 if (rsrc.endsWith(".jar")) {
                     url = AccessController.doPrivileged(
-                        J2DoPrivHelper.getResourceAction(loader, rsrc));
+                            J2DoPrivHelper.getResourceAction(loader, rsrc));
                     if (url != null) {
                         if (log.isTraceEnabled())
                             log.trace(_loc.get("scanning-jar-stream-url", url));
                         try {
                             InputStream is = (InputStream)
-                                AccessController.doPrivileged(
-                                    J2DoPrivHelper.openStreamAction(url));
+                                    AccessController.doPrivileged(
+                                            J2DoPrivHelper.openStreamAction(url));
                             scan(new ZipStreamMetaDataIterator
-                                (new ZipInputStream(is),
-                                newMetaDataFilter()), cparser, names, true,
-                                url);
-                        } catch (PrivilegedActionException pae) {
+                                            (new ZipInputStream(is),
+                                                    newMetaDataFilter()), cparser, names, true,
+                                    url);
+                        }
+                        catch (PrivilegedActionException pae) {
                             throw (IOException) pae.getException();
                         }
                     }
-                } else {
+                }
+                else {
                     if (log.isTraceEnabled())
                         log.trace(_loc.get("scanning-resource", rsrc));
                     mitr = new ResourceMetaDataIterator(rsrc, loader);
                     OpenJPAConfiguration conf = repos.getConfiguration();
                     Map peMap = null;
                     if (conf instanceof OpenJPAConfigurationImpl)
-                        peMap = ((OpenJPAConfigurationImpl)conf).getPersistenceEnvironment();
+                        peMap = ((OpenJPAConfigurationImpl) conf).getPersistenceEnvironment();
                     URL puUrl = peMap == null ? null : (URL) peMap.get(PERSISTENCE_UNIT_ROOT_URL);
                     List<String> mappingFileNames =
-                        peMap == null ? null : (List<String>) peMap.get(MAPPING_FILE_NAMES);
-                    List<URL> jars = peMap == null ? null : (List<URL>)peMap.get(JAR_FILE_URLS);
+                            peMap == null ? null : (List<String>) peMap.get(MAPPING_FILE_NAMES);
+                    List<URL> jars = peMap == null ? null : (List<URL>) peMap.get(JAR_FILE_URLS);
                     String puUrlString = puUrl == null ? null : puUrl.toString();
                     if (log.isTraceEnabled())
                         log.trace(_loc.get("pu-root-url", puUrlString));
@@ -868,7 +887,8 @@
                             String puORMUrlStr = puUrlString + (puUrlString.endsWith("/") ? "" : "/") + rsrc;
                             puORMUrl = AccessController.doPrivileged(J2DoPrivHelper.createURL(puORMUrlStr));
                         }
-                    } catch (PrivilegedActionException e) {
+                    }
+                    catch (PrivilegedActionException e) {
                         throw new IOException("Error generating puORMUrlStr.", e.getCause());
                     }
 
@@ -879,10 +899,11 @@
                         if (log.isTraceEnabled())
                             log.trace(_loc.get("resource-url", urlString));
                         if (peMap != null) {
-                        	//OPENJPA-2102: decode the URL to remove such things a spaces (' ') encoded as '%20'
+                            //OPENJPA-2102: decode the URL to remove such things a spaces (' ') encoded as '%20'
                             if (puUrlString != null && decode(urlString).indexOf(decode(puUrlString)) != -1) {
                                 urls.add(url);
-                            } else if (puORMUrl != null && puORMUrl.equals(url)) {
+                            }
+                            else if (puORMUrl != null && puORMUrl.equals(url)) {
                                 // Check URL equality to support encapsulating URL protocols
                                 urls.add(url);
                             }
@@ -903,7 +924,8 @@
                                         urls.add(url);
                                 }
                             }
-                        } else {
+                        }
+                        else {
                             urls.add(url);
                         }
                     }
@@ -912,7 +934,7 @@
                     for (Object obj : urls) {
                         url = (URL) obj;
                         clss = cparser.parseTypeNames(new URLMetaDataIterator
-                            (url));
+                                (url));
                         List<String> newNames = Arrays.asList(clss);
                         if (log.isTraceEnabled())
                             log.trace(_loc.get("scan-found-names", newNames,
@@ -951,11 +973,11 @@
         }
 
         Map.Entry entry;
-        for (Iterator itr = map.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : map.entrySet()) {
+            entry = (Map.Entry) o;
             if (mapNames)
                 mapPersistentTypeNames(entry.getKey(), (String[])
-                    entry.getValue());
+                        entry.getValue());
             List newNames = Arrays.asList((String[]) entry.getValue());
             if (log.isTraceEnabled())
                 log.trace(_loc.get("scan-found-names", newNames, debugContext));
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
index 9a46408..8c8f89c 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
@@ -223,8 +223,7 @@
         String name;
         boolean def;
         FieldMetaData fmd;
-        for (int i = 0; i < members.size(); i++) {
-            Member member = members.get(i);
+        for (Member member : members) {
             name = getFieldName(member);
             if (name == null || isReservedFieldName(name))
                 continue;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
index 55edebb..08483aa 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
@@ -423,9 +423,9 @@
             else {
                 List<ClassMetaData> mapped =
                 	new ArrayList<>(subs.length);
-                for (int i = 0; i < subs.length; i++)
-                    if (subs[i].isMapped())
-                        mapped.add(subs[i]);
+                for (ClassMetaData sub : subs)
+                    if (sub.isMapped())
+                        mapped.add(sub);
                 _mapSubMetas = mapped.toArray
                     (_repos.newClassMetaDataArray(mapped.size()));
             }
@@ -991,9 +991,9 @@
             Field[] fields = AccessController.doPrivileged(
                 J2DoPrivHelper.getDeclaredFieldsAction(_type));
             Set<String> names = new HashSet<>();
-            for (int i = 0; i < fields.length; i++)
-                if (Modifier.isStatic(fields[i].getModifiers()))
-                    names.add(fields[i].getName());
+            for (Field value : fields)
+                if (Modifier.isStatic(value.getModifiers()))
+                    names.add(value.getName());
             _staticFields = names;
         }
         if (_staticFields.contains(field))
@@ -1149,8 +1149,8 @@
         if (_allPKFields == null) {
             FieldMetaData[] fields = getFields();
             int num = 0;
-            for (int i = 0; i < fields.length; i++)
-                if (fields[i].isPrimaryKey())
+            for (FieldMetaData fieldMetaData : fields)
+                if (fieldMetaData.isPrimaryKey())
                     num++;
 
             if (num == 0)
@@ -1158,10 +1158,10 @@
             else {
                 FieldMetaData[] pks = _repos.newFieldMetaDataArray(num);
                 num = 0;
-                for (int i = 0; i < fields.length; i++) {
-                    if (fields[i].isPrimaryKey()) {
-                        fields[i].setPrimaryKeyIndex(num);
-                        pks[num] = fields[i];
+                for (FieldMetaData field : fields) {
+                    if (field.isPrimaryKey()) {
+                        field.setPrimaryKeyIndex(num);
+                        pks[num] = field;
                         num++;
                     }
                 }
@@ -1179,15 +1179,15 @@
         if (_allDFGFields == null) {
             FieldMetaData[] fields = getFields();
             int num = 0;
-            for (int i = 0; i < fields.length; i++)
-                if (fields[i].isInDefaultFetchGroup())
+            for (FieldMetaData fieldMetaData : fields)
+                if (fieldMetaData.isInDefaultFetchGroup())
                     num++;
 
             FieldMetaData[] dfgs = _repos.newFieldMetaDataArray(num);
             num = 0;
-            for (int i = 0; i < fields.length; i++)
-                if (fields[i].isInDefaultFetchGroup())
-                    dfgs[num++] = fields[i];
+            for (FieldMetaData field : fields)
+                if (field.isInDefaultFetchGroup())
+                    dfgs[num++] = field;
             _allDFGFields = dfgs;
         }
         return _allDFGFields;
@@ -1373,11 +1373,11 @@
         if (isMapped() && sup != null) {
             // redefine all unmapped superclass fields
             FieldMetaData[] sups = sup.getFields();
-            for (int i = 0; i < sups.length; i++) {
-                if ((force || !sups[i].getDefiningMetaData().isMapped())
-                    && getDefinedSuperclassField(sups[i].getName()) == null) {
-                    addDefinedSuperclassField(sups[i].getName(),
-                        sups[i].getDeclaredType(), sups[i].getDeclaringType());
+            for (FieldMetaData fieldMetaData : sups) {
+                if ((force || !fieldMetaData.getDefiningMetaData().isMapped())
+                        && getDefinedSuperclassField(fieldMetaData.getName()) == null) {
+                    addDefinedSuperclassField(fieldMetaData.getName(),
+                            fieldMetaData.getDeclaredType(), fieldMetaData.getDeclaringType());
                 }
             }
         }
@@ -1854,12 +1854,12 @@
             if (embed) {
                 // embedded instance always redefine all superclass fields
                 FieldMetaData[] sups = sup.getFields();
-                for (int i = 0; i < sups.length; i++) {
+                for (FieldMetaData fieldMetaData : sups) {
                     if (_supFieldMap == null
-                        || !_supFieldMap.containsKey(sups[i].getName())) {
-                        addDefinedSuperclassField(sups[i].getName(),
-                            sups[i].getDeclaredType(),
-                            sups[i].getDeclaringType());
+                            || !_supFieldMap.containsKey(fieldMetaData.getName())) {
+                        addDefinedSuperclassField(fieldMetaData.getName(),
+                                fieldMetaData.getDeclaredType(),
+                                fieldMetaData.getDeclaringType());
                     }
                 }
             }
@@ -2202,13 +2202,13 @@
         Field f;
         Method m;
         Class<?> c;
-        for (int i = 0; i < fmds.length; i++) {
-            switch (fmds[i].getDeclaredTypeCode()) {
+        for (FieldMetaData fmd : fmds) {
+            switch (fmd.getDeclaredTypeCode()) {
                 case JavaTypes.ARRAY:
-                    c = fmds[i].getDeclaredType().getComponentType();
+                    c = fmd.getDeclaredType().getComponentType();
                     if (c == byte.class || c == Byte.class
-                        || c == char.class || c == Character.class) {
-                        c = fmds[i].getDeclaredType();
+                            || c == char.class || c == Character.class) {
+                        c = fmd.getDeclaredType();
                         break;
                     }
                     // else no break
@@ -2217,26 +2217,27 @@
                 case JavaTypes.MAP:
                 case JavaTypes.OID: // we're validating embedded fields
                     throw new MetaDataException(_loc.get("bad-pk-type",
-                        fmds[i]));
+                            fmd));
                 default:
-                    c = fmds[i].getObjectIdFieldType();
+                    c = fmd.getObjectIdFieldType();
             }
 
-            if (AccessCode.isField(fmds[i].getAccessType())) {
-                f = Reflection.findField(oid, fmds[i].getName(), false);
+            if (AccessCode.isField(fmd.getAccessType())) {
+                f = Reflection.findField(oid, fmd.getName(), false);
                 if (f == null || !f.getType().isAssignableFrom(c))
                     throw new MetaDataException(_loc.get("invalid-id",
-                        _type, fmds[i].getName()));
-            } else if (AccessCode.isProperty(fmds[i].getAccessType())) {
-                m = Reflection.findGetter(oid, fmds[i].getName(), false);
+                            _type, fmd.getName()));
+            }
+            else if (AccessCode.isProperty(fmd.getAccessType())) {
+                m = Reflection.findGetter(oid, fmd.getName(), false);
                 if (m == null || !m.getReturnType().isAssignableFrom(c))
                     throw new MetaDataException(_loc.get("invalid-id",
-                        _type, fmds[i].getName()));
-                m = Reflection.findSetter(oid, fmds[i].getName(),
-                    fmds[i].getObjectIdFieldType(), false);
+                            _type, fmd.getName()));
+                m = Reflection.findSetter(oid, fmd.getName(),
+                        fmd.getObjectIdFieldType(), false);
                 if (m == null || m.getReturnType() != void.class)
                     throw new MetaDataException(_loc.get("invalid-id",
-                        _type, fmds[i].getName()));
+                            _type, fmd.getName()));
             }
         }
     }
@@ -2246,9 +2247,9 @@
      */
     private void validateNoPKFields() {
         FieldMetaData[] fields = getDeclaredFields();
-        for (int i = 0; i < fields.length; i++)
-            if (fields[i].isPrimaryKey())
-                throw new MetaDataException(_loc.get("bad-pk", fields[i]));
+        for (FieldMetaData field : fields)
+            if (field.isPrimaryKey())
+                throw new MetaDataException(_loc.get("bad-pk", field));
     }
 
     /**
@@ -2325,13 +2326,13 @@
             ClassMetaData sup = getPCSuperclassMetaData();
             if (sup != null) {
                 FetchGroup[] supFGs = sup.getCustomFetchGroups();
-                for (int i = 0; i < supFGs.length; i++) {
-                    fgs.put(supFGs[i].getName(), supFGs[i]);
+                for (FetchGroup supFG : supFGs) {
+                    fgs.put(supFG.getName(), supFG);
                 }
             }
             FetchGroup[] decs = getDeclaredFetchGroups();
-            for (int i = 0; i < decs.length; i++) {
-                fgs.put(decs[i].getName(), decs[i]);
+            for (FetchGroup dec : decs) {
+                fgs.put(dec.getName(), dec);
             }
             // remove standard groups
             fgs.remove(FetchGroup.NAME_DEFAULT);
@@ -2557,22 +2558,22 @@
         // add copies of declared fields; other defined fields already copied
         FieldMetaData[] fields = meta.getDeclaredFields();
         FieldMetaData field;
-        for (int i = 0; i < fields.length; i++) {
-            field = getDeclaredField(fields[i].getName());
+        for (FieldMetaData fieldMetaData : fields) {
+            field = getDeclaredField(fieldMetaData.getName());
             if (field == null)
-                field = addDeclaredField(fields[i].getName(),
-                    fields[i].getDeclaredType());
+                field = addDeclaredField(fieldMetaData.getName(),
+                        fieldMetaData.getDeclaredType());
             field.setDeclaredIndex(-1);
             field.setIndex(-1);
-            field.copy(fields[i]);
+            field.copy(fieldMetaData);
         }
 
         // copy fetch groups
         FetchGroup[] fgs = meta.getDeclaredFetchGroups();
         FetchGroup fg;
-        for (int i = 0; i < fgs.length; i++) {
-            fg = addDeclaredFetchGroup(fgs[i].getName());
-            fg.copy(fgs[i]);
+        for (FetchGroup fetchGroup : fgs) {
+            fg = addDeclaredFetchGroup(fetchGroup.getName());
+            fg.copy(fetchGroup);
         }
 
         // copy interface re-mapping
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Extensions.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Extensions.java
index c785c24..ae7c258 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Extensions.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Extensions.java
@@ -21,7 +21,6 @@
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
@@ -70,8 +69,9 @@
             return new String[0];
 
         Set vendors = new TreeSet();
-        for (Iterator itr = _exts.keySet().iterator(); itr.hasNext();)
-            vendors.add(getVendor(itr.next()));
+        for (Object o : _exts.keySet()) {
+            vendors.add(getVendor(o));
+        }
         return (String[]) vendors.toArray(new String[vendors.size()]);
     }
 
@@ -91,8 +91,8 @@
 
         Collection keys = new TreeSet();
         Object key;
-        for (Iterator itr = _exts.keySet().iterator(); itr.hasNext();) {
-            key = itr.next();
+        for (Object o : _exts.keySet()) {
+            key = o;
             if (vendor.equals(getVendor(key)))
                 keys.add(getKey(key));
         }
@@ -279,9 +279,8 @@
                 _exts = new HashMap();
 
             Map.Entry entry;
-            for (Iterator itr = exts._exts.entrySet().iterator();
-                itr.hasNext();) {
-                entry = (Map.Entry) itr.next();
+            for (Object o : exts._exts.entrySet()) {
+                entry = (Map.Entry) o;
                 if (!_exts.containsKey(entry.getKey()))
                     _exts.put(entry.getKey(), entry.getValue());
             }
@@ -293,9 +292,8 @@
 
             Map.Entry entry;
             Extensions embedded;
-            for (Iterator itr = exts._embed.entrySet().iterator();
-                itr.hasNext();) {
-                entry = (Map.Entry) itr.next();
+            for (Object o : exts._embed.entrySet()) {
+                entry = (Map.Entry) o;
                 embedded = (Extensions) _embed.get(entry.getKey());
                 if (embedded == null) {
                     embedded = new EmbeddedExtensions(this);
@@ -337,8 +335,8 @@
         Object next;
         String key;
         outer:
-        for (Iterator itr = _exts.keySet().iterator(); itr.hasNext();) {
-            next = itr.next();
+        for (Object o : _exts.keySet()) {
+            next = o;
             if (!OPENJPA.equals(getVendor(next)))
                 continue;
             key = getKey(next);
@@ -346,10 +344,10 @@
                 continue;
 
             if (allowedPrefixes != null) {
-                for (int j = 0; j < allowedPrefixes.length; j++) {
-                    if (key.startsWith(allowedPrefixes[j])
-                        && !validateDataStoreExtensionPrefix
-                        (allowedPrefixes[j]))
+                for (String allowedPrefix : allowedPrefixes) {
+                    if (key.startsWith(allowedPrefix)
+                            && !validateDataStoreExtensionPrefix
+                            (allowedPrefix))
                         continue outer;
                 }
             }
@@ -357,14 +355,14 @@
             // try to determine if there are any other names that are
             // similiar to this one, so we can add in a hint
             String closestName = StringDistance.getClosestLevenshteinDistance
-                (key, validNames, 0.5f);
+                    (key, validNames, 0.5f);
 
             if (closestName == null)
                 log.warn(_loc.get("unrecognized-extension", this,
-                    key, validNames));
+                        key, validNames));
             else
                 log.warn(_loc.get("unrecognized-extension-hint",
-                    new Object[]{ this, key, validNames, closestName }));
+                        new Object[]{this, key, validNames, closestName}));
         }
     }
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
index c35ef46..e1042d3 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
@@ -38,7 +38,6 @@
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -973,17 +972,17 @@
                 // scan rel type for fields that name this field as an inverse
                 FieldMetaData[] fields = meta.getFields();
                 Class<?> type = getDeclaringMetaData().getDescribedType();
-                for (int i = 0; i < fields.length; i++) {
+                for (FieldMetaData fieldMetaData : fields) {
                     // skip fields that aren't compatible with our owning class
-                    switch (fields[i].getTypeCode()) {
+                    switch (fieldMetaData.getTypeCode()) {
                         case JavaTypes.PC:
-                            if (!type.isAssignableFrom(fields[i].getType()))
+                            if (!type.isAssignableFrom(fieldMetaData.getType()))
                                 continue;
                             break;
                         case JavaTypes.COLLECTION:
                         case JavaTypes.ARRAY:
-                            if (!type.isAssignableFrom(fields[i].
-                                getElement().getType()))
+                            if (!type.isAssignableFrom(fieldMetaData.
+                                    getElement().getType()))
                                 continue;
                             break;
                         default:
@@ -993,12 +992,12 @@
                     // if the field declares us as its inverse and we haven't
                     // already added it (we might have if we also declared it
                     // as our inverse), add it now
-                    if (_name.equals(fields[i].getMappedBy())
-                        || _name.equals(fields[i].getInverse())) {
+                    if (_name.equals(fieldMetaData.getMappedBy())
+                            || _name.equals(fieldMetaData.getInverse())) {
                         if (inverses == null)
                             inverses = new ArrayList<>(3);
-                        if (!inverses.contains(fields[i]))
-                            inverses.add(fields[i]);
+                        if (!inverses.contains(fieldMetaData))
+                            inverses.add(fieldMetaData);
                     }
                 }
             }
@@ -1491,10 +1490,10 @@
         Map fieldValues = new HashMap((int) (values.size() * 1.33 + 1));
         Map.Entry entry;
         Object extValue, fieldValue;
-        for (Iterator itr = values.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Map.Entry<Object, Object> objectObjectEntry : values.entrySet()) {
+            entry = (Map.Entry) objectObjectEntry;
             fieldValue = transform((String) entry.getKey(),
-                getDeclaredTypeCode());
+                    getDeclaredTypeCode());
             extValue = transform((String) entry.getValue(), getTypeCode());
 
             extValues.put(fieldValue, extValue);
@@ -1643,26 +1642,27 @@
         // find the named method
         Method[] methods = cls.getMethods();
         Class<?>[] params;
-        for (int i = 0; i < methods.length; i++) {
-            if (methods[i].getName().equals(methodName)) {
-                params = methods[i].getParameterTypes();
+        for (Method value : methods) {
+            if (value.getName().equals(methodName)) {
+                params = value.getParameterTypes();
 
                 // static factory methods require one argument or one argument
                 // plus a context; non-static methods require zero arguments or
                 // just a context
-                if (Modifier.isStatic(methods[i].getModifiers())
-                    && (params.length == 1 || (params.length == 2
-                    && isStoreContextParameter(params[1]))))
+                if (Modifier.isStatic(value.getModifiers())
+                        && (params.length == 1 || (params.length == 2
+                        && isStoreContextParameter(params[1]))))
 
-                	if (type == null) {
-                		return methods[i];
-                	} else if (isConvertibleToByMethodInvocationConversion(type, params[0])) {
-                		return methods[i];
-                	}
-                if (!Modifier.isStatic(methods[i].getModifiers())
-                    && (params.length == 0 || (params.length == 1
-                    && isStoreContextParameter(params[0]))))
-                    return methods[i];
+                    if (type == null) {
+                        return value;
+                    }
+                    else if (isConvertibleToByMethodInvocationConversion(type, params[0])) {
+                        return value;
+                    }
+                if (!Modifier.isStatic(value.getModifiers())
+                        && (params.length == 0 || (params.length == 1
+                        && isStoreContextParameter(params[0]))))
+                    return value;
             }
         }
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java
index 078739e..1ae8f1a 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java
@@ -100,8 +100,9 @@
 
         FieldMetaData[] fields = meta.getDeclaredFields();
         Set<Method> methods = new HashSet<>();
-        for (int i = 0; i < fields.length; i++)
-            addField(bc, iface, fields[i], methods);
+        for (FieldMetaData field : fields) {
+            addField(bc, iface, field, methods);
+        }
         invalidateNonBeanMethods(bc, iface, methods);
 
         // first load the base Class<?> as the enhancer requires the class
@@ -181,11 +182,11 @@
         Code code;
         Class<?> type = _repos.getMetaDataFactory().getDefaults().
             getUnimplementedExceptionType();
-        for (int i = 0; i < meths.length; i++) {
-            if (methods.contains(meths[i]))
+        for (Method method : meths) {
+            if (methods.contains(method))
                 continue;
-            meth = bc.declareMethod(meths[i].getName(),
-                meths[i].getReturnType(), meths[i].getParameterTypes());
+            meth = bc.declareMethod(method.getName(),
+                    method.getReturnType(), method.getParameterTypes());
             meth.makePublic();
             code = meth.getCode(true);
             code.anew().setType(type);
@@ -237,9 +238,9 @@
 
     public Class<?> toManagedInterface(Class<?> cls) {
         Class<?>[] ifaces = cls.getInterfaces();
-        for (int i = 0; i < ifaces.length; i++) {
-            if (_impls.get(ifaces[i]) == cls)
-                return ifaces[i];
+        for (Class<?> iface : ifaces) {
+            if (_impls.get(iface) == cls)
+                return iface;
         }
         throw new IllegalArgumentException(cls.getName());
     }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataInheritanceComparator.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataInheritanceComparator.java
index 08a0566..f447086 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataInheritanceComparator.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataInheritanceComparator.java
@@ -50,15 +50,15 @@
         ClassMetaData m2 = (ClassMetaData) o2;
 
         FieldMetaData[] fmds = m1.getDeclaredFields();
-        for (int i = 0; i < fmds.length; i++) {
-            if (fmds[i].isPrimaryKey() && m2.getDescribedType().
-                isAssignableFrom(fmds[i].getDeclaredType()))
+        for (FieldMetaData fieldMetaData : fmds) {
+            if (fieldMetaData.isPrimaryKey() && m2.getDescribedType().
+                    isAssignableFrom(fieldMetaData.getDeclaredType()))
                 return 1;
         }
         fmds = m2.getDeclaredFields();
-        for (int i = 0; i < fmds.length; i++) {
-            if (fmds[i].isPrimaryKey() && m1.getDescribedType().
-                isAssignableFrom(fmds[i].getDeclaredType()))
+        for (FieldMetaData fmd : fmds) {
+            if (fmd.isPrimaryKey() && m1.getDescribedType().
+                    isAssignableFrom(fmd.getDeclaredType()))
                 return -1;
         }
         return super.compare(o1, o2);
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
index 1c17fe7..5ad8c92 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
@@ -657,16 +657,19 @@
             return;
 
         // load mapping data
-        for (int i = 0; i < resolved.size(); i++)
-            loadMapping(resolved.get(i));
-        for (int i = 0; i < resolved.size(); i++)
-            preMapping(resolved.get(i));
+        for (ClassMetaData data : resolved) {
+            loadMapping(data);
+        }
+        for (ClassMetaData metaData : resolved) {
+            preMapping(metaData);
+        }
 
         // resolve mappings
         boolean err = true;
         if ((_resMode & MODE_MAPPING) != 0)
-            for (int i = 0; i < resolved.size(); i++)
-                err &= resolveMapping(resolved.get(i));
+            for (ClassMetaData classMetaData : resolved) {
+                err &= resolveMapping(classMetaData);
+            }
 
         // throw errors encountered
         // OPENJPA-1535 Always throw a MetaDataException because callers
@@ -706,8 +709,8 @@
             }
             if (meta.getDescribedType().isInterface()) {
                 Class<?>[] sups = meta.getDescribedType().getInterfaces();
-                for (int i = 0; i < sups.length; i++) {
-                    supMeta = getMetaData(sups[i], meta.getEnvClassLoader(), false);
+                for (Class<?> aClass : sups) {
+                    supMeta = getMetaData(aClass, meta.getEnvClassLoader(), false);
                     if (supMeta != null) {
                         meta.setPCSuperclass(sup);
                         meta.setPCSuperclassMetaData(supMeta);
@@ -721,9 +724,9 @@
 
         // resolve relation primary key fields for mapping dependencies
         FieldMetaData[] fmds = meta.getDeclaredFields();
-        for (int i = 0; i < fmds.length; i++)
-            if (fmds[i].isPrimaryKey())
-                getMetaData(fmds[i].getDeclaredType(), meta.getEnvClassLoader(), false);
+        for (FieldMetaData fmd : fmds)
+            if (fmd.isPrimaryKey())
+                getMetaData(fmd.getDeclaredType(), meta.getEnvClassLoader(), false);
 
         // resolve metadata; if we're not in the process of resolving
         // others, this will return the set of interrelated metas that
@@ -792,11 +795,12 @@
 
         // initialize mapping for runtime use
         if ((_resMode & MODE_MAPPING_INIT) != 0) {
-            for (int i = 0; i < mapped.size(); i++) {
-                meta = mapped.get(i);
+            for (ClassMetaData classMetaData : mapped) {
+                meta = classMetaData;
                 try {
                     meta.resolve(MODE_MAPPING_INIT);
-                } catch (RuntimeException re) {
+                }
+                catch (RuntimeException re) {
                     removeMetaData(meta);
                     _errs.add(re);
                 }
@@ -871,9 +875,9 @@
             // prevent concurrent mod errors when resolving one metadata
             // introduces others
             ClassMetaData[] metas = _metas.values().toArray(new ClassMetaData[_metas.size()]);
-            for (int i = 0; i < metas.length; i++)
-                if (metas[i] != null)
-                    getMetaData(metas[i].getDescribedType(), metas[i].getEnvClassLoader(), true);
+        for (ClassMetaData classMetaData : metas)
+            if (classMetaData != null)
+                getMetaData(classMetaData.getDescribedType(), classMetaData.getEnvClassLoader(), true);
 
             List<ClassMetaData> resolved = new ArrayList<>(_metas.size());
             for (ClassMetaData meta : _metas.values()) {
@@ -1631,10 +1635,11 @@
      */
     private void loadRegisteredClassMetaData(ClassLoader envLoader) {
         Class<?>[] reg = processRegisteredClasses(envLoader);
-        for (int i = 0; i < reg.length; i++) {
+        for (Class<?> aClass : reg) {
             try {
-                getMetaData(reg[i], envLoader, false);
-            } catch (MetaDataException me) {
+                getMetaData(aClass, envLoader, false);
+            }
+            catch (MetaDataException me) {
                 if (_log.isWarnEnabled())
                     _log.warn(me);
             }
@@ -1666,9 +1671,9 @@
 
         Collection<String> pcNames = getPersistentTypeNames(false, envLoader);
         Collection<Class<?>> failed = null;
-        for (int i = 0; i < reg.length; i++) {
+        for (Class<?> aClass : reg) {
             // Don't process types that aren't listed by the user; it may belong to a different persistence unit.
-            if (pcNames != null && !pcNames.isEmpty() && !pcNames.contains(reg[i].getName())) {
+            if (pcNames != null && !pcNames.isEmpty() && !pcNames.contains(aClass.getName())) {
                 continue;
             }
 
@@ -1677,44 +1682,46 @@
             if (_filterRegisteredClasses) {
                 Log log = (_conf == null) ? null : _conf.getLog(OpenJPAConfiguration.LOG_RUNTIME);
                 ClassLoader loadCL = (envLoader != null) ?
-                    envLoader :
-                    AccessController.doPrivileged(J2DoPrivHelper.getContextClassLoaderAction());
+                        envLoader :
+                        AccessController.doPrivileged(J2DoPrivHelper.getContextClassLoaderAction());
 
                 try {
-                    Class<?> classFromAppClassLoader = Class.forName(reg[i].getName(), true, loadCL);
+                    Class<?> classFromAppClassLoader = Class.forName(aClass.getName(), true, loadCL);
 
-                    if (!reg[i].equals(classFromAppClassLoader)) {
+                    if (!aClass.equals(classFromAppClassLoader)) {
                         // This is a class that belongs to a ClassLoader not associated with the Application,
                         // so it should be processed.
                         if (log != null && log.isTraceEnabled()) {
                             log.trace(
-                                "Metadata Repository will ignore Class " + reg[i].getName() +
-                                ", since it originated from a ClassLoader not associated with the application.");
+                                    "Metadata Repository will ignore Class " + aClass.getName() +
+                                            ", since it originated from a ClassLoader not associated with the application.");
                         }
                         continue;
                     }
-                } catch (ClassNotFoundException cnfe) {
+                }
+                catch (ClassNotFoundException cnfe) {
                     // Catch exception and log its occurrence, and permit MDR processing to continue to preserve
                     // original behavior.
                     if (log != null && log.isTraceEnabled()) {
-                        log.trace("The Class " + reg[i].getName() + " was identified as a persistent class " +
-                            "by configuration, but the Class could not be found.");
+                        log.trace("The Class " + aClass.getName() + " was identified as a persistent class " +
+                                "by configuration, but the Class could not be found.");
                     }
                 }
             }
 
-            checkEnhancementLevel(reg[i]);
+            checkEnhancementLevel(aClass);
             try {
-                processRegisteredClass(reg[i]);
-            } catch (Throwable t) {
+                processRegisteredClass(aClass);
+            }
+            catch (Throwable t) {
                 if (!_conf.getRetryClassRegistration())
-                    throw new MetaDataException(_loc.get("error-registered", reg[i]), t);
+                    throw new MetaDataException(_loc.get("error-registered", aClass), t);
 
                 if (_log.isWarnEnabled())
-                    _log.warn(_loc.get("failed-registered", reg[i]), t);
+                    _log.warn(_loc.get("failed-registered", aClass), t);
                 if (failed == null)
                     failed = new ArrayList<>();
-                failed.add(reg[i]);
+                failed.add(aClass);
             }
         }
         if (failed != null) {
@@ -1835,15 +1842,15 @@
         if (!_factory.getDefaults().isDeclaredInterfacePersistent())
             return;
         Class<?>[] ints = check.getInterfaces();
-        for (int i = 0; i < ints.length; i++) {
+        for (Class<?> anInt : ints) {
             // don't map java-standard interfaces
-            if (ints[i].getName().startsWith("java."))
+            if (anInt.getName().startsWith("java."))
                 continue;
 
             // only map least-derived interface implementors
-            if (leastDerived == cls || isLeastDerivedImpl(ints[i], cls)) {
-                addToCollection(_impls, ints[i], cls, false);
-                updateImpls(cls, leastDerived, ints[i]);
+            if (leastDerived == cls || isLeastDerivedImpl(anInt, cls)) {
+                addToCollection(_impls, anInt, cls, false);
+                updateImpls(cls, leastDerived, anInt);
             }
         }
     }
@@ -2420,9 +2427,10 @@
 
     private void closeInternal() {
             SequenceMetaData[] smds = getSequenceMetaDatas();
-            for (int i = 0; i < smds.length; i++)
-                smds[i].close();
-            clear();
+        for (SequenceMetaData smd : smds) {
+            smd.close();
+        }
+        clear();
     }
 
     /**
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataTool.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataTool.java
index 8ff84ef..a34ebbe 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataTool.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataTool.java
@@ -24,7 +24,6 @@
 import java.io.Writer;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
@@ -170,10 +169,10 @@
         // assume all user-defined types are PCs
         ClassMetaData meta = getRepository().addMetaData(cls);
         FieldMetaData[] fmds = meta.getDeclaredFields();
-        for (int i = 0; i < fmds.length; i++) {
-            if (fmds[i].getDeclaredTypeCode() == JavaTypes.OBJECT
-                && fmds[i].getDeclaredType() != Object.class)
-                fmds[i].setDeclaredTypeCode(JavaTypes.PC);
+        for (FieldMetaData fmd : fmds) {
+            if (fmd.getDeclaredTypeCode() == JavaTypes.OBJECT
+                    && fmd.getDeclaredType() != Object.class)
+                fmd.setDeclaredTypeCode(JavaTypes.PC);
         }
         meta.setSource(_file, meta.getSourceType(), _file == null ? "" : _file.getPath());
         _flush = true;
@@ -204,17 +203,18 @@
             if (_writer != null) {
                 output = new HashMap();
                 File tmp = new File("openjpatmp");
-                for (int i = 0; i < metas.length; i++)
-                    metas[i].setSource(tmp, metas[i].getSourceType(), tmp.getPath());
+                for (ClassMetaData meta : metas) {
+                    meta.setSource(tmp, meta.getSourceType(), tmp.getPath());
+                }
             }
             if (!mdf.store(metas, new QueryMetaData[0],
                 new SequenceMetaData[0], MODE_META, output))
                 throw new MetaDataException(_loc.get("bad-store"));
             if (_writer != null) {
                 PrintWriter out = new PrintWriter(_writer);
-                for (Iterator itr = output.values().iterator();
-                    itr.hasNext();)
-                    out.println((String) itr.next());
+                for (Object o : output.values()) {
+                    out.println((String) o);
+                }
                 out.flush();
             }
         }
@@ -326,13 +326,14 @@
             getMetaDataFactory().newClassArgParser();
         cap.setClassLoader(loader);
         Class[] classes;
-        for (int i = 0; i < args.length; i++) {
-            classes = cap.parseTypes(args[i]);
-            for (int j = 0; j < classes.length; j++) {
-                log.info(_loc.get("tool-running", classes[j], flags.action));
+        for (String arg : args) {
+            classes = cap.parseTypes(arg);
+            for (Class aClass : classes) {
+                log.info(_loc.get("tool-running", aClass, flags.action));
                 try {
-                    tool.run(classes[j]);
-                } catch (IllegalArgumentException iae) {
+                    tool.run(aClass);
+                }
+                catch (IllegalArgumentException iae) {
                     return false;
                 }
             }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ProxySetupStateManager.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ProxySetupStateManager.java
index 910f3c0..d9c4f0e 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ProxySetupStateManager.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ProxySetupStateManager.java
@@ -45,43 +45,43 @@
 
     public void setProxyData(PersistenceCapable pc, ClassMetaData meta) {
         FieldMetaData[] fmds = meta.getFields();
-        for (int i = 0; i < fmds.length; i++) {
+        for (FieldMetaData fmd : fmds) {
             // This method only gets called for concrete types. We need to do this processing for fields that might
             // not be owned by pc.
 
-            switch (fmds[i].getDeclaredTypeCode()) {
+            switch (fmd.getDeclaredTypeCode()) {
                 case JavaTypes.CALENDAR:
-                    pc.pcProvideField(fmds[i].getIndex());
+                    pc.pcProvideField(fmd.getIndex());
                     if (_object != null) {
                         // specified timezone
-                        fmds[i]
-                            .setInitializer(((Calendar) _object).getTimeZone());
+                        fmd
+                                .setInitializer(((Calendar) _object).getTimeZone());
                     }
                     break;
                 case JavaTypes.COLLECTION:
-                    pc.pcProvideField(fmds[i].getIndex());
+                    pc.pcProvideField(fmd.getIndex());
                     if (_object != null) {
                         // more specific type?
-                        if (_object.getClass() != fmds[i].getDeclaredType())
-                            fmds[i].setProxyType(_object.getClass());
+                        if (_object.getClass() != fmd.getDeclaredType())
+                            fmd.setProxyType(_object.getClass());
 
                         // custom comparator?
                         if (_object instanceof SortedSet)
-                            fmds[i].setInitializer(((SortedSet) _object).
-                                comparator());
+                            fmd.setInitializer(((SortedSet) _object).
+                                    comparator());
                     }
                     break;
                 case JavaTypes.MAP:
-                    pc.pcProvideField(fmds[i].getIndex());
+                    pc.pcProvideField(fmd.getIndex());
                     if (_object != null) {
                         // more specific type?
-                        if (_object.getClass() != fmds[i].getDeclaredType())
-                            fmds[i].setProxyType(_object.getClass());
+                        if (_object.getClass() != fmd.getDeclaredType())
+                            fmd.setProxyType(_object.getClass());
 
                         // custom comparator?
                         if (_object instanceof SortedMap)
-                            fmds[i].setInitializer(((SortedMap) _object).
-                                comparator());
+                            fmd.setInitializer(((SortedMap) _object).
+                                    comparator());
                     }
                     break;
             }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/AbstractLRSProxyCollection.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/AbstractLRSProxyCollection.java
index 52c342d..daa038f 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/AbstractLRSProxyCollection.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/AbstractLRSProxyCollection.java
@@ -126,8 +126,8 @@
         Proxies.dirty(this, false);
         boolean added = false;
         Object add;
-        for (Iterator itr = all.iterator(); itr.hasNext();) {
-            add = itr.next();
+        for (Object o : all) {
+            add = o;
             Proxies.assertAllowedType(add, _elementType);
             _ct.added(add);
             added = true;
@@ -150,8 +150,8 @@
         Proxies.dirty(this, false);
         boolean removed = false;
         Object rem;
-        for (Iterator itr = all.iterator(); itr.hasNext();) {
-            rem = itr.next();
+        for (Object o : all) {
+            rem = o;
             if (remove(rem)) {
                 Proxies.removed(this, rem, false);
                 _ct.removed(rem);
@@ -219,8 +219,8 @@
 
     @Override
     public boolean containsAll(Collection all) {
-        for (Iterator itr = all.iterator(); itr.hasNext();)
-            if (!contains(itr.next()))
+        for (Object o : all)
+            if (!contains(o))
                 return false;
         return true;
     }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ApplicationIds.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ApplicationIds.java
index 5ca1993..7346d08 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ApplicationIds.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ApplicationIds.java
@@ -352,8 +352,8 @@
      */
     private static boolean hasPCPrimaryKeyFields(ClassMetaData meta) {
         FieldMetaData[] fmds = meta.getPrimaryKeyFields();
-        for (int i = 0; i < fmds.length; i++)
-            if (fmds[i].getDeclaredTypeCode() == JavaTypes.PC)
+        for (FieldMetaData fmd : fmds)
+            if (fmd.getDeclaredTypeCode() == JavaTypes.PC)
                 return true;
         return false;
     }
@@ -379,21 +379,22 @@
 
         Field field;
         Object val;
-        for (int i = 0; i < fmds.length; i++) {
-            if (fmds[i].getManagement() != FieldMetaData.MANAGE_PERSISTENT)
+        for (FieldMetaData fmd : fmds) {
+            if (fmd.getManagement() != FieldMetaData.MANAGE_PERSISTENT)
                 continue;
 
             if (AccessCode.isField(meta.getAccessType())) {
-                    field = Reflection.findField(oidType, fmds[i].getName(),
+                field = Reflection.findField(oidType, fmd.getName(),
                         true);
-                    Reflection.set(copy, field, Reflection.get(oid, field));
-                } else { // property
-                    val = Reflection.get(oid, Reflection.findGetter(oidType,
-                        fmds[i].getName(), true));
-                    Reflection.set(copy, Reflection.findSetter(oidType, fmds[i].
-                        getName(), fmds[i].getObjectIdFieldType(), true), val);
-                }
+                Reflection.set(copy, field, Reflection.get(oid, field));
             }
+            else { // property
+                val = Reflection.get(oid, Reflection.findGetter(oidType,
+                        fmd.getName(), true));
+                Reflection.set(copy, Reflection.findSetter(oidType, fmd.
+                        getName(), fmd.getObjectIdFieldType(), true), val);
+            }
+        }
             return copy;
     }
 
@@ -479,18 +480,18 @@
      */
     private static boolean assign(OpenJPAStateManager sm, StoreManager store,
         FieldMetaData[] pks, boolean preFlush) {
-        for (int i = 0; i < pks.length; i++)
-            // If we are generating values...
-            if (pks[i].getValueStrategy() != ValueStrategies.NONE) {
+        // If we are generating values...
+        for (FieldMetaData pk : pks)
+            if (pk.getValueStrategy() != ValueStrategies.NONE) {
                 // If a value already exists on this field, throw exception.
                 // This is considered an application coding error.
-                if (!sm.isDefaultValue(pks[i].getIndex()))
+                if (!sm.isDefaultValue(pk.getIndex()))
                     throw new InvalidStateException(_loc2.get("existing-value-override-excep",
-                            pks[i].getFullName(false), Exceptions.toString(sm.getPersistenceCapable()),
+                            pk.getFullName(false), Exceptions.toString(sm.getPersistenceCapable()),
                             sm.getPCState().getClass().getSimpleName()));
                 // Assign the generated value
-                if (store.assignField(sm, pks[i].getIndex(), preFlush))
-                    pks[i].setValueGenerated(true);
+                if (store.assignField(sm, pk.getIndex(), preFlush))
+                    pk.setValueGenerated(true);
                 else
                     return false;
             }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/CacheMap.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/CacheMap.java
index 2560cb7..63e75c7 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/CacheMap.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/CacheMap.java
@@ -430,9 +430,9 @@
 
     public void putAll(Map map, boolean replaceExisting) {
         Map.Entry entry;
-        for (Iterator itr = map.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
-            if(replaceExisting || !containsKey(entry.getKey())) {
+        for (Object o : map.entrySet()) {
+            entry = (Entry) o;
+            if (replaceExisting || !containsKey(entry.getKey())) {
                 put(entry.getKey(), entry.getValue());
             }
         }
@@ -494,8 +494,8 @@
 
     private void notifyEntryRemovals(Set set) {
         Map.Entry entry;
-        for (Iterator itr = set.iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : set) {
+            entry = (Entry) o;
             if (entry.getValue() != null)
                 entryRemoved(entry.getKey(), entry.getValue(), false);
         }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ImplHelper.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ImplHelper.java
index decf29f..9d30db4 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ImplHelper.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ImplHelper.java
@@ -22,7 +22,6 @@
 import java.util.BitSet;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
@@ -97,18 +96,20 @@
         Collection failed = null;
         OpenJPAStateManager sm;
         LockManager lm;
-        for (Iterator itr = sms.iterator(); itr.hasNext();) {
-            sm = (OpenJPAStateManager) itr.next();
+        for (Object o : sms) {
+            sm = (OpenJPAStateManager) o;
             if (sm.getManagedInstance() == null) {
                 if (!store.initialize(sm, state, fetch, context))
                     failed = addFailedId(sm, failed);
-            } else if (load != StoreManager.FORCE_LOAD_NONE
-                || sm.getPCState() == PCState.HOLLOW) {
+            }
+            else if (load != StoreManager.FORCE_LOAD_NONE
+                    || sm.getPCState() == PCState.HOLLOW) {
                 lm = sm.getContext().getLockManager();
                 if (!store.load(sm, sm.getUnloaded(fetch), fetch,
-                    lm.getLockLevel(sm), context))
+                        lm.getLockLevel(sm), context))
                     failed = addFailedId(sm, failed);
-            } else if (!store.exists(sm, context))
+            }
+            else if (!store.exists(sm, context))
                 failed = addFailedId(sm, failed);
         }
         return (failed == null) ? Collections.EMPTY_LIST : failed;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/MultiLoaderClassResolver.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/MultiLoaderClassResolver.java
index bd530ba..64eb346 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/MultiLoaderClassResolver.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/MultiLoaderClassResolver.java
@@ -38,8 +38,9 @@
     }
 
     public MultiLoaderClassResolver(ClassLoader[] loaders) {
-        for (int i = 0; i < loaders.length; i++)
-            _loader.addClassLoader(loaders[i]);
+        for (ClassLoader loader : loaders) {
+            _loader.addClassLoader(loader);
+        }
     }
 
     public boolean addClassLoader(ClassLoader loader) {
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyCollections.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyCollections.java
index a54f5de..9f94c53 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyCollections.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyCollections.java
@@ -152,8 +152,9 @@
      */
     public static boolean addAll(ProxyCollection coll, Collection values) {
         boolean added = false;
-        for (Iterator<?> itr = values.iterator(); itr.hasNext();)
-            added |= coll.add(itr.next());
+        for (Object value : values) {
+            added |= coll.add(value);
+        }
         return added;
     }
 
@@ -162,8 +163,9 @@
      */
     public static void beforeClear(ProxyCollection coll) {
         dirty(coll, true);
-        for (Iterator<?> itr = coll.iterator(); itr.hasNext();)
-            removed(coll, itr.next(), false);
+        for (Object o : coll) {
+            removed(coll, o, false);
+        }
     }
 
     /**
@@ -456,8 +458,9 @@
      */
     public static boolean removeAll(ProxyCollection coll, Collection<?> vals) {
         boolean removed = false;
-        for (Iterator<?> itr = vals.iterator(); itr.hasNext();)
-            removed |= coll.remove(itr.next());
+        for (Object val : vals) {
+            removed |= coll.remove(val);
+        }
         return removed;
     }
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
index d6d80bc..caaf826 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
@@ -374,8 +374,8 @@
         if (concrete != null)
             return concrete;
         Class[] intfs = intf.getInterfaces();
-        for (int i = 0; i < intfs.length; i++) {
-            concrete = toConcreteType(intfs[i], concretes);
+        for (Class aClass : intfs) {
+            concrete = toConcreteType(aClass, concretes);
             if (concrete != null)
                 return concrete;
         }
@@ -732,8 +732,8 @@
         Class[] params;
         BCMethod m;
         Code code;
-        for (int i = 0; i < cons.length; i++) {
-            params = cons[i].getParameterTypes();
+        for (Constructor con : cons) {
+            params = con.getParameterTypes();
             m = bc.declareMethod("<init>", void.class, params);
             m.makePublic();
 
@@ -741,7 +741,7 @@
             code.aload().setThis();
             for (int j = 0; j < params.length; j++)
                 code.xload().setParam(j).setType(params[j]);
-            code.invokespecial().setMethod(cons[i]);
+            code.invokespecial().setMethod(con);
             code.vreturn();
             code.calculateMaxStack();
             code.calculateMaxLocals();
@@ -1310,14 +1310,14 @@
         Method[] meths = type.getMethods();
         Method getter;
         int mods;
-        for (int i = 0; i < meths.length; i++) {
-            mods = meths[i].getModifiers();
+        for (Method meth : meths) {
+            mods = meth.getModifiers();
             if (!Modifier.isPublic(mods) || Modifier.isStatic(mods))
                 continue;
-            if (!startsWith(meths[i].getName(), "set")
-                || meths[i].getParameterTypes().length != 1)
+            if (!startsWith(meth.getName(), "set")
+                    || meth.getParameterTypes().length != 1)
                 continue;
-            getter = findGetter(type, meths[i]);
+            getter = findGetter(type, meth);
             if (getter == null)
                 continue;
 
@@ -1326,7 +1326,7 @@
             code.aload().setParam(0);
             code.checkcast().setType(type);
             code.invokevirtual().setMethod(getter);
-            code.invokevirtual().setMethod(meths[i]);
+            code.invokevirtual().setMethod(meth);
         }
         code.aload().setLocal(copy);
     }
@@ -1341,20 +1341,22 @@
         Class[] afterParams;
         Method match;
         Method after;
-        for (int i = 0; i < meths.length; i++) {
+        for (Method meth : meths) {
             // Java 8 methods with a return type of KeySetView do not need to be proxied
-            if (meths[i].getReturnType().getName().contains("KeySetView")) continue;
+            if (meth.getReturnType().getName().contains("KeySetView")) continue;
 
-            params = toHelperParameters(meths[i].getParameterTypes(),
-                proxyType);
+            params = toHelperParameters(meth.getParameterTypes(),
+                    proxyType);
 
             // first check for overriding method
             try {
-                match = helper.getMethod(meths[i].getName(), params);
-                proxyOverrideMethod(bc, meths[i], match, params);
+                match = helper.getMethod(meth.getName(), params);
+                proxyOverrideMethod(bc, meth, match, params);
                 continue;
-            } catch (NoSuchMethodException nsme) {
-            } catch (Exception e) {
+            }
+            catch (NoSuchMethodException nsme) {
+            }
+            catch (Exception e) {
                 throw new GeneralException(e);
             }
 
@@ -1363,26 +1365,30 @@
             match = null;
             try {
                 match = helper.getMethod("before"
-                    + StringUtil.capitalize(meths[i].getName()), params);
-            } catch (NoSuchMethodException nsme) {
-            } catch (Exception e) {
+                        + StringUtil.capitalize(meth.getName()), params);
+            }
+            catch (NoSuchMethodException nsme) {
+            }
+            catch (Exception e) {
                 throw new GeneralException(e);
             }
             after = null;
             afterParams = null;
             try {
                 afterParams = toHelperAfterParameters(params,
-                    meths[i].getReturnType(), (match == null)
-                    ? void.class : match.getReturnType());
+                        meth.getReturnType(), (match == null)
+                                ? void.class : match.getReturnType());
                 after = helper.getMethod("after"
-                    + StringUtil.capitalize(meths[i].getName()), afterParams);
-            } catch (NoSuchMethodException nsme) {
-            } catch (Exception e) {
+                        + StringUtil.capitalize(meth.getName()), afterParams);
+            }
+            catch (NoSuchMethodException nsme) {
+            }
+            catch (Exception e) {
                 throw new GeneralException(e);
             }
             if (match != null || after != null)
-                proxyBeforeAfterMethod(bc, type, meths[i], match, params, after,
-                    afterParams);
+                proxyBeforeAfterMethod(bc, type, meth, match, params, after,
+                        afterParams);
         }
     }
 
@@ -1427,12 +1433,12 @@
     private boolean proxySetters(BCClass bc, Class type) {
         Method[] meths = type.getMethods();
         int setters = 0;
-        for (int i = 0; i < meths.length; i++) {
-            if (isSetter(meths[i]) && !Modifier.isFinal(meths[i].getModifiers())
-                && bc.getDeclaredMethod(meths[i].getName(),
-                meths[i].getParameterTypes()) == null) {
+        for (Method meth : meths) {
+            if (isSetter(meth) && !Modifier.isFinal(meth.getModifiers())
+                    && bc.getDeclaredMethod(meth.getName(),
+                    meth.getParameterTypes()) == null) {
                 setters++;
-                proxySetter(bc, type, meths[i]);
+                proxySetter(bc, type, meth);
             }
         }
         return setters > 0;
@@ -1622,19 +1628,19 @@
         Constructor match = null;
         Class matchParam = null;
         Class[] params;
-        for (int i = 0; i < cons.length; i++) {
-            params = cons[i].getParameterTypes();
+        for (Constructor con : cons) {
+            params = con.getParameterTypes();
             if (params.length != 1)
                 continue;
 
             // quit immediately on exact match
             if (params[0] == cls)
-                return cons[i];
+                return con;
 
             if (params[0].isAssignableFrom(cls) && (matchParam == null
-                || matchParam.isAssignableFrom(params[0]))) {
-                 // track most derived collection constructor
-                match = cons[i];
+                    || matchParam.isAssignableFrom(params[0]))) {
+                // track most derived collection constructor
+                match = con;
                 matchParam = params[0];
             }
         }
@@ -1714,14 +1720,15 @@
         final ProxyManagerImpl mgr = new ProxyManagerImpl();
         Class cls;
         BCClass bc;
-        for (int i = 0; i < types.size(); i++) {
-            cls = Class.forName((String) types.get(i));
+        for (Object type : types) {
+            cls = Class.forName((String) type);
             try {
                 if (Class.forName(getProxyClassName(cls, false), true,
-                    GeneratedClasses.getMostDerivedLoader(cls, Proxy.class))
-                    != null)
+                        GeneratedClasses.getMostDerivedLoader(cls, Proxy.class))
+                        != null)
                     continue;
-            } catch (Throwable t) {
+            }
+            catch (Throwable t) {
                 // expected if the class hasn't been generated
             }
 
@@ -1737,12 +1744,12 @@
                 final Class fCls = cls;
                 // TODO Move this to J2DOPrivHelper
                 bc = AccessController
-                    .doPrivileged(new PrivilegedAction<BCClass>() {
-                        @Override
-                        public BCClass run() {
-                            return mgr.generateProxyBeanBytecode(fCls, false);
-                        }
-                    });
+                        .doPrivileged(new PrivilegedAction<BCClass>() {
+                            @Override
+                            public BCClass run() {
+                                return mgr.generateProxyBeanBytecode(fCls, false);
+                            }
+                        });
             }
             // START - ALLOW PRINT STATEMENTS
             System.out.println(bc.getName());
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyMaps.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyMaps.java
index 877f5b1..3a73d25 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyMaps.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyMaps.java
@@ -41,8 +41,8 @@
     public static void beforeClear(ProxyMap map) {
         dirty(map, true);
         Map.Entry entry;
-        for (Iterator itr = map.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : map.entrySet()) {
+            entry = (Map.Entry) o;
             removed(map, entry.getKey(), true);
             removed(map, entry.getValue(), false);
         }
@@ -171,8 +171,8 @@
      */
     public static void putAll(ProxyMap map, Map values) {
         Map.Entry entry;
-        for (Iterator itr = values.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : values.entrySet()) {
+            entry = (Map.Entry) o;
             map.put(entry.getKey(), entry.getValue());
         }
     }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/ant/AbstractTask.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/ant/AbstractTask.java
index 421848d..19ff73b 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/ant/AbstractTask.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/ant/AbstractTask.java
@@ -207,13 +207,13 @@
             DirectoryScanner ds = fs.getDirectoryScanner(getProject());
 
             String[] dsFiles = ds.getIncludedFiles();
-            for (int j = 0; j < dsFiles.length; j++) {
-                File f = new File(dsFiles[j]);
+            for (String dsFile : dsFiles) {
+                File f = new File(dsFile);
                 if (!AccessController.doPrivileged(J2DoPrivHelper
                         .isFileAction(f)))
-                    f = new File(ds.getBasedir(), dsFiles[j]);
+                    f = new File(ds.getBasedir(), dsFile);
                 files.add(AccessController.doPrivileged(
-                    J2DoPrivHelper.getAbsolutePathAction(f)));
+                        J2DoPrivHelper.getAbsolutePathAction(f)));
             }
         }
         return (String[]) files.toArray(new String[files.size()]);
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
index a5c371c..a69eb68 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
@@ -45,7 +45,6 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
@@ -470,9 +469,9 @@
 
         PropertyDescriptor[] pds = getPropertyDescriptors();
         List<MethodDescriptor> descs = new ArrayList<>();
-        for (int i = 0; i < pds.length; i++) {
-            Method write = pds[i].getWriteMethod();
-            Method read = pds[i].getReadMethod();
+        for (PropertyDescriptor pd : pds) {
+            Method write = pd.getWriteMethod();
+            Method read = pd.getReadMethod();
             if (read != null && write != null) {
                 descs.add(new MethodDescriptor(write));
                 descs.add(new MethodDescriptor(read));
@@ -572,18 +571,18 @@
         }
         String[] vals = StringUtil.split(findLocalized(prop
             + "-values", false, val.getScope()), ",", 0);
-        for (int i = 0; i < vals.length; i++)
-            if (!aliases.contains(vals[i]))
-                allowed.add(vals[i]);
+        for (String s : vals)
+            if (!aliases.contains(s))
+                allowed.add(s);
         try {
             Class<?> intf = Class.forName(findLocalized(prop
                 + "-interface", true, val.getScope()), false,
                 getClass().getClassLoader());
             pd.setValue(ATTRIBUTE_INTERFACE, intf.getName());
             String[] impls = Services.getImplementors(intf);
-            for (int i = 0; i < impls.length; i++)
-                if (!aliases.contains(impls[i]))
-                    allowed.add(impls[i]);
+            for (String impl : impls)
+                if (!aliases.contains(impl))
+                    allowed.add(impl);
         } catch (Throwable t) {
         }
         if (!allowed.isEmpty())
@@ -721,8 +720,8 @@
         // now warn if there are any remaining properties that there
         // is an unhandled prop, and remove the unknown properties
         Map.Entry entry;
-        for (Iterator itr = remaining.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object value : remaining.entrySet()) {
+            entry = (Map.Entry) value;
             Object key = entry.getKey();
             if (key != null) {
                 warnInvalidProperty((String) key);
@@ -862,8 +861,9 @@
         String[] prefixes = ProductDerivations.getConfigurationPrefixes();
         List<String> l = new ArrayList<>(_vals.size() * prefixes.length);
         for(Value v : _vals) {
-            for (int j = 0; j < prefixes.length; j++)
-                l.add(prefixes[j] + "." + v.getProperty());
+            for (String prefix : prefixes) {
+                l.add(prefix + "." + v.getProperty());
+            }
         }
         return l;
     }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java
index 94fcbb4..5d9ae20 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java
@@ -24,7 +24,6 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.MissingResourceException;
@@ -555,8 +554,8 @@
         StringBuilder buf = new StringBuilder();
         Map.Entry entry;
         String val;
-        for (Iterator itr = map.entrySet().iterator(); itr.hasNext();) {
-            entry = (Map.Entry) itr.next();
+        for (Object o : map.entrySet()) {
+            entry = (Map.Entry) o;
             if (buf.length() > 0)
                 buf.append(", ");
             buf.append(entry.getKey()).append('=');
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivations.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivations.java
index ec92883..9e8c509 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivations.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivations.java
@@ -25,7 +25,6 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.MissingResourceException;
@@ -108,8 +107,8 @@
 
         List<String> prefixes = new ArrayList<>(2);
         prefixes.add("openjpa");
-        for (int i = 0; i < _derivations.length; i++) {
-            String prefix = _derivations[i].getConfigurationPrefix();
+        for (ProductDerivation derivation : _derivations) {
+            String prefix = derivation.getConfigurationPrefix();
             if (prefix != null && !"openjpa".equals(prefix))
                 prefixes.add(prefix);
         }
@@ -184,13 +183,15 @@
      * {@link BootstrapException} are swallowed.
      */
     public static void beforeConfigurationConstruct(ConfigurationProvider cp) {
-        for (int i = 0; i < _derivations.length; i++) {
+        for (ProductDerivation derivation : _derivations) {
             try {
-                _derivations[i].beforeConfigurationConstruct(cp);
-            } catch (BootstrapException be) {
-            	if (be.isFatal())
-            		throw be;
-            } catch (Exception e) {
+                derivation.beforeConfigurationConstruct(cp);
+            }
+            catch (BootstrapException be) {
+                if (be.isFatal())
+                    throw be;
+            }
+            catch (Exception e) {
                 // can't log; no configuration yet
                 e.printStackTrace();
             }
@@ -203,13 +204,15 @@
      * {@link BootstrapException} are swallowed.
      */
     public static void beforeConfigurationLoad(Configuration conf) {
-        for (int i = 0; i < _derivations.length; i++) {
+        for (ProductDerivation derivation : _derivations) {
             try {
-                _derivations[i].beforeConfigurationLoad(conf);
-            } catch (BootstrapException be) {
-            	if (be.isFatal())
-            		throw be;
-            } catch (Exception e) {
+                derivation.beforeConfigurationLoad(conf);
+            }
+            catch (BootstrapException be) {
+                if (be.isFatal())
+                    throw be;
+            }
+            catch (Exception e) {
                 // logging not configured yet
                 e.printStackTrace();
             }
@@ -222,13 +225,15 @@
      * {@link BootstrapException} are swallowed.
      */
     public static void afterSpecificationSet(Configuration conf) {
-        for (int i = 0; i < _derivations.length; i++) {
+        for (ProductDerivation derivation : _derivations) {
             try {
-                _derivations[i].afterSpecificationSet(conf);
-            } catch (BootstrapException be) {
-            	if (be.isFatal())
-            		throw be;
-            } catch (Exception e) {
+                derivation.afterSpecificationSet(conf);
+            }
+            catch (BootstrapException be) {
+                if (be.isFatal())
+                    throw be;
+            }
+            catch (Exception e) {
                 // logging not configured yet
                 e.printStackTrace();
             }
@@ -242,10 +247,11 @@
      * @since 0.9.7
      */
     public static void beforeClose(Configuration conf) {
-        for (int i = 0; i < _derivations.length; i++) {
+        for (ProductDerivation derivation : _derivations) {
             try {
-                _derivations[i].beforeConfigurationClose(conf);
-            } catch (Exception e) {
+                derivation.beforeConfigurationClose(conf);
+            }
+            catch (Exception e) {
                 conf.getConfigurationLog().warn(_loc.get("before-close-ex"), e);
             }
         }
@@ -436,8 +442,8 @@
         Collection newMembers) {
         if (newMembers == null || collection == null)
             return;
-        for (Iterator iter = newMembers.iterator(); iter.hasNext(); ) {
-            String fqLoc = base + "#" + iter.next();
+        for (Object newMember : newMembers) {
+            String fqLoc = base + "#" + newMember;
             if (!collection.contains(fqLoc))
                 collection.add(fqLoc);
         }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/jdbc/SQLFormatter.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/jdbc/SQLFormatter.java
index 6ec3355..bcc3a82 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/jdbc/SQLFormatter.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/jdbc/SQLFormatter.java
@@ -186,9 +186,9 @@
         StringBuilder clause;
         List<StringBuilder> clauses = new ArrayList<>();
         clauses.add(new StringBuilder());
-        for (int i = 0; i < separators.length; i++) {
-            end = lowerCaseSql.indexOf(" " + separators[i].toLowerCase(),
-                start);
+        for (String separator : separators) {
+            end = lowerCaseSql.indexOf(" " + separator.toLowerCase(),
+                    start);
             if (end == -1)
                 break;
 
@@ -198,9 +198,9 @@
             clause = new StringBuilder();
             clauses.add(clause);
             clause.append(clauseIndent);
-            clause.append(separators[i]);
+            clause.append(separator);
 
-            start = end + 1 + separators[i].length();
+            start = end + 1 + separator.length();
         }
 
         clause = clauses.get(clauses.size() - 1);
@@ -265,9 +265,9 @@
 
     public static void main(String [] args) {
         SQLFormatter formatter = new SQLFormatter();
-        for (int i = 0; i < args.length; i++) {
+        for (String arg : args) {
             // START - ALLOW PRINT STATEMENTS
-            System.out.println(formatter.prettyPrint(args[i]));
+            System.out.println(formatter.prettyPrint(arg));
             // STOP - ALLOW PRINT STATEMENTS
         }
     }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/LogFactoryImpl.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/LogFactoryImpl.java
index 6b8a9fc..6552d81 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/LogFactoryImpl.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/LogFactoryImpl.java
@@ -27,7 +27,6 @@
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -279,9 +278,8 @@
     public void setInto(Options opts) {
         if (!opts.isEmpty()) {
             Map.Entry<Object, Object> e;
-            for (Iterator<Map.Entry<Object, Object>> iter =
-                opts.entrySet().iterator(); iter.hasNext();) {
-                e = iter.next();
+            for (Map.Entry<Object, Object> objectObjectEntry : opts.entrySet()) {
+                e = objectObjectEntry;
                 _configuredLevels.put(shorten((String) e.getKey()), getLevel((String) e.getValue()));
             }
             opts.clear();
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/MultiLogFactory.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/MultiLogFactory.java
index a7b4f44..f059af0 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/MultiLogFactory.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/MultiLogFactory.java
@@ -106,100 +106,110 @@
 
         @Override
         public void trace(Object msg) {
-            for (int i = 0; i < _logs.length; i++)
-                _logs[i].trace(msg);
+            for (Log log : _logs) {
+                log.trace(msg);
+            }
         }
 
         @Override
         public void trace(Object msg, Throwable t) {
-            for (int i = 0; i < _logs.length; i++)
-                _logs[i].trace(msg, t);
+            for (Log log : _logs) {
+                log.trace(msg, t);
+            }
         }
 
         @Override
         public void info(Object msg) {
-            for (int i = 0; i < _logs.length; i++)
-                _logs[i].info(msg);
+            for (Log log : _logs) {
+                log.info(msg);
+            }
         }
 
         @Override
         public void info(Object msg, Throwable t) {
-            for (int i = 0; i < _logs.length; i++)
-                _logs[i].info(msg, t);
+            for (Log log : _logs) {
+                log.info(msg, t);
+            }
         }
 
         @Override
         public void warn(Object msg) {
-            for (int i = 0; i < _logs.length; i++)
-                _logs[i].warn(msg);
+            for (Log log : _logs) {
+                log.warn(msg);
+            }
         }
 
         @Override
         public void warn(Object msg, Throwable t) {
-            for (int i = 0; i < _logs.length; i++)
-                _logs[i].warn(msg, t);
+            for (Log log : _logs) {
+                log.warn(msg, t);
+            }
         }
 
         @Override
         public void error(Object msg) {
-            for (int i = 0; i < _logs.length; i++)
-                _logs[i].error(msg);
+            for (Log log : _logs) {
+                log.error(msg);
+            }
         }
 
         @Override
         public void error(Object msg, Throwable t) {
-            for (int i = 0; i < _logs.length; i++)
-                _logs[i].error(msg, t);
+            for (Log log : _logs) {
+                log.error(msg, t);
+            }
         }
 
         @Override
         public void fatal(Object msg) {
-            for (int i = 0; i < _logs.length; i++)
-                _logs[i].fatal(msg);
+            for (Log log : _logs) {
+                log.fatal(msg);
+            }
         }
 
         @Override
         public void fatal(Object msg, Throwable t) {
-            for (int i = 0; i < _logs.length; i++)
-                _logs[i].fatal(msg, t);
+            for (Log log : _logs) {
+                log.fatal(msg, t);
+            }
         }
 
         @Override
         public boolean isTraceEnabled() {
-            for (int i = 0; i < _logs.length; i++)
-                if (_logs[i].isTraceEnabled())
+            for (Log log : _logs)
+                if (log.isTraceEnabled())
                     return true;
             return false;
         }
 
         @Override
         public boolean isInfoEnabled() {
-            for (int i = 0; i < _logs.length; i++)
-                if (_logs[i].isInfoEnabled())
+            for (Log log : _logs)
+                if (log.isInfoEnabled())
                     return true;
             return false;
         }
 
         @Override
         public boolean isWarnEnabled() {
-            for (int i = 0; i < _logs.length; i++)
-                if (_logs[i].isWarnEnabled())
+            for (Log log : _logs)
+                if (log.isWarnEnabled())
                     return true;
             return false;
         }
 
         @Override
         public boolean isErrorEnabled() {
-            for (int i = 0; i < _logs.length; i++)
-                if (_logs[i].isErrorEnabled())
+            for (Log log : _logs)
+                if (log.isErrorEnabled())
                     return true;
             return false;
         }
 
         @Override
         public boolean isFatalEnabled() {
-            for (int i = 0; i < _logs.length; i++)
-                if (_logs[i].isFatalEnabled())
+            for (Log log : _logs)
+                if (log.isFatalEnabled())
                     return true;
             return false;
         }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/CFMetaDataParser.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/CFMetaDataParser.java
index 71a4cfb..1d489ff 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/CFMetaDataParser.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/CFMetaDataParser.java
@@ -359,10 +359,11 @@
 
         // try with standard packages
         if (!fullName) {
-            for (int i = 0; i < PACKAGES.length; i++) {
+            for (String aPackage : PACKAGES) {
                 try {
-                    return ClassUtil.toClass(PACKAGES[i] + name, resolve, loader);
-                } catch (RuntimeException re) {
+                    return ClassUtil.toClass(aPackage + name, resolve, loader);
+                }
+                catch (RuntimeException re) {
                 }
             }
         }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/CFMetaDataSerializer.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/CFMetaDataSerializer.java
index 259a9ae..fa3adc8 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/CFMetaDataSerializer.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/CFMetaDataSerializer.java
@@ -19,7 +19,6 @@
 package org.apache.openjpa.lib.meta;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.Map;
@@ -63,8 +62,8 @@
         String packageName;
         Collection<Object> packageObjs;
         Object obj;
-        for (Iterator<Object> itr = objs.iterator(); itr.hasNext();) {
-            obj = itr.next();
+        for (Object o : objs) {
+            obj = o;
             packageName = getPackage(obj);
             packageObjs = packages.computeIfAbsent(packageName, k -> new LinkedList<>());
             packageObjs.add(obj);
@@ -91,10 +90,10 @@
 
         // check other known packages
         String[] packages = CFMetaDataParser.PACKAGES;
-        for (int i = 0; i < packages.length; i++)
-            if (name.startsWith(packages[i])
-                && name.lastIndexOf('.') == packages[i].length() - 1)
-                return name.substring(packages[i].length());
+        for (String aPackage : packages)
+            if (name.startsWith(aPackage)
+                    && name.lastIndexOf('.') == aPackage.length() - 1)
+                return name.substring(aPackage.length());
         return name;
     }
 }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassAnnotationMetaDataFilter.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassAnnotationMetaDataFilter.java
index 0d269d3..4dbe4ec 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassAnnotationMetaDataFilter.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassAnnotationMetaDataFilter.java
@@ -136,8 +136,8 @@
      * Return whether the given annotation matches our candidates.
      */
     private boolean matchAnnotation(String name) {
-        for (int i = 0; i < _annos.length; i++)
-            if (name.equals(_annos[i]))
+        for (String anno : _annos)
+            if (name.equals(anno))
                 return true;
         return false;
     }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassArgParser.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassArgParser.java
index e4a22f7..5c4c7ba 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassArgParser.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassArgParser.java
@@ -33,7 +33,6 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -186,9 +185,8 @@
         Map.Entry<Object, String[]> entry;
         String[] names;
         Class<?>[] objs;
-        for (Iterator<Map.Entry<Object, String[]>> i =
-            map.entrySet().iterator(); i.hasNext();) {
-            entry = i.next();
+        for (Map.Entry<Object, String[]> objectEntry : map.entrySet()) {
+            entry = objectEntry;
             names = entry.getValue();
             objs = new Class[names.length];
             for (int j = 0; j < names.length; j++) {
@@ -506,11 +504,11 @@
 
         // make sure the rest of the element name matches
         char[] match = _endElements[matchIdx];
-        for (int i = 0; i < match.length; i++) {
+        for (char c : match) {
             ch = in.read();
             if (ch == -1)
                 return TOKEN_EOF;
-            if (ch != match[i])
+            if (ch != c)
                 return TOKEN_NONE;
         }
 
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClasspathMetaDataIterator.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClasspathMetaDataIterator.java
index 5da5b66..4acc1a4 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClasspathMetaDataIterator.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClasspathMetaDataIterator.java
@@ -55,23 +55,24 @@
         String[] tokens = StringUtil.split(path,
             props.getProperty("path.separator"), 0);
 
-        for (int i = 0; i < tokens.length; i++) {
-            if (dirs != null && dirs.length != 0 && !endsWith(tokens[i], dirs))
+        for (String token : tokens) {
+            if (dirs != null && dirs.length != 0 && !endsWith(token, dirs))
                 continue;
 
-            File file = new File(tokens[i]);
+            File file = new File(token);
             if (!AccessController.doPrivileged(
                     J2DoPrivHelper.existsAction(file)))
                 continue;
             if (AccessController.doPrivileged(J2DoPrivHelper
                     .isDirectoryAction(file)))
                 addIterator(new FileMetaDataIterator(file, filter));
-            else if (tokens[i].endsWith(".jar")) {
+            else if (token.endsWith(".jar")) {
                 try {
                     ZipFile zFile = AccessController
-                        .doPrivileged(J2DoPrivHelper.newZipFileAction(file));
+                            .doPrivileged(J2DoPrivHelper.newZipFileAction(file));
                     addIterator(new ZipFileMetaDataIterator(zFile, filter));
-                } catch (PrivilegedActionException pae) {
+                }
+                catch (PrivilegedActionException pae) {
                     throw (IOException) pae.getException();
                 }
             }
@@ -82,8 +83,8 @@
      * Return true if the given token ends with any of the given strings.
      */
     private static boolean endsWith(String token, String[] suffs) {
-        for (int i = 0; i < suffs.length; i++)
-            if (token.endsWith(suffs[i]))
+        for (String suff : suffs)
+            if (token.endsWith(suff))
                 return true;
         return false;
     }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/FileMetaDataIterator.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/FileMetaDataIterator.java
index 3ce9158..2293218 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/FileMetaDataIterator.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/FileMetaDataIterator.java
@@ -96,8 +96,9 @@
                 File[] files = (File[]) AccessController
                     .doPrivileged(J2DoPrivHelper.listFilesAction(file));
                 if (files != null)
-                    for (int i = 0; i < files.length; i++)
-                        scanned = scan(files[i], filter, rsrc, metas, scanned);
+                    for (File value : files) {
+                        scanned = scan(value, filter, rsrc, metas, scanned);
+                    }
             }
         }
         return scanned;
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLMetaDataSerializer.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLMetaDataSerializer.java
index afd93bb..26a046b 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLMetaDataSerializer.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLMetaDataSerializer.java
@@ -323,8 +323,8 @@
 
         LexicalHandler lh = (LexicalHandler) _handler;
         char[] chars;
-        for (int i = 0; i < comments.length; i++) {
-            chars = comments[i].toCharArray();
+        for (String comment : comments) {
+            chars = comment.toCharArray();
             lh.comment(chars, 0, chars.length);
         }
     }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/AbstractNonSequentialResultList.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/AbstractNonSequentialResultList.java
index 8ef2337..d2c5722 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/AbstractNonSequentialResultList.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/AbstractNonSequentialResultList.java
@@ -65,8 +65,8 @@
     @Override
     public boolean containsAll(Collection c) {
         assertOpen();
-        for (Iterator itr = c.iterator(); itr.hasNext();)
-            if (!contains(itr.next()))
+        for (Object o : c)
+            if (!contains(o))
                 return false;
         return true;
     }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/AbstractSequentialResultList.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/AbstractSequentialResultList.java
index 1e48294..f2412af 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/AbstractSequentialResultList.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/AbstractSequentialResultList.java
@@ -55,8 +55,8 @@
     @Override
     public boolean containsAll(Collection c) {
         assertOpen();
-        for (Iterator itr = c.iterator(); itr.hasNext();)
-            if (!contains(itr.next()))
+        for (Object o : c)
+            if (!contains(o))
                 return false;
         return true;
     }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/MergedResultObjectProvider.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/MergedResultObjectProvider.java
index 3118bfe..61748bc 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/MergedResultObjectProvider.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/MergedResultObjectProvider.java
@@ -98,8 +98,8 @@
 
         int total = 0;
         int size;
-        for (int i = 0; i < _rops.length; i++) {
-            size = _rops[i].size();
+        for (ResultObjectProvider rop : _rops) {
+            size = rop.size();
             if (size == Integer.MAX_VALUE) {
                 total = size;
                 break;
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/RandomAccessResultList.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/RandomAccessResultList.java
index 99415da..21a77c0 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/RandomAccessResultList.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/RandomAccessResultList.java
@@ -204,8 +204,9 @@
         if (_full != null)
             return new ListResultList(Arrays.asList(_full));
         ArrayList list = new ArrayList();
-        for (Iterator itr = iterator(); itr.hasNext();)
-            list.add(itr.next());
+        for (Object o : this) {
+            list.add(o);
+        }
         return list;
     }
 
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/SimpleResultList.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/SimpleResultList.java
index 48500d2..8794c68 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/SimpleResultList.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/SimpleResultList.java
@@ -20,7 +20,6 @@
 
 import java.io.ObjectStreamException;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -111,8 +110,9 @@
 
         // load results into list
         List list = new ArrayList();
-        for (Iterator itr = iterator(); itr.hasNext();)
-            list.add(itr.next());
+        for (Object o : this) {
+            list.add(o);
+        }
         return list;
     }
 }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/WindowResultList.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/WindowResultList.java
index 2df1ef0..90fc8df 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/WindowResultList.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/WindowResultList.java
@@ -20,7 +20,6 @@
 
 import java.io.ObjectStreamException;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -172,8 +171,9 @@
 
         // load results into list
         List list = new ArrayList();
-        for (Iterator itr = iterator(); itr.hasNext();)
-            list.add(itr.next());
+        for (Object o : this) {
+            list.add(o);
+        }
         return list;
     }
 }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Base16Encoder.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Base16Encoder.java
index 5986264..9a99618 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Base16Encoder.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Base16Encoder.java
@@ -34,9 +34,9 @@
      */
     public static String encode(byte[] byteArray) {
         StringBuilder hexBuffer = new StringBuilder(byteArray.length * 2);
-        for (int i = 0; i < byteArray.length; i++)
+        for (byte b : byteArray)
             for (int j = 1; j >= 0; j--)
-                hexBuffer.append(HEX[(byteArray[i] >> (j * 4)) & 0xF]);
+                hexBuffer.append(HEX[(b >> (j * 4)) & 0xF]);
         return hexBuffer.toString();
     }
 
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/ClassUtil.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/ClassUtil.java
index 6f3225a..e4d6231 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/ClassUtil.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/ClassUtil.java
@@ -137,9 +137,9 @@
         if (dims > 0) {
             if (fullName.length() == dims + 1) {
                 String classCode = fullName.substring(dims);
-                for (int i = 0; i < _codes.length; i++) {
-                    if (_codes[i][2].equals(classCode)) {
-                        fullName = (String)_codes[i][1];
+                for (Object[] code : _codes) {
+                    if (code[2].equals(classCode)) {
+                        fullName = (String) code[1];
                         break;
                     }
                 }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/FormatPreservingProperties.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/FormatPreservingProperties.java
index 921fd28..dce2037 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/FormatPreservingProperties.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/FormatPreservingProperties.java
@@ -211,8 +211,8 @@
     @Override
     public synchronized void putAll(Map m) {
         Map.Entry e;
-        for (Iterator iter = m.entrySet().iterator(); iter.hasNext();) {
-            e = (Map.Entry) iter.next();
+        for (Object o : m.entrySet()) {
+            e = (Map.Entry) o;
             put(e.getKey(), e.getValue());
         }
     }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/MultiClassLoader.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/MultiClassLoader.java
index 2a9a25d..946db69 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/MultiClassLoader.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/MultiClassLoader.java
@@ -152,8 +152,8 @@
 
         // use iterator so that the thread loader is not resolved
         boolean added = false;
-        for (Iterator<ClassLoader> itr = multi._loaders.iterator(); itr.hasNext();) {
-            if (addClassLoader(index, (ClassLoader) itr.next())) {
+        for (ClassLoader loader : multi._loaders) {
+            if (addClassLoader(index, loader)) {
                 index++;
                 added = true;
             }
@@ -172,8 +172,9 @@
 
         // use iterator so that the thread loader is not resolved
         boolean added = false;
-        for (Iterator<ClassLoader> itr = multi._loaders.iterator(); itr.hasNext();)
-            added = addClassLoader((ClassLoader) itr.next()) || added;
+        for (ClassLoader loader : multi._loaders) {
+            added = addClassLoader(loader) || added;
+        }
         return added;
     }
 
@@ -210,14 +211,15 @@
     @Override
     protected Class<?> findClass(String name) throws ClassNotFoundException {
         ClassLoader loader;
-        for (Iterator<ClassLoader> itr = _loaders.iterator(); itr.hasNext();) {
-            loader = (ClassLoader) itr.next();
+        for (ClassLoader classLoader : _loaders) {
+            loader = classLoader;
             if (loader == THREAD_LOADER)
                 loader = AccessController.doPrivileged(
-                    J2DoPrivHelper.getContextClassLoaderAction());
+                        J2DoPrivHelper.getContextClassLoaderAction());
             try {
                 return Class.forName(name, false, loader);
-            } catch (Throwable t) {
+            }
+            catch (Throwable t) {
             }
         }
         throw new ClassNotFoundException(name);
@@ -227,17 +229,17 @@
     protected URL findResource(String name) {
         ClassLoader loader;
         URL rsrc;
-        for (Iterator<ClassLoader> itr = _loaders.iterator(); itr.hasNext();) {
-            loader = (ClassLoader) itr.next();
+        for (ClassLoader classLoader : _loaders) {
+            loader = classLoader;
             if (loader == THREAD_LOADER)
                 loader = AccessController.doPrivileged(
-                    J2DoPrivHelper.getContextClassLoaderAction());
+                        J2DoPrivHelper.getContextClassLoaderAction());
 
             if (loader == null) // skip
                 continue;
 
             rsrc = AccessController.doPrivileged(
-                J2DoPrivHelper.getResourceAction(loader, name));
+                    J2DoPrivHelper.getResourceAction(loader, name));
             if (rsrc != null)
                 return rsrc;
         }
@@ -250,24 +252,25 @@
         Enumeration<URL> rsrcs;
         URL rsrc;
         Vector<URL> all = new Vector<>();
-        for (Iterator<ClassLoader> itr = _loaders.iterator(); itr.hasNext();) {
-            loader = itr.next();
+        for (ClassLoader classLoader : _loaders) {
+            loader = classLoader;
             if (loader == THREAD_LOADER)
                 loader = AccessController.doPrivileged(
-                    J2DoPrivHelper.getContextClassLoaderAction());
+                        J2DoPrivHelper.getContextClassLoaderAction());
 
             if (loader == null) // skip
                 continue;
 
             try {
                 rsrcs = AccessController.doPrivileged(
-                    J2DoPrivHelper.getResourcesAction(loader, name));
+                        J2DoPrivHelper.getResourcesAction(loader, name));
                 while (rsrcs.hasMoreElements()) {
                     rsrc = rsrcs.nextElement();
                     if (!all.contains(rsrc))
                         all.addElement(rsrc);
                 }
-            } catch (PrivilegedActionException pae) {
+            }
+            catch (PrivilegedActionException pae) {
                 throw (IOException) pae.getException();
             }
         }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Options.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Options.java
index 072409f..73a6061 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Options.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Options.java
@@ -25,7 +25,6 @@
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -173,8 +172,8 @@
         // set all defaults that have no explicit value
         Map.Entry entry = null;
         if (defaults != null) {
-            for (Iterator<?> itr = defaults.entrySet().iterator(); itr.hasNext();) {
-                entry = (Map.Entry) itr.next();
+            for (Map.Entry<Object, Object> objectObjectEntry : defaults.entrySet()) {
+                entry = (Map.Entry) objectObjectEntry;
                 if (!containsKey(entry.getKey()))
                     setInto(obj, entry);
             }
@@ -183,8 +182,8 @@
         // set from main map
         Options invalidEntries = null;
         Map.Entry e;
-        for (Iterator<?> itr = entrySet().iterator(); itr.hasNext();) {
-            e = (Map.Entry) itr.next();
+        for (Map.Entry<Object, Object> objectObjectEntry : entrySet()) {
+            e = (Map.Entry) objectObjectEntry;
             if (!setInto(obj, e)) {
                 if (invalidEntries == null)
                     invalidEntries = new Options();
@@ -258,23 +257,24 @@
         // look for a setter method matching the key
         Method[] meths = type.getMethods();
         Class<?>[] params;
-        for (int i = 0; i < meths.length; i++) {
-            if (meths[i].getName().startsWith("set")) {
-                params = meths[i].getParameterTypes();
+        for (Method meth : meths) {
+            if (meth.getName().startsWith("set")) {
+                params = meth.getParameterTypes();
                 if (params.length == 0)
                     continue;
                 if (params[0].isArray())
                     continue;
 
                 names.add(StringUtil.capitalize(
-                    meths[i].getName().substring(3)));
+                        meth.getName().substring(3)));
             }
         }
 
         // check for public fields
         Field[] fields = type.getFields();
-        for (int i = 0; i < fields.length; i++)
-            names.add(StringUtil.capitalize(fields[i].getName()));
+        for (Field field : fields) {
+            names.add(StringUtil.capitalize(field.getName()));
+        }
 
         return names;
     }
@@ -311,9 +311,9 @@
         Method setMeth = null;
         Method getMeth = null;
         Class[] params;
-        for (int i = 0; i < meths.length; i++) {
-            if (meths[i].getName().equals(set)) {
-                params = meths[i].getParameterTypes();
+        for (Method meth : meths) {
+            if (meth.getName().equals(set)) {
+                params = meth.getParameterTypes();
                 if (params.length == 0)
                     continue;
                 if (params[0].isArray())
@@ -323,14 +323,15 @@
                 // it has less parameters than any other setter, or if it uses
                 // string parameters
                 if (setMeth == null)
-                    setMeth = meths[i];
+                    setMeth = meth;
                 else if (params.length < setMeth.getParameterTypes().length)
-                    setMeth = meths[i];
+                    setMeth = meth;
                 else if (params.length == setMeth.getParameterTypes().length
-                    && params[0] == String.class)
-                    setMeth = meths[i];
-            } else if (meths[i].getName().equals(get))
-                getMeth = meths[i];
+                        && params[0] == String.class)
+                    setMeth = meth;
+            }
+            else if (meth.getName().equals(get))
+                getMeth = meth;
         }
 
         // if no methods found, check for public field
@@ -339,11 +340,11 @@
         if (setter == null) {
             Field[] fields = type.getFields();
             String uncapBase = StringUtil.uncapitalize(find[0]);
-            for (int i = 0; i < fields.length; i++) {
-                if (fields[i].getName().equals(base)
-                    || fields[i].getName().equals(uncapBase)) {
-                    setter = fields[i];
-                    getter = fields[i];
+            for (Field field : fields) {
+                if (field.getName().equals(base)
+                        || field.getName().equals(uncapBase)) {
+                    setter = field;
+                    getter = field;
                     break;
                 }
             }
@@ -423,9 +424,9 @@
 
         // for primitives, recurse on wrapper type
         if (type.isPrimitive())
-            for (int i = 0; i < _primWrappers.length; i++)
-                if (type == _primWrappers[i][0])
-                    return stringToObject(str, (Class<?>) _primWrappers[i][1]);
+            for (Object[] primWrapper : _primWrappers)
+                if (type == primWrapper[0])
+                    return stringToObject(str, (Class<?>) primWrapper[1]);
 
         // look for a string constructor
         Exception err = null;
@@ -460,9 +461,9 @@
      * Returns the default value for the given parameter type.
      */
     private Object getDefaultValue(Class<?> type) {
-        for (int i = 0; i < _primWrappers.length; i++)
-            if (_primWrappers[i][0] == type)
-                return _primWrappers[i][2];
+        for (Object[] primWrapper : _primWrappers)
+            if (primWrapper[0] == type)
+                return primWrapper[2];
 
         return null;
     }
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Services.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Services.java
index 67dfeb6..949e13d 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Services.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Services.java
@@ -164,9 +164,9 @@
 
         // filter out any classes that have any classloader issues wrt.
         // the specified service class.
-        for (int i = 0; i < classes.length; i++)
-            if (!serviceClass.isAssignableFrom(classes[i]))
-                invalid.add(classes[i]);
+        for (Class aClass : classes)
+            if (!serviceClass.isAssignableFrom(aClass))
+                invalid.add(aClass);
         if (invalid.size() != 0) {
             List list = new ArrayList(Arrays.asList(classes));
             list.removeAll(invalid);
@@ -214,9 +214,9 @@
             return new Class[0];
 
         List classes = new ArrayList(names.length);
-        for (int i = 0; i < names.length; i++) {
+        for (String name : names) {
             try {
-                classes.add(Class.forName(names[i], false, loader));
+                classes.add(Class.forName(name, false, loader));
             }
             catch (UnsupportedClassVersionError ecve) {
                 if (!skipMissing)
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/concurrent/ConcurrentHashMap.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/concurrent/ConcurrentHashMap.java
index d1b924b..59fb608 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/concurrent/ConcurrentHashMap.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/concurrent/ConcurrentHashMap.java
@@ -439,8 +439,8 @@
             resize(capacity);
         }
 
-        for (Iterator i = t.entrySet().iterator(); i.hasNext();) {
-            Map.Entry e = (Map.Entry) i.next();
+        for (Object o : t.entrySet()) {
+            Map.Entry e = (Map.Entry) o;
             put(e.getKey(), e.getValue());
         }
     }
@@ -598,8 +598,8 @@
         if (value == null) return containsNullValue();
 
         Entry tab[] = table;
-        for (int i = 0; i < tab.length; i++) {
-            for (Entry e = tab[i]; e != null; e = e.next) {
+        for (Entry entry : tab) {
+            for (Entry e = entry; e != null; e = e.next) {
                 if (value.equals(e.value)) return true;
             }
         }
@@ -611,8 +611,8 @@
      */
     private boolean containsNullValue() {
         Entry tab[] = table;
-        for (int i = 0; i < tab.length; i++) {
-            for (Entry e = tab[i]; e != null; e = e.next) {
+        for (Entry entry : tab) {
+            for (Entry e = entry; e != null; e = e.next) {
                 if (e.value == null) return true;
             }
         }
@@ -946,8 +946,8 @@
         s.writeInt(maxSize);
 
         // Write out keys and values(alternating)
-        for (Iterator i = entrySet().iterator(); i.hasNext();) {
-            Map.Entry e = (Map.Entry) i.next();
+        for (Object o : entrySet()) {
+            Map.Entry e = (Map.Entry) o;
             s.writeObject(e.getKey());
             s.writeObject(e.getValue());
         }
diff --git a/openjpa-lib/src/test/java/org/apache/openjpa/lib/conf/test/TestConfigurationImpl.java b/openjpa-lib/src/test/java/org/apache/openjpa/lib/conf/test/TestConfigurationImpl.java
index c878818..1bb9be3 100644
--- a/openjpa-lib/src/test/java/org/apache/openjpa/lib/conf/test/TestConfigurationImpl.java
+++ b/openjpa-lib/src/test/java/org/apache/openjpa/lib/conf/test/TestConfigurationImpl.java
@@ -174,18 +174,18 @@
     @Test
     public void testBeanAccessors() throws Exception {
         PropertyDescriptor[] pds = _conf.getPropertyDescriptors();
-        for (int i = 0; i < pds.length; i++) {
-            assertNotNull(pds[i].getShortDescription());
-            assertNotNull(pds[i].getDisplayName());
+        for (PropertyDescriptor pd : pds) {
+            assertNotNull(pd.getShortDescription());
+            assertNotNull(pd.getDisplayName());
 
-            assertNotNull(pds[i].getWriteMethod());
-            assertNotNull(pds[i].getReadMethod());
+            assertNotNull(pd.getWriteMethod());
+            assertNotNull(pd.getReadMethod());
 
-            pds[i].getReadMethod().invoke(_conf, (Object[]) null);
+            pd.getReadMethod().invoke(_conf, (Object[]) null);
 
-            Method setter = pds[i].getWriteMethod();
-            Method getter = pds[i].getReadMethod();
-            Class param = pds[i].getReadMethod().getReturnType();
+            Method setter = pd.getWriteMethod();
+            Method getter = pd.getReadMethod();
+            Class param = pd.getReadMethod().getReturnType();
 
             Object setVal = null;
             if (param == int.class)
@@ -200,7 +200,7 @@
             else
                 continue;
 
-            setter.invoke(_conf, new Object []{ setVal });
+            setter.invoke(_conf, new Object[]{setVal});
             assertEquals(setVal, getter.invoke(_conf, (Object[]) null));
         }
     }
diff --git a/openjpa-lib/src/test/java/org/apache/openjpa/lib/graph/TestDepthFirstAnalysis.java b/openjpa-lib/src/test/java/org/apache/openjpa/lib/graph/TestDepthFirstAnalysis.java
index f9dc00f..c4f5d5d 100644
--- a/openjpa-lib/src/test/java/org/apache/openjpa/lib/graph/TestDepthFirstAnalysis.java
+++ b/openjpa-lib/src/test/java/org/apache/openjpa/lib/graph/TestDepthFirstAnalysis.java
@@ -91,8 +91,8 @@
 
         int time = 0;
         Object node;
-        for (Iterator itr = nodes.iterator(); itr.hasNext();) {
-            node = itr.next();
+        for (Object o : nodes) {
+            node = o;
             assertTrue(time <= _dfa.getFinishedTime(node));
             time = _dfa.getFinishedTime(node);
         }
diff --git a/openjpa-lib/src/test/java/org/apache/openjpa/lib/rop/ResultListTest.java b/openjpa-lib/src/test/java/org/apache/openjpa/lib/rop/ResultListTest.java
index eed5fa3..92fde5a 100644
--- a/openjpa-lib/src/test/java/org/apache/openjpa/lib/rop/ResultListTest.java
+++ b/openjpa-lib/src/test/java/org/apache/openjpa/lib/rop/ResultListTest.java
@@ -80,8 +80,8 @@
 
     @Test
     public void testIterator() {
-        for (int i = 0; i < _lists.length; i++) {
-            Iterator itr = _lists[i].iterator();
+        for (ResultList list : _lists) {
+            Iterator itr = list.iterator();
             int count = 0;
             for (; itr.hasNext(); count++)
                 assertEquals(String.valueOf(count), itr.next());
@@ -89,28 +89,30 @@
             try {
                 itr.next();
                 fail("After last.");
-            } catch (IndexOutOfBoundsException | NoSuchElementException ioob) {
+            }
+            catch (IndexOutOfBoundsException | NoSuchElementException ioob) {
             }
         }
     }
 
     @Test
     public void testIteratorModification() {
-        for (int i = 0; i < _lists.length; i++) {
+        for (ResultList list : _lists) {
             try {
-                Iterator itr = _lists[i].iterator();
+                Iterator itr = list.iterator();
                 itr.next();
                 itr.remove();
                 fail("Allowed modification.");
-            } catch (Exception e) {
+            }
+            catch (Exception e) {
             }
         }
     }
 
     @Test
     public void testListIteratorForward() {
-        for (int i = 0; i < _lists.length; i++) {
-            ListIterator itr = _lists[i].listIterator();
+        for (ResultList list : _lists) {
+            ListIterator itr = list.listIterator();
             int count = 0;
             for (; itr.hasNext(); count++) {
                 assertEquals(count, itr.nextIndex());
@@ -120,15 +122,16 @@
             try {
                 itr.next();
                 fail("After last.");
-            } catch (IndexOutOfBoundsException | NoSuchElementException ioob) {
+            }
+            catch (IndexOutOfBoundsException | NoSuchElementException ioob) {
             }
         }
     }
 
     @Test
     public void testListIteratorIndex() {
-        for (int i = 0; i < _lists.length; i++) {
-            ListIterator itr = _lists[i].listIterator(50);
+        for (ResultList list : _lists) {
+            ListIterator itr = list.listIterator(50);
             int count = 50;
             for (; itr.hasNext(); count++) {
                 assertEquals(count, itr.nextIndex());
@@ -138,15 +141,16 @@
             try {
                 itr.next();
                 fail("After last.");
-            } catch (IndexOutOfBoundsException | NoSuchElementException ioob) {
+            }
+            catch (IndexOutOfBoundsException | NoSuchElementException ioob) {
             }
         }
     }
 
     @Test
     public void testListIteratorReverse() {
-        for (int i = 0; i < _lists.length; i++) {
-            ListIterator itr = _lists[i].listIterator(100);
+        for (ResultList list : _lists) {
+            ListIterator itr = list.listIterator(100);
             int count = 99;
             for (; itr.hasPrevious(); count--) {
                 assertEquals(count, itr.previousIndex());
@@ -156,20 +160,22 @@
             try {
                 itr.previous();
                 fail("Before first.");
-            } catch (IndexOutOfBoundsException | NoSuchElementException ioob) {
+            }
+            catch (IndexOutOfBoundsException | NoSuchElementException ioob) {
             }
         }
     }
 
     @Test
     public void testListIteratorModification() {
-        for (int i = 0; i < _lists.length; i++) {
+        for (ResultList list : _lists) {
             try {
-                ListIterator itr = _lists[i].listIterator();
+                ListIterator itr = list.listIterator();
                 itr.next();
                 itr.set("foo");
                 fail("Allowed modification.");
-            } catch (Exception e) {
+            }
+            catch (Exception e) {
             }
         }
     }
@@ -183,79 +189,84 @@
 
     @Test
     public void testContains() {
-        for (int i = 0; i < _lists.length; i++) {
-            assertTrue(_lists[i].contains("0"));
-            assertTrue(_lists[i].contains("50"));
-            assertTrue(_lists[i].contains("99"));
-            assertFalse(_lists[i].contains("-1"));
-            assertFalse(_lists[i].contains("100"));
-            assertFalse(_lists[i].contains(null));
-            assertTrue(_lists[i].containsAll(Arrays.asList(new String[]
-                { "0", "50", "99" })));
-            assertFalse(_lists[i].containsAll(Arrays.asList(new String[]
-                { "0", "-1", "99" })));
+        for (ResultList list : _lists) {
+            assertTrue(list.contains("0"));
+            assertTrue(list.contains("50"));
+            assertTrue(list.contains("99"));
+            assertFalse(list.contains("-1"));
+            assertFalse(list.contains("100"));
+            assertFalse(list.contains(null));
+            assertTrue(list.containsAll(Arrays.asList(new String[]
+                    {"0", "50", "99"})));
+            assertFalse(list.containsAll(Arrays.asList(new String[]
+                    {"0", "-1", "99"})));
         }
     }
 
     @Test
     public void testModification() {
-        for (int i = 0; i < _lists.length; i++) {
+        for (ResultList list : _lists) {
             try {
-                _lists[i].add("foo");
+                list.add("foo");
                 fail("Allowed modification.");
-            } catch (UnsupportedOperationException uoe) {
+            }
+            catch (UnsupportedOperationException uoe) {
             }
             try {
-                _lists[i].remove("1");
+                list.remove("1");
                 fail("Allowed modification.");
-            } catch (UnsupportedOperationException uoe) {
+            }
+            catch (UnsupportedOperationException uoe) {
             }
             try {
-                _lists[i].set(0, "foo");
+                list.set(0, "foo");
                 fail("Allowed modification.");
-            } catch (UnsupportedOperationException uoe) {
+            }
+            catch (UnsupportedOperationException uoe) {
             }
         }
     }
 
     @Test
     public void testGetBegin() {
-        for (int i = 0; i < _lists.length; i++) {
+        for (ResultList list : _lists) {
             for (int j = 0; j < 10; j++)
-                assertEquals(String.valueOf(j), _lists[i].get(j));
+                assertEquals(String.valueOf(j), list.get(j));
             try {
-                _lists[i].get(-1);
+                list.get(-1);
                 fail("Before begin.");
-            } catch (IndexOutOfBoundsException | NoSuchElementException ioob) {
+            }
+            catch (IndexOutOfBoundsException | NoSuchElementException ioob) {
             }
         }
     }
 
     @Test
     public void testGetMiddle() {
-        for (int i = 0; i < _lists.length; i++)
+        for (ResultList list : _lists)
             for (int j = 50; j < 60; j++)
-                assertEquals(String.valueOf(j), _lists[i].get(j));
+                assertEquals(String.valueOf(j), list.get(j));
     }
 
     @Test
     public void testGetEnd() {
-        for (int i = 0; i < _lists.length; i++) {
+        for (ResultList list : _lists) {
             for (int j = 90; j < 100; j++)
-                assertEquals(String.valueOf(j), _lists[i].get(j));
+                assertEquals(String.valueOf(j), list.get(j));
             try {
-                _lists[i].get(100);
+                list.get(100);
                 fail("Past end.");
-            } catch (IndexOutOfBoundsException | NoSuchElementException ioob) {
+            }
+            catch (IndexOutOfBoundsException | NoSuchElementException ioob) {
             }
         }
     }
 
     @Test
     public void testGetReverse() {
-        for (int i = 0; i < _lists.length; i++)
+        for (ResultList list : _lists)
             for (int j = 99; j > -1; j--)
-                assertEquals(String.valueOf(j), _lists[i].get(j));
+                assertEquals(String.valueOf(j), list.get(j));
     }
 
     @Test
@@ -265,8 +276,7 @@
         testGetEnd();
 
         // take list size and traverse list to cache values if not already
-        for (int i = 0; i < _lists.length; i++)
-            _lists[i].size();
+        for (ResultList list : _lists) list.size();
         testListIteratorForward();
 
         testGetMiddle();
@@ -276,17 +286,17 @@
 
     @Test
     public void testSize() {
-        for (int i = 0; i < _lists.length; i++)
-            assertTrue(_lists[i].size() == 100
-                || _lists[i].size() == Integer.MAX_VALUE);
+        for (ResultList list : _lists)
+            assertTrue(list.size() == 100
+                    || list.size() == Integer.MAX_VALUE);
     }
 
     @Test
     public void testEmpty() {
         ResultObjectProvider[] rops = getResultObjectProviders
             (Collections.EMPTY_LIST);
-        for (int i = 0; i < rops.length; i++) {
-            ResultList list = getResultList(rops[i]);
+        for (ResultObjectProvider rop : rops) {
+            ResultList list = getResultList(rop);
             assertEquals(0, list.size());
             assertTrue(list.isEmpty());
         }
@@ -296,13 +306,14 @@
     public void testSubList() {
         ResultObjectProvider[] rops = getResultObjectProviders
             (Collections.EMPTY_LIST);
-        for (int i = 0; i < rops.length; i++) {
-            ResultList list = getResultList(rops[i]);
+        for (ResultObjectProvider rop : rops) {
+            ResultList list = getResultList(rop);
             try {
                 List subList = list.subList(0, 0);
                 if (!subListSupported)
                     fail("Should not support subList.");
-            } catch (UnsupportedOperationException e) {
+            }
+            catch (UnsupportedOperationException e) {
                 if (subListSupported)
                     fail("Should support subList.");
             }
diff --git a/openjpa-lib/src/test/java/org/apache/openjpa/lib/test/AbstractTestCase.java b/openjpa-lib/src/test/java/org/apache/openjpa/lib/test/AbstractTestCase.java
index 96ddf20..037ff75 100644
--- a/openjpa-lib/src/test/java/org/apache/openjpa/lib/test/AbstractTestCase.java
+++ b/openjpa-lib/src/test/java/org/apache/openjpa/lib/test/AbstractTestCase.java
@@ -259,8 +259,8 @@
     public static List matches(String regex, Collection input)
         throws RESyntaxException {
         List matches = new ArrayList();
-        for (Iterator i = input.iterator(); i.hasNext();) {
-            String check = (String) i.next();
+        for (Object o : input) {
+            String check = (String) o;
             if (matches(regex, check))
                 matches.add(check);
         }
diff --git a/openjpa-lib/src/test/java/org/apache/openjpa/lib/util/TestPropertiesParser.java b/openjpa-lib/src/test/java/org/apache/openjpa/lib/util/TestPropertiesParser.java
index 71fd35b..cb8bd78 100644
--- a/openjpa-lib/src/test/java/org/apache/openjpa/lib/util/TestPropertiesParser.java
+++ b/openjpa-lib/src/test/java/org/apache/openjpa/lib/util/TestPropertiesParser.java
@@ -188,19 +188,19 @@
 
         final String dummy = "XXX";
 
-        for (int i = 0; i < values.length; i++) {
+        for (String s : values) {
             // test special characters in either keys or values
-            String val = value ? values[i] : dummy;
-            String key = value ? dummy : values[i];
+            String val = value ? s : dummy;
+            String key = value ? dummy : s;
 
             Properties p = formattingProps ?
-                new FormatPreservingProperties() : new Properties();
+                    new FormatPreservingProperties() : new Properties();
             if (p instanceof FormatPreservingProperties) {
                 // set these properties so we behave the same way as
                 // java.util.Properties
                 ((FormatPreservingProperties) p).setDefaultEntryDelimiter('=');
                 ((FormatPreservingProperties) p).
-                    setAddWhitespaceAfterDelimiter(false);
+                        setAddWhitespaceAfterDelimiter(false);
             }
 
             p.setProperty(key, val);
@@ -213,10 +213,10 @@
             copy.store(copyOut, null);
 
             p = formattingProps ?
-                new FormatPreservingProperties() : new Properties();
+                    new FormatPreservingProperties() : new Properties();
 
             InputStream in = new BufferedInputStream
-                (new ByteArrayInputStream(out.toByteArray()));
+                    (new ByteArrayInputStream(out.toByteArray()));
 
             try {
                 // make sure that the 2 properties serialized are the same
@@ -227,9 +227,10 @@
                 p.load(in);
 
                 assertNotNull("Property \"" + key + "\" was null",
-                    p.getProperty(key));
+                        p.getProperty(key));
                 assertEquals(val.trim(), p.getProperty(key).trim());
-            } catch (Throwable ioe) {
+            }
+            catch (Throwable ioe) {
                 if (!formattingProps)
                     throw ioe;
 
@@ -283,12 +284,12 @@
                 randomString(5000).replace('a', '\\'),
                 };
 
-        for (int i = 0; i < values.length; i++) {
+        for (String value : values) {
             p1.clear();
             p2.clear();
 
-            p1.setProperty("xxx", values[i]);
-            p2.setProperty("xxx", values[i]);
+            p1.setProperty("xxx", value);
+            p2.setProperty("xxx", value);
 
             ByteArrayOutputStream out1 = new ByteArrayOutputStream();
             ByteArrayOutputStream out2 = new ByteArrayOutputStream();
@@ -300,7 +301,7 @@
             String s2 = new String(out2.toByteArray());
 
             assertTrue("Expected <" + s1 + "> but was <" + s2 + ">",
-                s1.indexOf(s2) != -1);
+                    s1.indexOf(s2) != -1);
         }
     }
 
@@ -402,8 +403,7 @@
     }
 
     protected void assertProperties(String[][] strings, Properties p) {
-        for (int i = 0; i < strings.length; i++)
-            assertEquals(strings[i][1], p.get(strings[i][0]));
+        for (String[] string : strings) assertEquals(string[1], p.get(string[0]));
 
         assertEquals(strings.length, p.size());
     }
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
index f1944f5..618dfb1 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
@@ -624,12 +624,12 @@
             throw new UserException(_loc.get("unique-no-column", ctx));
         DBIdentifier[] sColNames = DBIdentifier.toArray(columnNames,DBIdentifierType.COLUMN, delimit());
         Unique uniqueConstraint = new Unique();
-        for (int i = 0; i < sColNames.length; i++) {
-            if (DBIdentifier.isEmpty(sColNames[i]))
+        for (DBIdentifier sColName : sColNames) {
+            if (DBIdentifier.isEmpty(sColName))
                 throw new UserException(_loc.get("unique-empty-column",
                         Arrays.toString(sColNames), ctx));
             Column column = new Column();
-            column.setIdentifier(sColNames[i]);
+            column.setIdentifier(sColName);
             uniqueConstraint.addColumn(column);
         }
         if (!StringUtil.isEmpty(anno.name())) {
@@ -661,12 +661,12 @@
 
         DBIdentifier[] sColNames = DBIdentifier.toArray(columnNames.split(","), DBIdentifierType.COLUMN, delimit());
         org.apache.openjpa.jdbc.schema.Index indx = new org.apache.openjpa.jdbc.schema.Index();
-        for (int i = 0; i < sColNames.length; i++) {
-            if (DBIdentifier.isEmpty(sColNames[i]))
+        for (DBIdentifier sColName : sColNames) {
+            if (DBIdentifier.isEmpty(sColName))
                 throw new UserException(_loc.get("index-empty-column",
                         Arrays.toString(sColNames), ctx));
             Column column = new Column();
-            column.setIdentifier(sColNames[i]);
+            column.setIdentifier(sColName);
             indx.addColumn(column);
         }
         indx.setUnique(anno.unique());
@@ -1059,9 +1059,9 @@
 
         List<Column> cols = new ArrayList<>(pcols.length);
         int unique = 0;
-        for (int i = 0; i < pcols.length; i++) {
-            cols.add(newColumn(pcols[i], delimit()));
-            unique |= (pcols[i].unique()) ? TRUE : FALSE;
+        for (ElementColumn pcol : pcols) {
+            cols.add(newColumn(pcol, delimit()));
+            unique |= (pcol.unique()) ? TRUE : FALSE;
         }
         setColumns(fm, fm.getElementMapping().getValueInfo(), cols, unique);
     }
@@ -1095,9 +1095,9 @@
 
         List<Column> cols = new ArrayList<>(joins.length);
         int unique = 0;
-        for (int i = 0; i < joins.length; i++) {
-            cols.add(newColumn(joins[i], delimit()));
-            unique |= (joins[i].unique()) ? TRUE : FALSE;
+        for (KeyJoinColumn join : joins) {
+            cols.add(newColumn(join, delimit()));
+            unique |= (join.unique()) ? TRUE : FALSE;
         }
         setColumns(fm, fm.getKeyMapping().getValueInfo(), cols, unique);
     }
@@ -1894,9 +1894,9 @@
 
         List<Column> cols = new ArrayList<>(pcols.length);
         int unique = 0;
-        for (int i = 0; i < pcols.length; i++) {
-            cols.add(newColumn(pcols[i], delimit()));
-            unique |= (pcols[i].unique()) ? TRUE : FALSE;
+        for (KeyColumn pcol : pcols) {
+            cols.add(newColumn(pcol, delimit()));
+            unique |= (pcol.unique()) ? TRUE : FALSE;
         }
         setColumns(fm, fm.getKeyMapping().getValueInfo(), cols, unique);
     }
@@ -2122,9 +2122,9 @@
 
         List<Column> cols = new ArrayList<>(joins.length);
         int unique = 0;
-        for (int i = 0; i < joins.length; i++) {
-            cols.add(newColumn(joins[i], delimit()));
-            unique |= (joins[i].unique()) ? TRUE : FALSE;
+        for (ElementJoinColumn join : joins) {
+            cols.add(newColumn(join, delimit()));
+            unique |= (join.unique()) ? TRUE : FALSE;
         }
         setColumns(fm, fm.getElementMapping().getValueInfo(), cols, unique);
     }
@@ -2210,9 +2210,9 @@
 
         List<Column> cols = new ArrayList<>(joins.length);
         int unique = 0;
-        for (int i = 0; i < joins.length; i++) {
-            cols.add(newColumn(joins[i]));
-            unique |= (joins[i].unique()) ? TRUE : FALSE;
+        for (MapKeyJoinColumn join : joins) {
+            cols.add(newColumn(join));
+            unique |= (join.unique()) ? TRUE : FALSE;
         }
         setColumns(fm, fm.getKeyMapping().getValueInfo(), cols, unique);
     }
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingSerializer.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingSerializer.java
index ac6ac81..45b8148 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingSerializer.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingSerializer.java
@@ -141,16 +141,14 @@
     @Override
     public void addAll(MetaDataRepository repos) {
         super.addAll(repos);
-        for (QueryResultMapping res : ((MappingRepository) repos)
-            .getQueryResultMappings())
+        for (QueryResultMapping res : ((MappingRepository) repos).getQueryResultMappings())
             addQueryResultMapping(res);
     }
 
     @Override
     public boolean removeAll(MetaDataRepository repos) {
         boolean removed = super.removeAll(repos);
-        for (QueryResultMapping res : ((MappingRepository) repos)
-            .getQueryResultMappings())
+        for (QueryResultMapping res : ((MappingRepository) repos).getQueryResultMappings())
             removed |= removeQueryResultMapping(res);
         return removed;
     }
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingParser.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingParser.java
index 8eca798..7ad549c 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingParser.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingParser.java
@@ -1514,11 +1514,12 @@
         if (_deferredMappings.size() > 0) {
             Set<Class<?>> keys = _deferredMappings.keySet();
             Class<?>[] classes = keys.toArray(new Class[keys.size()]);
-            for (int i = 0; i < classes.length; i++) {
+            for (Class<?> aClass : classes) {
                 try {
-                    applyDeferredEmbeddableOverrides(classes[i]);
-                } catch (Exception e) {
-                    throw new MetaDataException(_loc.get("no-embeddable-metadata", classes[i].getName()), e);
+                    applyDeferredEmbeddableOverrides(aClass);
+                }
+                catch (Exception e) {
+                    throw new MetaDataException(_loc.get("no-embeddable-metadata", aClass.getName()), e);
                 }
             }
         }
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingSerializer.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingSerializer.java
index a44ef25..840d21e 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingSerializer.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingSerializer.java
@@ -130,16 +130,14 @@
     @Override
     public void addAll(MetaDataRepository repos) {
         super.addAll(repos);
-        for (QueryResultMapping res : ((MappingRepository) repos)
-            .getQueryResultMappings())
+        for (QueryResultMapping res : ((MappingRepository) repos).getQueryResultMappings())
             addQueryResultMapping(res);
     }
 
     @Override
     public boolean removeAll(MetaDataRepository repos) {
         boolean removed = super.removeAll(repos);
-        for (QueryResultMapping res : ((MappingRepository) repos)
-            .getQueryResultMappings())
+        for (QueryResultMapping res : ((MappingRepository) repos).getQueryResultMappings())
             removed |= removeQueryResultMapping(res);
         return removed;
     }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestForeignKeyCountViolation.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestForeignKeyCountViolation.java
index df5520a..b9fb70d 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestForeignKeyCountViolation.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestForeignKeyCountViolation.java
@@ -95,9 +95,9 @@
         Connection c = ds.getConnection(_conf.getConnectionUserName(),
             _conf.getConnectionPassword());
 
-        for (int i=0; i< fks.length; i++) {
-            fks[i].loadNameFromDB(
-                _conf.getDBDictionaryInstance(), c);
+        for (ForeignKey fk : fks) {
+            fk.loadNameFromDB(
+                    _conf.getDBDictionaryInstance(), c);
         }
 
         assertEquals(b4Count, tableG.getForeignKeys().length);
@@ -155,15 +155,15 @@
         ArrayList<String> fkListfromDB = new ArrayList<>();
         ArrayList<String> fkListfromTable = new ArrayList<>();
 
-        for (int i=0; i< fkfromDB.length; i++) {
-            fkListfromDB.add(fkfromDB[i].getName());
+        for (ForeignKey foreignKey : fkfromDB) {
+            fkListfromDB.add(foreignKey.getName());
         }
 
         ForeignKey fks[] = tableG.getForeignKeys();
-        for (int i=0; i< fks.length; i++) {
-            String fkNamefromDB =fks[i].loadNameFromDB(
-                _conf.getDBDictionaryInstance(), c);
-            if( fkNamefromDB != null)
+        for (ForeignKey fk : fks) {
+            String fkNamefromDB = fk.loadNameFromDB(
+                    _conf.getDBDictionaryInstance(), c);
+            if (fkNamefromDB != null)
                 fkListfromTable.add(fkNamefromDB);
         }
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/utils/AbstractTestCase.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/utils/AbstractTestCase.java
index 36769ab..dad1331 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/utils/AbstractTestCase.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/utils/AbstractTestCase.java
@@ -529,12 +529,12 @@
         InvocationTargetException, java.beans.IntrospectionException {
         BeanInfo info = Introspector.getBeanInfo(bean.getClass());
         PropertyDescriptor[] props = info.getPropertyDescriptors();
-        for (int i = 0; i < props.length; i++) {
-            Method write = props[i].getWriteMethod();
+        for (PropertyDescriptor prop : props) {
+            Method write = prop.getWriteMethod();
             if (write == null)
                 continue;
 
-            Class [] params = write.getParameterTypes();
+            Class[] params = write.getParameterTypes();
             if (params == null || params.length != 1)
                 continue;
 
@@ -567,7 +567,7 @@
                 arg = randomDate();
 
             if (arg != null)
-                write.invoke(bean, new Object []{ arg });
+                write.invoke(bean, new Object[]{arg});
         }
 
         return bean;
@@ -648,8 +648,8 @@
     public static List matches(String regex, Collection input)
         throws RESyntaxException {
         List matches = new ArrayList();
-        for (Iterator i = input.iterator(); i.hasNext();) {
-            String check = (String) i.next();
+        for (Object o : input) {
+            String check = (String) o;
             if (matches(regex, check))
                 matches.add(check);
         }
@@ -1170,9 +1170,8 @@
         int size = collection.size();
         int iterated = 0;
         // ensure we can walk along the iterator
-        for (Iterator i = collection.iterator(); i.hasNext();) {
+        for (Object o : collection) {
             iterated++;
-            i.next();
         }
 
         // ensure the number of values iterated is the same as the list size
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/utils/BufferedLogFactory.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/utils/BufferedLogFactory.java
index fe0d5fa..1595d75 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/utils/BufferedLogFactory.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/utils/BufferedLogFactory.java
@@ -97,8 +97,7 @@
                 buffer.iterator().remove();
 
             if (disallowedMessages.size() > 0) {
-                for (Iterator<String> i = disallowedMessages.iterator(); i.hasNext();) {
-                    String regex = i.next();
+                for (String regex : disallowedMessages) {
                     AbstractTestCase.assertNotMatches(regex, message);
                 }
             }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/compat/TestDupNamedQuery.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/compat/TestDupNamedQuery.java
index 0cfcb23..1f2a7f3 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/compat/TestDupNamedQuery.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/compat/TestDupNamedQuery.java
@@ -86,24 +86,27 @@
                 list = em.createNamedQuery(findAllQName).getResultList();
                 assertNotNull(list);
                 assertEquals(list.size(), 2);
-                for (Iterator resultIter = list.iterator(); resultIter.hasNext();) {
-                    o = resultIter.next();
+                for (Object value : list) {
+                    o = value;
                     assertSame(o.getClass(), simple2 ? SimpleEntity2.class
-                        : SimpleEntity.class);
+                            : SimpleEntity.class);
                     String n = null;
                     String v = null;
                     if (simple2) {
                         n = ((SimpleEntity2) o).getName();
                         v = ((SimpleEntity2) o).getValue();
-                    } else {
+                    }
+                    else {
                         n = ((SimpleEntity) o).getName();
                         v = ((SimpleEntity) o).getValue();
                     }
                     if (n.equals(nameOne)) {
                         assertTrue(v.equals(ValueOne));
-                    } else if (n.equals(nameTwo)) {
+                    }
+                    else if (n.equals(nameTwo)) {
                         assertTrue(v.equals(ValueTwo));
-                    } else {
+                    }
+                    else {
                         assertTrue(false);
                     }
                 }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/conf/TestOpenJPAConfiguration.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/conf/TestOpenJPAConfiguration.java
index 8117f6e..1ba9376 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/conf/TestOpenJPAConfiguration.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/conf/TestOpenJPAConfiguration.java
@@ -101,21 +101,23 @@
         String[] aliases;
         String clsName;
         List failures = new ArrayList();
-        for (int i = 0; i < values.length; i++) {
-            if (!(values[i] instanceof PluginValue))
+        for (Value value : values) {
+            if (!(value instanceof PluginValue))
                 continue;
 
-            aliases = values[i].getAliases();
+            aliases = value.getAliases();
             for (int j = 0; j < aliases.length; j += 2) {
                 try {
                     clsName = Configurations.getClassName(aliases[j + 1]);
                     if (clsName != null)
                         Class.forName(clsName);
-                } catch (ClassNotFoundException cnfe) {
+                }
+                catch (ClassNotFoundException cnfe) {
                     failures.add("Key: " + aliases[j] + " for property "
-                        + values[i].getProperty() + " does not list a valid "
-                        + "class: " + aliases[j + 1]);
-                } catch (UnsupportedClassVersionError ucve) {
+                            + value.getProperty() + " does not list a valid "
+                            + "class: " + aliases[j + 1]);
+                }
+                catch (UnsupportedClassVersionError ucve) {
                     //### JDK 5 plugin; ignore
                 }
             }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/CacheLoadTest.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/CacheLoadTest.java
index 8d37e49..4167994 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/CacheLoadTest.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/CacheLoadTest.java
@@ -143,9 +143,7 @@
                 (OpenJPAEntityManager) emf.createEntityManager();
             startTx(em);
 
-            for (Iterator i = em.createExtent(rndclass(), Math.random() > 0.5f).
-                iterator(); i.hasNext();) {
-                Object o = i.next();
+            for (Object o : em.createExtent(rndclass(), Math.random() > 0.5f)) {
                 if (Math.random() > 0.6f)
                     em.remove(o);
             }
@@ -163,9 +161,7 @@
         OpenJPAEntityManager em =
             (OpenJPAEntityManager) emf.createEntityManager();
 
-        for (Iterator i = em.createExtent(rndclass(), Math.random() > 0.5f).
-            iterator(); i.hasNext();) {
-            Object o = i.next();
+        for (Object o : em.createExtent(rndclass(), Math.random() > 0.5f)) {
         }
 
         endEm(em);
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/CacheTest.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/CacheTest.java
index 8da84e9..8809645 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/CacheTest.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/CacheTest.java
@@ -122,9 +122,9 @@
                 CacheObjectB.class, CacheObjectC.class, CacheObjectD.class,
                 CacheObjectE.class, CacheObjectJ.class,
                 AppIdCacheObject.class, };
-            for (int i = 0; i < toDelete.length; i++) {
+            for (Class aClass : toDelete) {
                 startTx(em);
-                Extent e = em.createExtent(toDelete[i], true);
+                Extent e = em.createExtent(aClass, true);
                 Iterator it = e.iterator();
                 while (it.hasNext()) {
                     em.remove(it.next());
@@ -1691,17 +1691,17 @@
     }
 
     public static void main(String[] args) throws Exception {
-        for (int i = 0; i < args.length; i++) {
-            String type = args[i];
-
+        for (String type : args) {
             CacheTest c;
             if (type.equals("tcp")) {
                 c = new DistributedCacheTest("time test",
-                    ConcurrentDataCache.class);
-            } else if (type.equals("jms")) {
+                        ConcurrentDataCache.class);
+            }
+            else if (type.equals("jms")) {
                 c = new DistributedCacheTest("time test",
-                    ConcurrentDataCache.class);
-            } else {
+                        ConcurrentDataCache.class);
+            }
+            else {
                 c = new TestLocalCache("time test");
             }
 
@@ -1710,10 +1710,10 @@
             int count = 1000;
             for (int j = 0; j < count; j++) {
                 c.doassertTrue(c.factory.createEntityManager(), NEW_NAME,
-                    ORIG_AGE);
+                        ORIG_AGE);
             }
             System.out.println(count + " iterations in "
-                + (System.currentTimeMillis() - start) + " millis");
+                    + (System.currentTimeMillis() - start) + " millis");
             c.tearDown();
         }
     }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestDistributedKodoDataCache.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestDistributedKodoDataCache.java
index 5eb88a6..4b0d39f 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestDistributedKodoDataCache.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestDistributedKodoDataCache.java
@@ -198,13 +198,13 @@
         endEm(pmSender);
 
         // assert that pmf2's data cache now has all the Runtime1 and 2s.
-        for (int i = 0; i < _runtime1sOids.length; i++) {
+        for (Object o : _runtime1sOids) {
             assertTrue(dcReceiver.contains(
-                Id.newInstance(RuntimeTest1.class, _runtime1sOids[i])));
+                    Id.newInstance(RuntimeTest1.class, o)));
         }
-        for (int i = 0; i < _runtime2sOids.length; i++) {
+        for (Object oid : _runtime2sOids) {
             assertTrue(dcReceiver.contains(
-                Id.newInstance(RuntimeTest2.class, _runtime2sOids[i])));
+                    Id.newInstance(RuntimeTest2.class, oid)));
         }
 
         // Modify or delete exactly 1 RuntimeTest1 object during a
@@ -213,9 +213,9 @@
 
         // assert that pmf1's data cache now only has Runtime2 objects
         if (asLargeTransaction) {
-            for (int i = 0; i < _runtime1sOids.length; i++) {
+            for (Object runtime1sOid : _runtime1sOids) {
                 assertFalse(dcSender.contains(
-                    Id.newInstance(RuntimeTest1.class, _runtime1sOids[i])));
+                        Id.newInstance(RuntimeTest1.class, runtime1sOid)));
             }
         } else {
             // Normal transaction
@@ -231,17 +231,17 @@
                 }
             }
         }
-        for (int i = 0; i < _runtime2sOids.length; i++) {
+        for (Object sOid : _runtime2sOids) {
             assertTrue(dcSender.contains(
-                Id.newInstance(RuntimeTest2.class, _runtime2sOids[i])));
+                    Id.newInstance(RuntimeTest2.class, sOid)));
         }
         // wait a tiny bit so the rce propagates
         pause(2);
         // assert the pmf2's data cache also now only has Runtime2 objects
         if (asLargeTransaction) {
-            for (int i = 0; i < _runtime1sOids.length; i++) {
+            for (Object runtime1sOid : _runtime1sOids) {
                 assertFalse(dcReceiver.contains(Id.newInstance(
-                    RuntimeTest1.class, _runtime1sOids[i]))); //failing here
+                        RuntimeTest1.class, runtime1sOid))); //failing here
             }
         } else {
             for (int i = 0; i < _runtime1sOids.length; i++) {
@@ -255,9 +255,9 @@
                 }
             }
         }
-        for (int i = 0; i < _runtime2sOids.length; i++) {
+        for (Object runtime2sOid : _runtime2sOids) {
             assertTrue(dcReceiver.contains(
-                Id.newInstance(RuntimeTest2.class, _runtime2sOids[i])));
+                    Id.newInstance(RuntimeTest2.class, runtime2sOid)));
         }
 
         // shutdown
@@ -273,14 +273,12 @@
         Collection runtime1s = (Collection) pm
             .createQuery("SELECT a FROM RuntimeTest1 a").getResultList();
 
-        for (Iterator itr = runtime1s.iterator(); itr.hasNext();)
-            temp1 = (RuntimeTest1) itr.next();
+        for (Object runtime1 : runtime1s) temp1 = (RuntimeTest1) runtime1;
         RuntimeTest2 temp2;
         Collection runtime2s = (Collection) pm
             .createQuery("SELECT a FROM RuntimeTest2 a").getResultList();
 
-        for (Iterator itr = runtime2s.iterator(); itr.hasNext();)
-            temp2 = (RuntimeTest2) itr.next();
+        for (Object runtime2 : runtime2s) temp2 = (RuntimeTest2) runtime2;
         endTx(pm);
     }
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestResultShapes.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestResultShapes.java
index 237198e..8b2d5c8 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestResultShapes.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestResultShapes.java
@@ -193,9 +193,7 @@
         if (unique) {
             arrayResultHelper(q.execute(), recordClasses, inCache);
         } else {
-            for (Iterator iter = ((List) q.execute()).iterator(); iter
-                .hasNext();)
-                arrayResultHelper(iter.next(), recordClasses, inCache);
+            for (Object o : (List) q.execute()) arrayResultHelper(o, recordClasses, inCache);
         }
 
         CacheTestHelper.assertInCache(this, q, inCache);
@@ -203,9 +201,7 @@
         if (unique) {
             arrayResultHelper(q.execute(), recordClasses, inCache);
         } else {
-            for (Iterator iter = ((List) q.execute()).iterator(); iter
-                .hasNext();)
-                arrayResultHelper(iter.next(), recordClasses, inCache);
+            for (Object o : (List) q.execute()) arrayResultHelper(o, recordClasses, inCache);
         }
     }
 
@@ -237,9 +233,7 @@
         if (unique) {
             mapResultHelper(q.execute(), recordClasses, results, inCache);
         } else {
-            for (Iterator iter = ((Collection) q.execute()).iterator();
-                iter.hasNext();)
-                mapResultHelper(iter.next(), recordClasses, results, inCache);
+            for (Object o : (Collection) q.execute()) mapResultHelper(o, recordClasses, results, inCache);
         }
 
         CacheTestHelper.assertInCache(this, q, inCache);
@@ -247,9 +241,7 @@
         if (unique) {
             mapResultHelper(q.execute(), recordClasses, results, inCache);
         } else {
-            for (Iterator iter = ((List) q.execute()).iterator(); iter
-                .hasNext();)
-                mapResultHelper(iter.next(), recordClasses, results, inCache);
+            for (Object o : (List) q.execute()) mapResultHelper(o, recordClasses, results, inCache);
         }
     }
 
@@ -277,9 +269,7 @@
             assertEquals(recordClass, q.execute().getClass());
         else {
             q.setUnique(unique);
-            for (Iterator iter = ((List) q.execute()).iterator(); iter
-                .hasNext();)
-                assertEquals(recordClass, iter.next().getClass());
+            for (Object o : (List) q.execute()) assertEquals(recordClass, o.getClass());
         }
 
         CacheTestHelper.assertInCache(this, q, inCache);
@@ -287,9 +277,7 @@
         if (unique) {
             assertEquals(recordClass, q.execute().getClass());
         } else {
-            for (Iterator iter = ((List) q.execute()).iterator(); iter
-                .hasNext();)
-                assertEquals(recordClass, iter.next().getClass());
+            for (Object o : (List) q.execute()) assertEquals(recordClass, o.getClass());
         }
     }
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestUniteratedQueryResult.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestUniteratedQueryResult.java
index b1d752c..f4596d6 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestUniteratedQueryResult.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestUniteratedQueryResult.java
@@ -86,8 +86,7 @@
         endTx(pm2);
 
         assertEquals(1, res.size());
-        for (Iterator itr = res.iterator(); itr.hasNext();)
-            assertEquals(oid1, pm2.getObjectId(itr.next()));
+        for (Object re : res) assertEquals(oid1, pm2.getObjectId(re));
         endEm(pm2);
         endEm(pm);
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/derivedid/TestDerivedIdentity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/derivedid/TestDerivedIdentity.java
index 5969bba..223de13 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/derivedid/TestDerivedIdentity.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/derivedid/TestDerivedIdentity.java
@@ -91,26 +91,28 @@
             "select e from EDBigIntegerID e join fetch e.rid",
             "select e from EDSQLDateID e join fetch e.rid",
         };
-        for (int i = 0; i < str.length; i++) {
-            query = em.createQuery(str[i]);
+        for (String s : str) {
+            query = em.createQuery(s);
             List rs = query.getResultList();
             assertTrue(rs.size() > 0);
-            for (int j = 0; j < rs.size(); j++) {
-                Object e = rs.get(j);
+            for (Object e : rs) {
                 String name = null;
                 Object oid = null;
                 if (e instanceof EDDateID) {
-                    name = ((EDDateID)e).getName();
-                    oid = ((EDDateID)e).getRid().getId();
-                } else if (e instanceof EDBigDecimalID) {
-                    name = ((EDBigDecimalID)e).getName();
-                    oid = ((EDBigDecimalID)e).getRid().getId();
-                } else if (e instanceof EDBigIntegerID) {
-                    name = ((EDBigIntegerID)e).getName();
-                    oid = ((EDBigIntegerID)e).getRid().getId();
-                } else if (e instanceof EDSQLDateID) {
-                    name = ((EDSQLDateID)e).getName();
-                    oid = ((EDSQLDateID)e).getRid().getId();
+                    name = ((EDDateID) e).getName();
+                    oid = ((EDDateID) e).getRid().getId();
+                }
+                else if (e instanceof EDBigDecimalID) {
+                    name = ((EDBigDecimalID) e).getName();
+                    oid = ((EDBigDecimalID) e).getRid().getId();
+                }
+                else if (e instanceof EDBigIntegerID) {
+                    name = ((EDBigIntegerID) e).getName();
+                    oid = ((EDBigIntegerID) e).getRid().getId();
+                }
+                else if (e instanceof EDSQLDateID) {
+                    name = ((EDSQLDateID) e).getName();
+                    oid = ((EDSQLDateID) e).getRid().getId();
                 }
                 //System.out.println(name);
                 //System.out.println(oid.toString());
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java
index c141e6a..e19cc5f 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java
@@ -121,10 +121,11 @@
                 "select e from EntityA_Embed_Embed a join a.embed e group by e",
         };
         List rs = null;
-        for (int i = 0; i < query.length; i++) {
+        for (String s : query) {
             try {
-                rs = em.createQuery(query[i]).getResultList();
-            } catch(ArgumentException e) {
+                rs = em.createQuery(s).getResultList();
+            }
+            catch (ArgumentException e) {
                 System.out.println(e.getMessage()); // as expected : Group by embeddable field is not allowed
             }
         }
@@ -216,8 +217,8 @@
                 "join e.mapKeyInteger i where value(i) > 0 ",
             };
         List rs = null;
-        for (int i = 0; i < query.length; i++) {
-            rs = em.createQuery(query[i]).getResultList();
+        for (String s : query) {
+            rs = em.createQuery(s).getResultList();
             em.clear();
         }
         em.close();
@@ -923,9 +924,9 @@
             "select e from Employee e, in (e.nickNames) n " +
                 " where n like '%1'",
         };
-        for (int i = 0; i < query.length; i++) {
-            es = em.createQuery(query[i]).getResultList();
-            for (Employee e : es){
+        for (String s : query) {
+            es = em.createQuery(s).getResultList();
+            for (Employee e : es) {
                 assertEmployee(e);
             }
         }
@@ -1465,9 +1466,9 @@
                 " where a.embed.b IS NOT NULL) " +
                 " ORDER BY a.embed",
         };
-        for (int i = 0; i < query.length; i++) {
+        for (String s : query) {
             List<Object[]> rs = null;
-            rs = em.createQuery(query[i]).getResultList();
+            rs = em.createQuery(s).getResultList();
             assertTrue(rs.size() > 0);
             Object obj = rs.get(0);
             assertTrue(obj instanceof Embed_ToOne);
@@ -1506,9 +1507,9 @@
                 " (select a from EntityA_Embed_MappedToOne a " +
                 " where a.embed.bm IS NOT NULL)",
         };
-        for (int i = 0; i < query.length; i++) {
+        for (String value : query) {
             List<Object[]> rs = null;
-            rs = em.createQuery(query[i]).getResultList();
+            rs = em.createQuery(value).getResultList();
             assertTrue(rs.size() > 0);
             Object obj = rs.get(0);
             assertTrue(obj instanceof Embed_MappedToOne);
@@ -1529,11 +1530,12 @@
                 " (select a.embed from EntityA_Embed_MappedToOne a " +
                 " where a.embed.bm IS NOT NULL)",
         };
-        for (int i = 0; i < query2.length; i++) {
+        for (String s : query2) {
             List<Object[]> rs = null;
             try {
-                rs = em.createQuery(query2[i]).getResultList();
-            } catch (ArgumentException e) {
+                rs = em.createQuery(s).getResultList();
+            }
+            catch (ArgumentException e) {
                 // as expected
             }
         }
@@ -1787,8 +1789,8 @@
                 " where e > 0) order by e",
         };
         List<Object[]> rs = null;
-        for (int i = 0; i < query.length; i++) {
-            rs = em.createQuery(query[i]).getResultList();
+        for (String s : query) {
+            rs = em.createQuery(s).getResultList();
             assertTrue(rs.size() > 0);
             Object obj = ((Object[]) rs.get(0))[0];
             assertTrue(obj instanceof Integer);
@@ -1839,10 +1841,11 @@
             }
             em.clear();
         }
-        for (int i = 0; i < query2.length; i++) {
+        for (String s : query2) {
             try {
-                rs = em.createQuery(query2[i]).getResultList();
-            } catch(ArgumentException e) {
+                rs = em.createQuery(s).getResultList();
+            }
+            catch (ArgumentException e) {
                 // as expected: comparison over embedded object is not allowed
             }
         }
@@ -1980,23 +1983,24 @@
 
         List rs = null;
         Object obj = null;
-        for (int i = 0; i < query.length; i++) {
-            rs = em.createQuery(query[i]).getResultList();
+        for (String item : query) {
+            rs = em.createQuery(item).getResultList();
             assertTrue(rs.size() > 0);
             obj = ((Object[]) rs.get(0))[0];
             assertTrue(obj instanceof Embed_Embed);
         }
-        for (int i = 0; i < query2.length; i++) {
-            rs = em.createQuery(query2[i]).getResultList();
+        for (String value : query2) {
+            rs = em.createQuery(value).getResultList();
             if (rs.size() > 0) {
                 obj = ((Object[]) rs.get(0))[0];
                 assertTrue(obj instanceof Embed_Embed);
             }
         }
-        for (int i = 0; i < query3.length; i++) {
+        for (String s : query3) {
             try {
-            rs = em.createQuery(query3[i]).setParameter(1, obj).getResultList();
-            } catch(ArgumentException e) {
+                rs = em.createQuery(s).setParameter(1, obj).getResultList();
+            }
+            catch (ArgumentException e) {
                 // as expected: comparison over embedded object is not allowed
             }
         }
@@ -2069,12 +2073,13 @@
                 ea = (EntityA_Embed_Coll_Embed) ((Object[]) rs.get(0))[1];
         }
 
-        for (int i = 0; i < query2.length; i++) {
+        for (String s : query2) {
             try {
-            rs = em.createQuery(query2[i]).
-                setParameter(1, (Embed) obj).
-                getResultList();
-            } catch (ArgumentException e) {
+                rs = em.createQuery(s).
+                        setParameter(1, (Embed) obj).
+                        getResultList();
+            }
+            catch (ArgumentException e) {
                 // expected exception: comparison over embedded object is not allowed
             }
         }
@@ -2442,8 +2447,8 @@
                 " (select KEY(e) from Department1 d1, in(d1.empMap) e) " +
                 " order by d",
         };
-        for (int i = 0; i < query.length; i++) {
-            ds1 = em.createQuery(query[i]).getResultList();
+        for (String s : query) {
+            ds1 = em.createQuery(s).getResultList();
             assertDepartment1(ds1.get(0));
         }
         em.close();
@@ -2647,27 +2652,27 @@
                 " order by i",
         };
 
-        for (int i = 0; i < query.length; i++) {
-            Query q = em.createQuery(query[i]);
+        for (String element : query) {
+            Query q = em.createQuery(element);
             q.setParameter(1, imageKey1);
             is1 = q.getResultList();
-            for (Item1 item : is1){
+            for (Item1 item : is1) {
                 assertItem1(item);
             }
         }
-        for (int i = 0; i < query2.length; i++) {
-            Query q = em.createQuery(query2[i]);
+        for (String value : query2) {
+            Query q = em.createQuery(value);
             q.setParameter(1, imageKey2);
             is2 = q.getResultList();
-            for (Item2 item : is2){
+            for (Item2 item : is2) {
                 assertItem2(item);
             }
         }
-        for (int i = 0; i < query3.length; i++) {
-            Query q = em.createQuery(query3[i]);
+        for (String s : query3) {
+            Query q = em.createQuery(s);
             q.setParameter(1, imageKey3);
             is3 = q.getResultList();
-            for (Item3 item : is3){
+            for (Item3 item : is3) {
                 assertItem3(item);
             }
         }
@@ -2713,11 +2718,11 @@
                 "  where KEY(d) = ?1)" +
                 " order by c ",
         };
-        for (int i = 0; i < query.length; i++) {
-            Query q = em.createQuery(query[i]);
+        for (String value : query) {
+            Query q = em.createQuery(value);
             q.setParameter(1, d1);
             cs1 = q.getResultList();
-            for (Company1 c : cs1){
+            for (Company1 c : cs1) {
                 assertCompany1(c);
             }
         }
@@ -2738,11 +2743,11 @@
                 " order by c ",
         };
 
-        for (int i = 0; i < query2.length; i++) {
-            Query q = em.createQuery(query2[i]);
+        for (String s : query2) {
+            Query q = em.createQuery(s);
             q.setParameter(1, d2);
             cs2 = q.getResultList();
-            for (Company2 c : cs2){
+            for (Company2 c : cs2) {
                 assertCompany2(c);
             }
         }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/TestSubclassedBehavior.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/TestSubclassedBehavior.java
index 3c44045..fe7c9b6 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/TestSubclassedBehavior.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/TestSubclassedBehavior.java
@@ -547,18 +547,19 @@
         assertTrue("meta's access should be ACCESS_PROPERTY",
         		AccessCode.isProperty(meta.getAccessType()));
         FieldMetaData[] fmds = meta.getFields();
-        for (int i = 0; i < fmds.length; i++) {
-            assertEquals(Method.class, fmds[i].getBackingMember().getClass());
+        for (FieldMetaData fmd : fmds) {
+            assertEquals(Method.class, fmd.getBackingMember().getClass());
 
             // make sure that the fields are defined in the right part of the
             // hierarchy
-            if (fmds[i].getName().equals("intField") ||
-                fmds[i].getName().equals("oneToOne")) {
+            if (fmd.getName().equals("intField") ||
+                    fmd.getName().equals("oneToOne")) {
                 assertEquals(DerivedEntity.class,
-                    fmds[i].getDefiningMetaData().getDescribedType());
-            } else {
+                        fmd.getDefiningMetaData().getDescribedType());
+            }
+            else {
                 assertEquals(BaseEntity.class,
-                    fmds[i].getDefiningMetaData().getDescribedType());
+                        fmd.getDefiningMetaData().getDescribedType());
             }
         }
     }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/identity/TestMappedById.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/identity/TestMappedById.java
index 970110b..5e25490 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/identity/TestMappedById.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/identity/TestMappedById.java
@@ -253,10 +253,10 @@
             "select count (DISTINCT d2) from Dependent2 d2",
         };
 
-        for (int i = 0; i < jpqls.length; i++) {
-            Query q = em.createQuery(jpqls[i]) ;
-            Long o = (Long)q.getSingleResult();
-            int count = (int)o.longValue();
+        for (String jpql : jpqls) {
+            Query q = em.createQuery(jpql);
+            Long o = (Long) q.getSingleResult();
+            int count = (int) o.longValue();
             assertEquals(2, count);
         }
         em.close();
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/RemoteEventBase.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/RemoteEventBase.java
index 7742e75..3db1359 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/RemoteEventBase.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/RemoteEventBase.java
@@ -124,9 +124,9 @@
         assertNotNull(listener2.deleted);
 
         boolean pass = false;
-        for (Iterator iter = listener2.added.iterator(); iter.hasNext();) {
+        for (Object item : listener2.added) {
             Id roid = Id.newInstance(RuntimeTest1.class, oid);
-            Id it = (Id) iter.next();
+            Id it = (Id) item;
             //FixMe --det. why it.equals(roid) fails when the are actually equal
             if (it.toString().equals(roid.toString())) {
                 pass = true;
@@ -159,8 +159,8 @@
         assertNotNull(listener2.deleted);
 
         pass = false;
-        for (Iterator iter = listener2.updated.iterator(); iter.hasNext();) {
-            Id it = (Id) iter.next();
+        for (Object value : listener2.updated) {
+            Id it = (Id) value;
             if (it.toString().equals(roid.toString())) {
                 pass = true;
                 break;
@@ -192,8 +192,8 @@
         assertNotNull(listener2.deleted);
 
         pass = false;
-        for (Iterator iter = listener2.deleted.iterator(); iter.hasNext();) {
-            Id it = (Id) iter.next();
+        for (Object o : listener2.deleted) {
+            Id it = (Id) o;
             if (it.toString().equals(roid.toString())) {
                 pass = true;
                 break;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestFakeRemoteEvents.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestFakeRemoteEvents.java
index 1c79d65..7c9f936 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestFakeRemoteEvents.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestFakeRemoteEvents.java
@@ -88,9 +88,8 @@
                 s, null, null, null));
 
         boolean pass = false;
-        for (Iterator iter = transactionListener.added.iterator(); iter
-            .hasNext();) {
-            if (iter.next().equals(oid)) {
+        for (Object item : transactionListener.added) {
+            if (item.equals(oid)) {
                 pass = true;
                 break;
             }
@@ -106,9 +105,8 @@
                 null, null, s, null));
 
         pass = false;
-        for (Iterator iter = transactionListener.updated.iterator(); iter
-            .hasNext();) {
-            if (iter.next().equals(oid)) {
+        for (Object value : transactionListener.updated) {
+            if (value.equals(oid)) {
                 pass = true;
                 break;
             }
@@ -124,9 +122,8 @@
                 null, null, null, s));
 
         pass = false;
-        for (Iterator iter = transactionListener.deleted.iterator(); iter
-            .hasNext();) {
-            if (iter.next().equals(oid)) {
+        for (Object o : transactionListener.deleted) {
+            if (o.equals(oid)) {
                 pass = true;
                 break;
             }
@@ -159,8 +156,7 @@
         endTx(pm);
 
         boolean pass = false;
-        for (Iterator iter = provider.added.iterator(); iter.hasNext();) {
-            Object added = iter.next();
+        for (Object added : provider.added) {
             if (equals(added, oid)) {
                 pass = true;
                 break;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteClassChanges.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteClassChanges.java
index b0cd049..09bea0d 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteClassChanges.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteClassChanges.java
@@ -154,9 +154,9 @@
         }
 
         // add them, a commit per object
-        for (int i = 0; i < persistables.length; i++) {
+        for (RuntimeTest1 persistable : persistables) {
             startTx(pm);
-            pm.persist(persistables[i]);
+            pm.persist(persistable);
             endTx(pm);
         }
 
@@ -176,9 +176,9 @@
         }
 
         // add them
-        for (int i = 0; i < persistables.length; i++) {
+        for (RuntimeTest1 runtimeTest1 : persistables) {
             startTx(pm);
-            pm.persist(persistables[i]);
+            pm.persist(runtimeTest1);
             endTx(pm);
         }
 
@@ -190,9 +190,9 @@
         }
 
         // delete them
-        for (int i = 0; i < persistables.length; i++) {
+        for (RuntimeTest1 persistable : persistables) {
             startTx(pm);
-            pm.remove(persistables[i]);
+            pm.remove(persistable);
             endTx(pm);
         }
     }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteEventsDuration.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteEventsDuration.java
index 3e5daa5..bf334db 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteEventsDuration.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteEventsDuration.java
@@ -200,9 +200,9 @@
         // This will generate a larger number of transaction in a very
         // short amount of time (old socket-per-transaction would
         // exhaust jvm socket pool)
-        for (int i = 0; i < persistables.length; i++) {
+        for (RuntimeTest1 runtimeTest1 : persistables) {
             startTx(pm);
-            pm.persist(persistables[i]);
+            pm.persist(runtimeTest1);
             endTx(pm);
         }
 
@@ -215,8 +215,8 @@
 
         // delete them
         startTx(pm);
-        for (int i = 0; i < persistables.length; i++) {
-            pm.remove(persistables[i]);
+        for (RuntimeTest1 persistable : persistables) {
+            pm.remove(persistable);
         }
         endTx(pm);
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteRecovery.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteRecovery.java
index 414c119..40ef5af 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteRecovery.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteRecovery.java
@@ -251,9 +251,9 @@
         }
 
         // add them
-        for (int i = 0; i < persistables.length; i++) {
+        for (RuntimeTest1 runtimeTest1 : persistables) {
             startTx(pm);
-            pm.persist(persistables[i]);
+            pm.persist(runtimeTest1);
             endTx(pm);
         }
 
@@ -266,8 +266,8 @@
 
         // delete them
         startTx(pm);
-        for (int i = 0; i < persistables.length; i++) {
-            pm.remove(persistables[i]);
+        for (RuntimeTest1 persistable : persistables) {
+            pm.remove(persistable);
         }
         endTx(pm);
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteRecoveryTransmitAdds.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteRecoveryTransmitAdds.java
index 44cfa3c..f73a438 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteRecoveryTransmitAdds.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/event/TestTCPRemoteRecoveryTransmitAdds.java
@@ -251,9 +251,9 @@
         }
 
         // add them
-        for (int i = 0; i < persistables.length; i++) {
+        for (RuntimeTest1 runtimeTest1 : persistables) {
             startTx(pm);
-            pm.persist(persistables[i]);
+            pm.persist(runtimeTest1);
             endTx(pm);
         }
 
@@ -266,8 +266,8 @@
 
         // delete them
         startTx(pm);
-        for (int i = 0; i < persistables.length; i++) {
-            pm.remove(persistables[i]);
+        for (RuntimeTest1 persistable : persistables) {
+            pm.remove(persistable);
         }
         endTx(pm);
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/generationtype/TestMultipleSchemaNames.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/generationtype/TestMultipleSchemaNames.java
index ac640e3..7d230b7 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/generationtype/TestMultipleSchemaNames.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/generationtype/TestMultipleSchemaNames.java
@@ -69,61 +69,61 @@
         Query qry = em.createQuery("select d from Dog1 d");
         List result = qry.getResultList();
 
-        for (int index = 0; index < result.size(); index++) {
-            Dog1 Obj = (Dog1) result.get(index);
+        for (Object o4 : result) {
+            Dog1 Obj = (Dog1) o4;
             em.remove(Obj);
         }
         Query qry2 = em.createQuery("select d from Dog2 d");
         List result2 = qry2.getResultList();
 
-        for (int index = 0; index < result2.size(); index++) {
-            Dog2 Obj = (Dog2) result2.get(index);
+        for (Object o3 : result2) {
+            Dog2 Obj = (Dog2) o3;
             em.remove(Obj);
         }
         Query qry3 = em.createQuery("select d from DogTable d");
         List result3 = qry3.getResultList();
 
-        for (int index = 0; index < result3.size(); index++) {
-            DogTable Obj = (DogTable) result3.get(index);
+        for (Object o2 : result3) {
+            DogTable Obj = (DogTable) o2;
             em.remove(Obj);
         }
         Query qry4 = em.createQuery("select d from DogTable2 d");
         List result4 = qry4.getResultList();
 
-        for (int index = 0; index < result4.size(); index++) {
-            DogTable2 Obj = (DogTable2) result4.get(index);
+        for (Object o1 : result4) {
+            DogTable2 Obj = (DogTable2) o1;
             em.remove(Obj);
         }
 
         Query qry5 = em.createQuery("select d from DogTable3 d");
         List result5 = qry5.getResultList();
 
-        for (int index = 0; index < result5.size(); index++) {
-            DogTable3 Obj = (DogTable3) result5.get(index);
+        for (Object element : result5) {
+            DogTable3 Obj = (DogTable3) element;
             em.remove(Obj);
         }
 
         Query qry6 = em.createQuery("select d from DogTable4 d");
         List result6 = qry6.getResultList();
 
-        for (int index = 0; index < result6.size(); index++) {
-            DogTable4 Obj = (DogTable4) result6.get(index);
+        for (Object item : result6) {
+            DogTable4 Obj = (DogTable4) item;
             em.remove(Obj);
         }
 
         Query qry7 = em.createQuery("select d from Dog3 d");
         List result7 = qry7.getResultList();
 
-        for (int index = 0; index < result7.size(); index++) {
-            Dog3 Obj = (Dog3) result7.get(index);
+        for (Object value : result7) {
+            Dog3 Obj = (Dog3) value;
             em.remove(Obj);
         }
 
         Query qry8 = em.createQuery("select d from Dog4 d");
         List result8 = qry8.getResultList();
 
-        for (int index = 0; index < result8.size(); index++) {
-            Dog4 Obj = (Dog4) result8.get(index);
+        for (Object o : result8) {
+            Dog4 Obj = (Dog4) o;
             em.remove(Obj);
         }
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/hugariannotation/TestHungarianNotationRemoval.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/hugariannotation/TestHungarianNotationRemoval.java
index 82e9e09..5139ca7 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/hugariannotation/TestHungarianNotationRemoval.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/hugariannotation/TestHungarianNotationRemoval.java
@@ -44,16 +44,16 @@
 
         FieldMapping[] fieldMappings = cm.getFieldMappings();
 
-        for (int i = 0; i < fieldMappings.length; i++) {
-            final String name = fieldMappings[i].getColumns()[0].getName();
+        for (FieldMapping fieldMapping : fieldMappings) {
+            final String name = fieldMapping.getColumns()[0].getName();
 
             // this one doesn't follow the rules
-            if (fieldMappings[i].getName().equals("m_intFooBar7"))
+            if (fieldMapping.getName().equals("m_intFooBar7"))
                 continue;
 
             assertTrue(
-                "Failed to removed Hungarian Notation, resulting column name : "
-                    + name, name.toUpperCase().startsWith("FOOBAR"));
+                    "Failed to removed Hungarian Notation, resulting column name : "
+                            + name, name.toUpperCase().startsWith("FOOBAR"));
         }
     }
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestDefaultInheritanceStrategy.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestDefaultInheritanceStrategy.java
index e1c2cac..d8f03d6 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestDefaultInheritanceStrategy.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestDefaultInheritanceStrategy.java
@@ -222,18 +222,15 @@
         em.clear();
         String query = "select a from BaseClass2 a where TYPE(a) = MidClass";
         List rs = em.createQuery(query).getResultList();
-        for (int i = 0; i < rs.size(); i++)
-        assertTrue(rs.get(i) instanceof MidClass);
+        for (Object value : rs) assertTrue(value instanceof MidClass);
 
         query = "select a from BaseClass2 a where TYPE(a) = SubclassE";
         rs = em.createQuery(query).getResultList();
-        for (int i = 0; i < rs.size(); i++)
-            assertTrue(rs.get(i) instanceof SubclassE);
+        for (Object o : rs) assertTrue(o instanceof SubclassE);
 
         query = "select a from BaseClass2 a where TYPE(a) = BaseClass2";
         rs = em.createQuery(query).getResultList();
-        for (int i = 0; i < rs.size(); i++)
-            assertTrue(rs.get(i) instanceof BaseClass2);
+        for (Object r : rs) assertTrue(r instanceof BaseClass2);
 
         em.clear();
 
@@ -692,24 +689,23 @@
         assertTrue("Query should return " + expectedValues.length + " entities",
             col.size() == expectedValues.length);
         int count = 0;
-        for (int i = 0; i < col.size(); i++) {
-            Object ent = col.get(i);
+        for (Object ent : col) {
             // If a list of supers or interfaces is provided, make sure
             // the returned type is an instance of those types
             if (types != null) {
-                for (int j = 0; j < types.length; j++ )
-                    assertTrue(types[j].isInstance(ent));
+                for (Class type : types) assertTrue(type.isInstance(ent));
             }
             int id = -1;
             try {
-                Method mth = ent.getClass().getMethod("getId", (Class[])null);
-                id = (Integer)mth.invoke(ent, (Object[])null);
-            } catch (Exception e) {
-                fail("Caught unexepcted exception getting entity id: "
-                    + e.getMessage());
+                Method mth = ent.getClass().getMethod("getId", (Class[]) null);
+                id = (Integer) mth.invoke(ent, (Object[]) null);
             }
-            for (int j = 0; j < expectedValues.length; j++)
-                if (expectedValues[j] == id)
+            catch (Exception e) {
+                fail("Caught unexepcted exception getting entity id: "
+                        + e.getMessage());
+            }
+            for (int expectedValue : expectedValues)
+                if (expectedValue == id)
                     count++;
         }
         assertTrue("Returned unexpected entities " + col + " for " + jpql,
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/abstractjoinedappid/TestAbstractJoinedAppId.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/abstractjoinedappid/TestAbstractJoinedAppId.java
index 0bfa25f..a3c0c07 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/abstractjoinedappid/TestAbstractJoinedAppId.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/abstractjoinedappid/TestAbstractJoinedAppId.java
@@ -61,13 +61,11 @@
         String query = "select s from RelationOwner r join r.supers s where TYPE(s) = Subclass";
         List rs = em.createQuery(query).getResultList();
         assertTrue(rs.size() > 0);
-        for (int i = 0; i < rs.size(); i++)
-            assertTrue(rs.get(i) instanceof Subclass);
+        for (Object o : rs) assertTrue(o instanceof Subclass);
         query = "select s from Superclass s where TYPE(s) = Subclass";
         rs = em.createQuery(query).getResultList();
         assertTrue(rs.size() > 0);
-        for (int i = 0; i < rs.size(); i++)
-            assertTrue(rs.get(i) instanceof Subclass);
+        for (Object r : rs) assertTrue(r instanceof Subclass);
         em.close();
     }
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/jointable/TestInheritanceTypeJoinedQuery.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/jointable/TestInheritanceTypeJoinedQuery.java
index 3f2eeb6..ceafb7a 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/jointable/TestInheritanceTypeJoinedQuery.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/jointable/TestInheritanceTypeJoinedQuery.java
@@ -80,8 +80,7 @@
         q = em.createQuery(qS);
         rs = q.getResultList();
         assertEquals(numPTEmployees + numFTEmployees, rs.size());
-        for (int i = 0; i < rs.size(); i++){
-            Object obj = rs.get(i);
+        for (Object obj : rs) {
             assertTrue((obj instanceof ParttimeEmployee) || (obj instanceof FulltimeEmployee));
         }
 
@@ -89,15 +88,13 @@
         q = em.createQuery(qS);
         rs = q.getResultList();
         assertEquals(numContractors, rs.size());
-        for (int i = 0; i < rs.size(); i++)
-            assertTrue(rs.get(i) instanceof Contractor);
+        for (Object value : rs) assertTrue(value instanceof Contractor);
 
         qS = "select p from Person p where TYPE(p) in (?1) order by p.name";
         q = em.createQuery(qS).setParameter(1, Contractor.class);
         rs = q.getResultList();
         assertEquals(numContractors, rs.size());
-        for (int i = 0; i < rs.size(); i++)
-            assertTrue(rs.get(i) instanceof Contractor);
+        for (Object o : rs) assertTrue(o instanceof Contractor);
 
         qS = "select p from Person p where TYPE(p) in ?1 order by p.name";
         Collection<Class<?>> params = new ArrayList<>(2);
@@ -115,8 +112,7 @@
         q = em.createQuery(qS);
         rs = q.getResultList();
         assertEquals(1, rs.size());
-        for (int i = 0; i < rs.size(); i++)
-            assertTrue(rs.get(i) instanceof Contractor);
+        for (Object r : rs) assertTrue(r instanceof Contractor);
 
         qS = "select p from Person p where TYPE(p) in (?1, ?2) and p.name = ?3 order by p.name";
         q = em.createQuery(qS);
@@ -126,8 +122,7 @@
 
         rs = q.getResultList();
         assertEquals(1, rs.size());
-        for (int i = 0; i < rs.size(); i++) {
-            Object obj = rs.get(i);
+        for (Object obj : rs) {
             assertTrue(obj instanceof Contractor || obj instanceof FulltimeEmployee);
         }
 
@@ -138,8 +133,7 @@
 
         rs = q.getResultList();
         assertEquals(numContractors + numFTEmployees, rs.size());
-        for (int i = 0; i < rs.size(); i++) {
-            Object obj = rs.get(i);
+        for (Object obj : rs) {
             assertTrue(obj instanceof Contractor || obj instanceof FulltimeEmployee);
         }
 
@@ -147,8 +141,7 @@
         q = em.createQuery(qS);
         rs = q.getResultList();
         assertEquals(numPTEmployees + numFTEmployees, rs.size());
-        for (int i = 0; i < rs.size(); i++){
-            Object obj = rs.get(i);
+        for (Object obj : rs) {
             assertTrue((obj instanceof ParttimeEmployee) || (obj instanceof FulltimeEmployee));
         }
 
@@ -157,8 +150,7 @@
         q.setParameter(1, Contractor.class);
         rs = q.getResultList();
         assertEquals(numPTEmployees + numFTEmployees, rs.size());
-        for (int i = 0; i < rs.size(); i++){
-            Object obj = rs.get(i);
+        for (Object obj : rs) {
             assertTrue((obj instanceof ParttimeEmployee) || (obj instanceof FulltimeEmployee));
         }
 
@@ -168,8 +160,7 @@
         q.setParameter(2, FulltimeEmployee.class);
         rs = q.getResultList();
         assertEquals(numPTEmployees, rs.size());
-        for (int i = 0; i < rs.size(); i++){
-            Object obj = rs.get(i);
+        for (Object obj : rs) {
             assertTrue((obj instanceof ParttimeEmployee) || (obj instanceof FulltimeEmployee));
         }
         em.close();
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/TestMappedSuperClass.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/TestMappedSuperClass.java
index 2e48a87..d245cfc 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/TestMappedSuperClass.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/TestMappedSuperClass.java
@@ -68,8 +68,7 @@
         // test polymorphic queries
         String query = "select s from CashBaseEntity s where TYPE(s) = SituationDA";
         List rs = em.createQuery(query).getResultList();
-        for (int i = 0; i < rs.size(); i++)
-            assertTrue(rs.get(i) instanceof SituationDA);
+        for (Object r : rs) assertTrue(r instanceof SituationDA);
 
         query = "select s from CashBaseEntity s where TYPE(s) <> ValuableItemDA";
         try {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/polymorphic/TestTablePerClassInheritanceWithAbstractRoot.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/polymorphic/TestTablePerClassInheritanceWithAbstractRoot.java
index ebe3658..ea8bb83 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/polymorphic/TestTablePerClassInheritanceWithAbstractRoot.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/polymorphic/TestTablePerClassInheritanceWithAbstractRoot.java
@@ -173,15 +173,13 @@
                 "TYPE(tr) = EnglishParagraph";
         List rs = em.createQuery(query).getResultList();
         assertEquals(2, rs.size());
-        for (int i=0; i < rs.size(); i++)
-            assertTrue(rs.get(i) instanceof EnglishParagraph);
+        for (Object o : rs) assertTrue(o instanceof EnglishParagraph);
 
         query = "select distinct tr from Translatable tr join tr.translations t where " +
             "TYPE(tr) = EnglishParagraph or TYPE(tr) = FrenchParagraph";
         rs = em.createQuery(query).getResultList();
         assertEquals(2, rs.size());
-        for (int i=0; i < rs.size(); i++)
-            assertTrue(!(rs.get(i) instanceof GermanParagraph));
+        for (Object r : rs) assertTrue(!(r instanceof GermanParagraph));
 
         query = "select distinct tr from Translatable tr join tr.translations t where " +
             "TYPE(tr) in (?1, ?2)";
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/common/apps/ByteArrayPKPCId.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/common/apps/ByteArrayPKPCId.java
index e14e580..6c09ee5 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/common/apps/ByteArrayPKPCId.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/common/apps/ByteArrayPKPCId.java
@@ -95,9 +95,9 @@
             return "null";
 
         StringBuilder r = new StringBuilder(b.length * 2);
-        for (int i = 0; i < b.length; i++)
+        for (byte value : b)
             for (int j = 1; j >= 0; j--)
-                r.append(HEX[(b[i] >> (j * 4)) & 0xF]);
+                r.append(HEX[(value >> (j * 4)) & 0xF]);
         return r.toString();
     }
 
@@ -118,8 +118,7 @@
         if (b == null)
             return 0;
         int sum = 0;
-        for (int i = 0; i < b.length; i++)
-            sum += b[i];
+        for (byte value : b) sum += value;
         return sum;
     }
 }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/kernel/TestSQLListenerTestCase.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/kernel/TestSQLListenerTestCase.java
index 6affd5b..82d0659 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/kernel/TestSQLListenerTestCase.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/kernel/TestSQLListenerTestCase.java
@@ -79,8 +79,8 @@
      */
     public void assertSQL(String sqlExp)
         throws Exception {
-        for (Iterator i = sql.iterator(); i.hasNext();) {
-            String statement = (String) i.next();
+        for (Object o : sql) {
+            String statement = (String) o;
             if (matches(sqlExp, statement))
                 return;
         }
@@ -98,8 +98,8 @@
         throws Exception {
         boolean failed = false;
 
-        for (Iterator i = sql.iterator(); i.hasNext();) {
-            String statement = (String) i.next();
+        for (Object o : sql) {
+            String statement = (String) o;
             if (matches(sqlExp, statement))
                 failed = true;
         }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestJDBCType.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestJDBCType.java
index cfb7fe2..f947887 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestJDBCType.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestJDBCType.java
@@ -85,24 +85,24 @@
         SchemaGroup schema = repos.getSchemaGroup();
         Table table = schema.getSchemas()[0].getTables()[0];
         Column[] cols = table.getColumns();
-        for (int i = 0; i < cols.length; i++) {
-            if (cols[i].getName().equalsIgnoreCase("id")
-                || cols[i].getName().equalsIgnoreCase("versn")
-                || cols[i].getName().equalsIgnoreCase("typ"))
+        for (Column col : cols) {
+            if (col.getName().equalsIgnoreCase("id")
+                    || col.getName().equalsIgnoreCase("versn")
+                    || col.getName().equalsIgnoreCase("typ"))
                 continue;
-            if ("longToInt".equalsIgnoreCase(cols[i].getName()))
+            if ("longToInt".equalsIgnoreCase(col.getName()))
                 assertEquals(dict.getPreferredType(JavaTypes.INT),
-                    cols[i].getType());
-            else if ("longToSQL".equalsIgnoreCase(cols[i].getName()))
-                assertEquals("varchar", cols[i].getTypeName());
-            else if ("toClob".equalsIgnoreCase(cols[i].getName()))
+                        col.getType());
+            else if ("longToSQL".equalsIgnoreCase(col.getName()))
+                assertEquals("varchar", col.getTypeName());
+            else if ("toClob".equalsIgnoreCase(col.getName()))
                 assertEquals(dict.getPreferredType(JavaSQLTypes.CLOB),
-                    cols[i].getType());
-            else if ("toBlob".equalsIgnoreCase(cols[i].getName()))
+                        col.getType());
+            else if ("toBlob".equalsIgnoreCase(col.getName()))
                 assertEquals(dict.getPreferredType(JavaSQLTypes.BLOB),
-                    cols[i].getType());
+                        col.getType());
             else
-                fail("Unknown column:" + cols[i].getName());
+                fail("Unknown column:" + col.getName());
         }
     }
 }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestLocators.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestLocators.java
index 579aa17..3687ca3 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestLocators.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestLocators.java
@@ -58,8 +58,8 @@
         startTx(pm);
 
         Extent e = pm.createExtent(LocatorTestObject.class, true);
-        for (Iterator i = e.iterator(); i.hasNext();) {
-            pm.remove(i.next());
+        for (Object o : e) {
+            pm.remove(o);
 
         }
         endTx(pm);
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestMetaDataValueIndicator.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestMetaDataValueIndicator.java
index 3792054..78d0fc7 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestMetaDataValueIndicator.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestMetaDataValueIndicator.java
@@ -127,8 +127,7 @@
 
     private int countExtent(Extent e) {
         int count = 0;
-        for (Iterator iter = e.iterator(); iter.hasNext();) {
-            iter.next();
+        for (Object o : e) {
             count++;
         }
         return count;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestMultiTableMappings.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestMultiTableMappings.java
index f28aebf..7ae7ac3 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestMultiTableMappings.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/meta/TestMultiTableMappings.java
@@ -35,6 +35,7 @@
 
 import org.apache.openjpa.persistence.OpenJPAEntityManager;
 import org.apache.openjpa.persistence.OpenJPAQuery;
+import org.apache.openjpa.persistence.jdbc.FetchMode;
 import org.apache.openjpa.persistence.jdbc.JDBCFetchPlan;
 import org.apache.openjpa.persistence.jdbc.common.apps.MultiA;
 import org.apache.openjpa.persistence.jdbc.common.apps.MultiB;
@@ -63,7 +64,7 @@
     public void setUpTestCase() {
        deleteAll(MultiA.class);
 
-        OpenJPAEntityManager pm =(OpenJPAEntityManager)currentEntityManager();
+        OpenJPAEntityManager pm = currentEntityManager();
         Collection os = new ArrayList();
         MultiA a = new MultiA();
         MultiB b = new MultiB();
@@ -174,9 +175,8 @@
 
     public void testVerticalQueryModeQueries() {
         OpenJPAEntityManager pm =(OpenJPAEntityManager)currentEntityManager();
-        OpenJPAQuery q = pm.createNativeQuery("",MultiA.class);
-        ((JDBCFetchPlan) q.getFetchPlan()).
-                setSubclassFetchMode(JDBCFetchPlan.EAGER_PARALLEL);
+        OpenJPAQuery<MultiA> q = pm.createNativeQuery("",MultiA.class);
+        ((JDBCFetchPlan) q.getFetchPlan()).setSubclassFetchMode(FetchMode.PARALLEL);
         // we need ordering; otherwise kodo is smart enough to only run first
         // select until its results are exhausted
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/TestMultipleEntityProjection.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/TestMultipleEntityProjection.java
index 501e645..0d34a4c 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/TestMultipleEntityProjection.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/TestMultipleEntityProjection.java
@@ -70,28 +70,29 @@
 	void createData() {
 		EntityManager em = emf.createEntityManager();
 		em.getTransaction().begin();
-		for (int i = 0; i < MAGAZINE_PUBLISHER_NAME_PAIRS.length; i++) {
-			String magName = MAGAZINE_PUBLISHER_NAME_PAIRS[i][0];
-			String pubName = MAGAZINE_PUBLISHER_NAME_PAIRS[i][1];
-			Magazine mag = new Magazine();
-			mag.setName(magName);
-			if (pubName != null) {
-				Publisher pub = new Publisher();
-				pub.setName(pubName);
-				mag.setPublisher(pub);
-				try {
-                    DateFormat df = new SimpleDateFormat ("yyyy-MM-dd");
-					Date date = df.parse("2001-01-01");
-					mag.setDatePublished(date);
-				} catch (ParseException e) {
-					mag.setDatePublished(null);
-				}
+        for (String[] magazinePublisherNamePair : MAGAZINE_PUBLISHER_NAME_PAIRS) {
+            String magName = magazinePublisherNamePair[0];
+            String pubName = magazinePublisherNamePair[1];
+            Magazine mag = new Magazine();
+            mag.setName(magName);
+            if (pubName != null) {
+                Publisher pub = new Publisher();
+                pub.setName(pubName);
+                mag.setPublisher(pub);
+                try {
+                    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
+                    Date date = df.parse("2001-01-01");
+                    mag.setDatePublished(date);
+                }
+                catch (ParseException e) {
+                    mag.setDatePublished(null);
+                }
                 mag.setTsPublished(new Timestamp(System.currentTimeMillis() - 100000));
 
-				em.persist(pub);
-			}
-			em.persist(mag);
-		}
+                em.persist(pub);
+            }
+            em.persist(mag);
+        }
 		em.getTransaction().commit();
 	}
 
@@ -194,13 +195,13 @@
 	 */
 	private int getExpecetedResultCount(String key, boolean innerJoin) {
 		int count = 0;
-		for (int i = 0; i < MAGAZINE_PUBLISHER_NAME_PAIRS.length; i++) {
-			String magName = MAGAZINE_PUBLISHER_NAME_PAIRS[i][0];
-			String pubName = MAGAZINE_PUBLISHER_NAME_PAIRS[i][1];
-			if (magName.indexOf(key) != -1)
+        for (String[] magazinePublisherNamePair : MAGAZINE_PUBLISHER_NAME_PAIRS) {
+            String magName = magazinePublisherNamePair[0];
+            String pubName = magazinePublisherNamePair[1];
+            if (magName.indexOf(key) != -1)
                 if (!innerJoin || (innerJoin && pubName != null))
-					count++;
-		}
+                    count++;
+        }
 		return count;
 	}
 }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/TestNamedSQLQueries.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/TestNamedSQLQueries.java
index e61d74f..01d08b3 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/TestNamedSQLQueries.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/TestNamedSQLQueries.java
@@ -71,8 +71,7 @@
 
         assertEquals("javax.jdo.query.SQL", ((OpenJPAQuery) q).getLanguage());
         Collection results = (Collection) q.getCandidateCollection();
-        for (Iterator i = results.iterator(); i.hasNext();)
-            assertEquals(4, ((NamedSQL) i.next()).getNum());
+        for (Object result : results) assertEquals(4, ((NamedSQL) result).getNum());
         assertEquals(5, results.size());
         q.closeAll();
         pm.close();
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/schema/TestClassSequenceFactory.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/schema/TestClassSequenceFactory.java
index 71b2e72..016f6cc 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/schema/TestClassSequenceFactory.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/schema/TestClassSequenceFactory.java
@@ -89,10 +89,11 @@
         Statement s = null;
         try {
             s = c.createStatement();
-            for (int i = 0; i < sql.length; i++) {
+            for (String value : sql) {
                 try {
-                    s.execute(sql[i]);
-                } catch (SQLException sqe) {
+                    s.execute(value);
+                }
+                catch (SQLException sqe) {
                 }
             }
         } finally {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestFinderCache.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestFinderCache.java
index 75d1fbf..06d617a 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestFinderCache.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestFinderCache.java
@@ -107,8 +107,8 @@
         for (int n = 0; n < N; n++) {
             em.clear();
             long start = System.nanoTime();
-            for (int i = 0; i < ids.length; i++) {
-                T pc = em.find(cls, ids[i]);
+            for (long id : ids) {
+                T pc = em.find(cls, id);
                 assertNotNull(pc);
                 assertTrue(cls.isInstance(pc));
             }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestInExpressionParameterBinding.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestInExpressionParameterBinding.java
index d01dba7..2cdadc2 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestInExpressionParameterBinding.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestInExpressionParameterBinding.java
@@ -74,9 +74,9 @@
     private void createData() {
         OpenJPAEntityManager em = _emf.createEntityManager();
         em.getTransaction().begin();
-        for (int i = 0; i < ORIGINAL_ZIPS.size(); i++) {
+        for (Integer originalZip : ORIGINAL_ZIPS) {
             Address a = new Address();
-            a.setZip(ORIGINAL_ZIPS.get(i));
+            a.setZip(originalZip);
             em.persist(a);
         }
         em.getTransaction().commit();
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java
index fb4fc87..c8ff3e7 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java
@@ -146,25 +146,25 @@
 	        company.setName(COMPANY_NAMES[i]);
 	        company.setStartYear(START_YEARS[i]);
 	        em.persist(company);
-	        for (int j = 0; j < DEPARTMENT_NAMES.length; j++) {
-	            Department dept = new Department();
-	            dept.setName(DEPARTMENT_NAMES[j]);
-	            company.addDepartment(dept);
-	            em.persist(dept);
-	            for (int k = 0; k < EMPLOYEE_NAMES.length; k++) {
-	                Employee emp = new Employee();
-	                emp.setName(EMPLOYEE_NAMES[k]);
-	                emp.setStartDate(EMPLOYEE_START_DATES[k]);
-	                emp.setEndDate(EMPLOYEE_END_DATES[k]);
+            for (String departmentName : DEPARTMENT_NAMES) {
+                Department dept = new Department();
+                dept.setName(departmentName);
+                company.addDepartment(dept);
+                em.persist(dept);
+                for (int k = 0; k < EMPLOYEE_NAMES.length; k++) {
+                    Employee emp = new Employee();
+                    emp.setName(EMPLOYEE_NAMES[k]);
+                    emp.setStartDate(EMPLOYEE_START_DATES[k]);
+                    emp.setEndDate(EMPLOYEE_END_DATES[k]);
 
-	                Address addr = new Address();
-	                addr.setCity(CITY_NAMES[k]);
+                    Address addr = new Address();
+                    addr.setCity(CITY_NAMES[k]);
                     em.persist(emp);
-	                em.persist(addr);
-	                emp.setAddress(addr);
+                    em.persist(addr);
+                    emp.setAddress(addr);
                     dept.addEmployees(emp);
-	            }
-	        }
+                }
+            }
 	    }
         Person p1 = new Person("John", "Doe", (short)45, 1964);
         Person p2 = new Person("John", "Doe", (short)42, 1967);
@@ -265,14 +265,14 @@
 
         List<Employee> rs1 = em.createQuery(jpql).setParameter("param", param1).getResultList();
 
-        for (int i = 0; i < rs1.size(); i++) {
-            Employee e = (Employee) rs1.get(i);
+        for (Employee employee2 : rs1) {
+            Employee e = (Employee) employee2;
             assertFalse(e.getDepartment().getName().equals("Engineering"));
         }
 
         List<Employee> rs2 = (List<Employee>) em.createQuery(jpql).setParameter("param", param2).getResultList();
-        for (int i = 0; i < rs2.size(); i++) {
-            Employee e = (Employee) rs2.get(i);
+        for (Employee employee1 : rs2) {
+            Employee e = (Employee) employee1;
             assertFalse(e.getDepartment().getName().equals("Sales"));
         }
 
@@ -283,8 +283,8 @@
         query.setParameter("p2", param1.get(1));
         query.setParameter("p3", param1.get(2));
         List<Employee> rs3 = query.getResultList();
-        for (int i = 0; i < rs3.size(); i++) {
-            Employee e = (Employee) rs3.get(i);
+        for (Employee element : rs3) {
+            Employee e = (Employee) element;
             assertTrue(e.getDepartment().getName().equals("Marketing"));
         }
 
@@ -294,8 +294,8 @@
         query.setParameter("p2", param2.get(1));
         query.setParameter("p3", param2.get(2));
         List<Employee> rs4 = query.getResultList();
-        for (int i = 0; i < rs4.size(); i++) {
-            Employee e = (Employee) rs4.get(i);
+        for (Employee employee : rs4) {
+            Employee e = (Employee) employee;
             assertTrue(e.getDepartment().getName().equals("Engineering"));
         }
 
@@ -313,8 +313,8 @@
         Query qry = em.createQuery(jpql6);
         qry.setParameter(1, parm1);
         List<Child> c1 = qry.getResultList();
-        for (int i = 0; i < c1.size(); i++) {
-            Child child = (Child) c1.get(i);
+        for (Child item : c1) {
+            Child child = (Child) item;
             assertTrue(child.getParent().getId() < 3);
         }
 
@@ -322,8 +322,8 @@
         qry = em.createQuery(jpql6);
         qry.setParameter(1, parm2);
         List<Child> c2 = qry.getResultList();
-        for (int i = 0; i < c2.size(); i++) {
-            Child child = (Child) c2.get(i);
+        for (Child value : c2) {
+            Child child = (Child) value;
             assertTrue(child.getParent().getId() > 4);
         }
 
@@ -342,8 +342,8 @@
         List<Employee> rs1 =
             em.createQuery(jpql).setParameter("param", param1).getResultList();
 
-        for (int i = 0; i < rs1.size(); i++) {
-            Employee e = (Employee) rs1.get(i);
+        for (Employee employee : rs1) {
+            Employee e = (Employee) employee;
             assertFalse(e.getDepartment().getName().equals("Engineering"));
         }
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEntityTypeExpression.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEntityTypeExpression.java
index d776dd2..627c335 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEntityTypeExpression.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEntityTypeExpression.java
@@ -211,8 +211,8 @@
                 " FROM CompUser e",
         };
 
-        for (int i = 0; i < queries.length; i++) {
-            query = queries[i];
+        for (String s : queries) {
+            query = s;
             List<Object> rs1 = em.createQuery(query).getResultList();
             Object obj = rs1.get(0);
             obj.toString();
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestIndex.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestIndex.java
index 8dbcea9..60fc864 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestIndex.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestIndex.java
@@ -228,8 +228,8 @@
             // create the elements to add
             Constructor<INameEntity> elementConstrctor = elementClass.getConstructor(String.class);
             List<INameEntity> newElements = new ArrayList<>();
-            for (int i=0; i<Element_Names.length; i++) {
-                newElements.add(elementConstrctor.newInstance(Element_Names[i]));
+            for (String element_name : Element_Names) {
+                newElements.add(elementConstrctor.newInstance(element_name));
             }
 
             // add the entities
@@ -293,8 +293,8 @@
             Constructor<IColumnEntity> elementConstrctor = elementClass.getConstructor(String.class);
             List<INameEntity> newElements = new ArrayList<>();
             IColumnEntity newElement;
-            for (int i=0; i<Element_Names.length; i++) {
-                newElement = elementConstrctor.newInstance(Element_Names[i]);
+            for (String element_name : Element_Names) {
+                newElement = elementConstrctor.newInstance(element_name);
                 // add parent relationships
                 newElement.setEntities(newEntities);
                 em.persist(newElement);
@@ -344,8 +344,8 @@
             IOrderedElements newEntity = (IOrderedElements)constructNewEntityObject(entityType);
             newEntity.setId(entityId);
             List<String> namesList = new ArrayList<>();
-            for (int i=0; i<Element_Names.length; i++) {
-                namesList.add(Element_Names[i]);
+            for (String element_name : Element_Names) {
+                namesList.add(element_name);
             }
             newEntity.setListElements(namesList);
             // add the entity
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java
index e96fab6..7aacca6 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestJPQLScalarExpressions.java
@@ -98,8 +98,8 @@
             "SELECT c.name as name, SUM(c.age) as sage FROM CompUser c group by c.name order by sage desc, name",
             "SELECT c.name, AVG(c.age) as age FROM CompUser c group by c.name order by age desc, c.name",
         };
-        for (int i = 0; i < querys.length; i++) {
-            Query query = em.createQuery(querys[i]);
+        for (String s : querys) {
+            Query query = em.createQuery(s);
             query.setFirstResult(1);
             query.setMaxResults(4);
             List<Object[]> rs = query.getResultList();
@@ -120,8 +120,8 @@
             "SELECT SUM(c.age) * SUM(c.userid) FROM CompUser c",
             "SELECT SUM(c.age) - MIN(c.userid) + MAX(c.userid) FROM CompUser c",
         };
-        for (int i = 0; i < query.length; i++) {
-            List<Long> rs = em.createQuery(query[i]).getResultList();
+        for (String value : query) {
+            List<Long> rs = em.createQuery(value).getResultList();
             assertTrue(rs.get(0) > 0);
         }
         String query2[] = {
@@ -129,8 +129,8 @@
                 "SELECT SUM(c.age) * SUM(c.userid), AVG(c.age) FROM CompUser c",
                 "SELECT SUM(c.age) - MIN(c.userid) + MAX(c.userid), AVG(c.age)/10 FROM CompUser c",
         };
-        for (int i = 0; i < query2.length; i++) {
-            List<Object[]> rs = (List<Object[]>)em.createQuery(query2[i]).getResultList();
+        for (String s : query2) {
+            List<Object[]> rs = (List<Object[]>) em.createQuery(s).getResultList();
             assertNotNull(rs.get(0)[1]);
         }
         endEm(em);
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestDetachedStateManager.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestDetachedStateManager.java
index bb219e0..a3e33e5 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestDetachedStateManager.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestDetachedStateManager.java
@@ -396,8 +396,8 @@
         assertSize(remove ? 1 : 2, b.getDs());
         boolean found1 = false;
         boolean found2 = false;
-        for (Iterator it = b.getDs().iterator(); it.hasNext();) {
-            d = (AttachD) it.next();
+        for (Object o : b.getDs()) {
+            d = (AttachD) o;
             switch (d.getDint()) {
                 case 5:
                     if (found1)
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBLocales.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBLocales.java
index da45583..0b8ffb8 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBLocales.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBLocales.java
@@ -59,14 +59,14 @@
         boolean foundFrance = false;
         Locale locale;
 
-        for (Iterator iter = c.iterator(); iter.hasNext();) {
-            t1 = (RuntimeTest1) iter.next();
+        for (Object o : c) {
+            t1 = (RuntimeTest1) o;
             locale = t1.getLocaleField();
             if (locale == null)
                 foundNull = true;
             else if (
-                (locale.getCountry().equals(Locale.FRANCE.getCountry())) &&
-                    (locale.getLanguage().equals(Locale.FRANCE.getLanguage())))
+                    (locale.getCountry().equals(Locale.FRANCE.getCountry())) &&
+                            (locale.getLanguage().equals(Locale.FRANCE.getLanguage())))
                 foundFrance = true;
         }
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestExtents.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestExtents.java
index 28371b3..7edf567 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestExtents.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestExtents.java
@@ -91,8 +91,8 @@
         Extent ext = pm.createExtent(RuntimeTest1.class, true);
 
         boolean foundB = false;
-        for (Iterator i = ext.iterator(); i.hasNext();)
-            if (i.next().getClass().equals(RuntimeTest2.class))
+        for (Object o : ext)
+            if (o.getClass().equals(RuntimeTest2.class))
                 foundB = true;
         assertTrue(foundB);
     }
@@ -102,8 +102,7 @@
         Extent ext = pm.createExtent(RuntimeTest1.class, true);
 
         List all = new LinkedList();
-        for (Iterator i = ext.iterator(); i.hasNext();)
-            all.add(i.next());
+        for (Object o : ext) all.add(o);
 
         List aList = ext.list();
         assertEquals(all.size(), aList.size());
@@ -117,7 +116,6 @@
 
         assertEquals(l.size(), size);
 
-        for (Iterator iter = l.iterator(); iter.hasNext();)
-            assertTrue(c.contains(iter.next()));
+        for (Object o : l) assertTrue(c.contains(o));
     }
 }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestExtents2.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestExtents2.java
index 490d392..e1b2d06 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestExtents2.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestExtents2.java
@@ -107,8 +107,8 @@
         int test2Count = 0;
         int test3Count = 0;
         Object next;
-        for (Iterator itr = ext.iterator(); itr.hasNext();) {
-            next = pm.getObjectId(itr.next());
+        for (Object o : ext) {
+            next = pm.getObjectId(o);
             if (_oid1.equals(next))
                 test1Count++;
             else if (_oid2.equals(next))
@@ -142,8 +142,8 @@
             boolean foundOid1 = false;
             boolean foundNew = false;
             Object next;
-            for (Iterator itr = ext.iterator(); itr.hasNext();) {
-                next = pm.getObjectId(itr.next());
+            for (Object o : ext) {
+                next = pm.getObjectId(o);
                 if (_oid1.equals(next))
                     foundOid1 = true;
                 else if (newOid.equals(next))
@@ -178,8 +178,8 @@
             boolean foundOid1 = false;
             boolean foundOid3 = false;
             Object next;
-            for (Iterator itr = ext.iterator(); itr.hasNext();) {
-                next = pm.getObjectId(itr.next());
+            for (Object o : ext) {
+                next = pm.getObjectId(o);
                 if (_oid1.equals(next))
                     foundOid1 = true;
                 else if (_oid3.equals(next))
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPMMemory.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPMMemory.java
index 553efb5..c348c1e 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPMMemory.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPMMemory.java
@@ -245,8 +245,8 @@
         runningId += persistables.length;
 
         // add them
-        for (int i = 0; i < persistables.length; i++) {
-            pm.persist(persistables[i]);
+        for (RuntimeTest1 persistable : persistables) {
+            pm.persist(persistable);
         }
 
         // modify them
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPersistenceManager.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPersistenceManager.java
index 9b5a75a..f976067 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPersistenceManager.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPersistenceManager.java
@@ -337,13 +337,13 @@
 
         List l = ((Extent) pm.createExtent(RuntimeTest1.class, true)).list();
         pm.retrieveAll(l);
-        for (Iterator iter = l.iterator(); iter.hasNext();) {
-            PCState s = getStateManager(iter.next(), pm).getPCState();
+        for (Object value : l) {
+            PCState s = getStateManager(value, pm).getPCState();
             assertEquals(PCState.PNONTRANS, s);
         }
         pm.evictAll();
-        for (Iterator iter = l.iterator(); iter.hasNext();) {
-            PCState s = getStateManager(iter.next(), pm).getPCState();
+        for (Object o : l) {
+            PCState s = getStateManager(o, pm).getPCState();
             assertEquals(PCState.HOLLOW, s);
         }
     }
@@ -353,13 +353,13 @@
 
         List l = ((Extent) pm.createExtent(RuntimeTest1.class, true)).list();
         pm.retrieveAll(l);
-        for (Iterator iter = l.iterator(); iter.hasNext();) {
-            PCState s = getStateManager(iter.next(), pm).getPCState();
+        for (Object value : l) {
+            PCState s = getStateManager(value, pm).getPCState();
             assertEquals(PCState.PNONTRANS, s);
         }
         pm.evictAll(l);
-        for (Iterator iter = l.iterator(); iter.hasNext();) {
-            PCState s = getStateManager(iter.next(), pm).getPCState();
+        for (Object o : l) {
+            PCState s = getStateManager(o, pm).getPCState();
             assertEquals(PCState.HOLLOW, s);
         }
     }
@@ -369,13 +369,13 @@
 
         List l = ((Extent) pm.createExtent(RuntimeTest1.class, true)).list();
         pm.retrieveAll(l);
-        for (Iterator iter = l.iterator(); iter.hasNext();) {
-            PCState s = getStateManager(iter.next(), pm).getPCState();
+        for (Object value : l) {
+            PCState s = getStateManager(value, pm).getPCState();
             assertEquals(PCState.PNONTRANS, s);
         }
         pm.evictAll(RuntimeTest1.class);
-        for (Iterator iter = l.iterator(); iter.hasNext();) {
-            PCState s = getStateManager(iter.next(), pm).getPCState();
+        for (Object o : l) {
+            PCState s = getStateManager(o, pm).getPCState();
             assertEquals(PCState.HOLLOW, s);
         }
     }
@@ -385,14 +385,14 @@
 
         List l = ((Extent) pm.createExtent(RuntimeTest1.class, true)).list();
         pm.retrieveAll(l);
-        for (Iterator iter = l.iterator(); iter.hasNext();) {
-            PCState s = getStateManager(iter.next(), pm).getPCState();
+        for (Object value : l) {
+            PCState s = getStateManager(value, pm).getPCState();
             assertEquals(PCState.PNONTRANS, s);
         }
         pm.evictAll(RuntimeTest2.class);
         boolean foundPNONTRANS = false;
-        for (Iterator iter = l.iterator(); iter.hasNext();) {
-            PCState s = getStateManager(iter.next(), pm).getPCState();
+        for (Object o : l) {
+            PCState s = getStateManager(o, pm).getPCState();
             if (s == PCState.PNONTRANS) {
                 foundPNONTRANS = true;
                 break;
@@ -407,24 +407,23 @@
 
         List l = ((Extent) pm.createExtent(RuntimeTest1.class, true)).list();
         pm.retrieveAll(l);
-        for (Iterator iter = l.iterator(); iter.hasNext();) {
-            PCState s = getStateManager(iter.next(), pm).getPCState();
+        for (Object element : l) {
+            PCState s = getStateManager(element, pm).getPCState();
             assertEquals(PCState.PNONTRANS, s);
         }
         pm.evictAll(pm.createExtent(RuntimeTest1.class, true));
-        for (Iterator iter = l.iterator(); iter.hasNext();) {
-            PCState s = getStateManager(iter.next(), pm).getPCState();
+        for (Object item : l) {
+            PCState s = getStateManager(item, pm).getPCState();
             assertEquals(PCState.HOLLOW, s);
         }
 
         pm.retrieveAll(l);
-        for (Iterator iter = l.iterator(); iter.hasNext();) {
-            PCState s = getStateManager(iter.next(), pm).getPCState();
+        for (Object value : l) {
+            PCState s = getStateManager(value, pm).getPCState();
             assertEquals(PCState.PNONTRANS, s);
         }
         pm.evictAll(pm.createExtent(RuntimeTest1.class, false));
-        for (Iterator iter = l.iterator(); iter.hasNext();) {
-            Object o = iter.next();
+        for (Object o : l) {
             if (o.getClass() == RuntimeTest1.class) {
                 PCState s = getStateManager(o, pm).getPCState();
                 assertEquals(PCState.HOLLOW, s);
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPersistentMaps.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPersistentMaps.java
index 8e09023..d1bf2fa 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPersistentMaps.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPersistentMaps.java
@@ -104,8 +104,7 @@
         startTx(pm);
 //        holder = getHolder(pm);
         map = holder.getNamedMap(name);
-        for (Iterator i = internalMap.keySet().iterator(); i.hasNext();) {
-            Object k = i.next();
+        for (Object k : internalMap.keySet()) {
             assertEquals(map.get(k), internalMap.get(k));
         }
         endTx(pm);
@@ -116,9 +115,8 @@
 
         pm = getPM();
         startTx(pm);
-        for (Iterator i = internalMap.keySet().iterator(); i.hasNext();) {
+        for (Object param : internalMap.keySet()) {
 
-            Object param = i.next();
             if (pm.isPersistent(param))
                 param = pm.find(param.getClass(), pm.getObjectId(param));
 
@@ -129,33 +127,33 @@
             OpenJPAQuery q;
 
             q = pm.createQuery(JDOQL,
-                selectWhere + name + ".containsKey(:param)");
+                    selectWhere + name + ".containsKey(:param)");
             q.setParameter("param", param);
             assertSize(1, q.getResultList());
 
             q = pm.createQuery(JDOQL,
-                selectWhere + name + ".containsValue(:value)");
+                    selectWhere + name + ".containsValue(:value)");
             q.setParameter("value", val);
             assertSize(1, q.getResultList());
 
             q = pm.createQuery(JDOQL, selectWhere + name + ".containsValue(" +
-                name + ".get(:param))");
+                    name + ".get(:param))");
             q.setParameter("param", param);
             assertSize(1, q.getResultList());
 
             q = pm.createQuery(JDOQL,
-                selectWhere + name + ".get(:param) != null");
+                    selectWhere + name + ".get(:param) != null");
             q.setParameter("param", param);
             assertSize(1, q.getResultList());
 
             q = pm.createQuery(JDOQL,
-                selectWhere + name + ".get(:param) == :value");
+                    selectWhere + name + ".get(:param) == :value");
             q.setParameter("param", param);
             q.setParameter("value", val);
             assertSize(1, q.getResultList());
 
             q = pm.createQuery(JDOQL,
-                selectWhere + name + ".get(:param) != :value");
+                    selectWhere + name + ".get(:param) != :value");
             q.setParameter("param", param);
             q.setParameter("value", val);
             assertSize(0, q.getResultList());
@@ -165,21 +163,20 @@
 
         pm = getPM();
         startTx(pm);
-        for (Iterator i = internalMap.keySet().iterator(); i.hasNext();) {
-            Object param = i.next();
+        for (Object param : internalMap.keySet()) {
             if (pm.isPersistent(param))
                 param = pm.find(param.getClass(), pm.getObjectId(param));
 
             List getQueries = new ArrayList(Arrays.asList(new String[]{
-                selectWhere + name + ".get(:param) != null",
-                selectWhere + name + ".get(:param) == " + name + ".get(:param)",
-                selectWhere + "!(" + name + ".get(:param) == null)",
-                selectWhere + "!(" + name + ".get(:param) != " + name +
-                    ".get(:param))",
+                    selectWhere + name + ".get(:param) != null",
+                    selectWhere + name + ".get(:param) == " + name + ".get(:param)",
+                    selectWhere + "!(" + name + ".get(:param) == null)",
+                    selectWhere + "!(" + name + ".get(:param) != " + name +
+                            ".get(:param))",
             }));
 
-            for (Iterator qi = getQueries.iterator(); qi.hasNext();) {
-                String query = (String) qi.next();
+            for (Object getQuery : getQueries) {
+                String query = (String) getQuery;
                 if (valueClass == String.class)
                     query += " order by " + name + ".get(:param) desc";
                 OpenJPAQuery q = pm.createQuery(JDOQL, query);
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestQueries.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestQueries.java
index aeced8b..baa8edd 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestQueries.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestQueries.java
@@ -165,8 +165,7 @@
             pm.createQuery("SELECT o FROM " + cstrng + " o WHERE o." + filter);
         query.setSubclasses(subs);
         Collection items = query.getResultList();
-        for (Iterator i = items.iterator(); i.hasNext();)
-            pm.remove(i.next());
+        for (Object item : items) pm.remove(item);
 
         //FIXME jthomas
         //query = pm.newQuery(extent, filter);
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestSavepoints.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestSavepoints.java
index ac86cb5..fa89abc 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestSavepoints.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestSavepoints.java
@@ -386,8 +386,8 @@
             startTx(pm);
             pc = pm.find(ModRuntimeTest1.class, oid);
             assertEquals(2, pc.getSelfOneMany().size());
-            for (Iterator it = pc.getSelfOneMany().iterator(); it.hasNext();) {
-                temp = (ModRuntimeTest1) it.next();
+            for (Object o : pc.getSelfOneMany()) {
+                temp = (ModRuntimeTest1) o;
                 if (temp.getIntField() == 2)
                     pc2 = temp;
                 else if (temp.getIntField() == 3)
@@ -418,8 +418,8 @@
 
         assertEquals("orig", pc.getStringField());
         assertFalse(pm.isRemoved(pc2));
-        for (Iterator it = pc.getSelfOneMany().iterator(); it.hasNext();) {
-            temp = (ModRuntimeTest1) it.next();
+        for (Object value : pc.getSelfOneMany()) {
+            temp = (ModRuntimeTest1) value;
             assertFalse(pm.isRemoved(temp));
             assertEquals(pc, temp.getSelfOneOne());
             if (temp.getIntField() < 0)
@@ -437,8 +437,8 @@
         assertEquals(2 + before, pc.getSelfOneMany().size());
         boolean found2 = false;
         boolean found3 = false;
-        for (Iterator it = pc.getSelfOneMany().iterator(); it.hasNext();) {
-            temp = (ModRuntimeTest1) it.next();
+        for (Object o : pc.getSelfOneMany()) {
+            temp = (ModRuntimeTest1) o;
             assertEquals(pc, temp.getSelfOneOne());
             if (temp.getIntField() < 0)
                 fail("shouldn't be here:" + temp.getStringField());
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestSecondClassValues.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestSecondClassValues.java
index c640ee4..217c874 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestSecondClassValues.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestSecondClassValues.java
@@ -365,43 +365,39 @@
         assertNotNull("Map is null in setGetMap", smap);
         commit();
 
-        for (Iterator mapKey = ((HashMap) map.clone()).keySet().iterator();
-            mapKey.hasNext();) {
-            Object keyToDelete = mapKey.next();
-
+        for (Object keyToDelete : ((HashMap) map.clone()).keySet()) {
             begin();
             SCOTest retrievedObject =
-                (SCOTest) pm.find(SCOTest.class, testID);
+                    (SCOTest) pm.find(SCOTest.class, testID);
 
             assertNotNull(
-                "retrievedObject Obj is null - saveSecondClassMapInternal",
-                retrievedObject);
+                    "retrievedObject Obj is null - saveSecondClassMapInternal",
+                    retrievedObject);
 
             Map retrievedMap = setGetMap(retrievedObject, map, false);
 
             assertNotNull(
-                "retrievedMap Obj is null - saveSecondClassMapInternal",
-                retrievedMap);
+                    "retrievedMap Obj is null - saveSecondClassMapInternal",
+                    retrievedMap);
 
             assertTrue(map.size() != 0);
             assertEquals(map.size(), retrievedMap.size());
 
             assertTrue("Incompatible types", map.keySet().iterator().next().
-                getClass().isAssignableFrom(retrievedMap.keySet().
-                iterator().next().getClass()));
+                    getClass().isAssignableFrom(retrievedMap.keySet().
+                    iterator().next().getClass()));
 
             // check to make sure all the keys match up to the appropriate
             // values.
-            for (Iterator i = map.keySet().iterator(); i.hasNext();) {
-                Object key = i.next();
+            for (Object key : map.keySet()) {
                 assertTrue(key != null);
                 assertTrue(map.get(key) != null);
                 if (key.getClass() == Date.class
-                    && retrievedMap.get(key) == null) {
+                        && retrievedMap.get(key) == null) {
                     getLog().trace("Time: "
-                        + (((Date) key).getTime()));
+                            + (((Date) key).getTime()));
                     getLog().trace("List: "
-                        + dumpDates(retrievedMap.keySet()));
+                            + dumpDates(retrievedMap.keySet()));
 
                     /*
                         bug (6, "Dates lose precision in some data stores "
@@ -410,9 +406,9 @@
                     */
                 }
                 if ((key.getClass() == Double.class ||
-                    key.getClass() == Float.class ||
-                    key.getClass() == BigDecimal.class)
-                    && retrievedMap.get(key) == null) {
+                        key.getClass() == Float.class ||
+                        key.getClass() == BigDecimal.class)
+                        && retrievedMap.get(key) == null) {
                     /*
                          bug (3, "Doubles and Floats "
                              + " lose precision in some data stores");
@@ -420,13 +416,13 @@
                 }
 
                 assertTrue("The original map contained the object (class="
-                    + key.getClass().getName() + ", value="
-                    + key.toString() + "), but that object was null "
-                    + "in the map that was retrieved "
-                    + dump(retrievedMap.keySet()) + ".",
-                    retrievedMap.get(key) != null);
+                                + key.getClass().getName() + ", value="
+                                + key.toString() + "), but that object was null "
+                                + "in the map that was retrieved "
+                                + dump(retrievedMap.keySet()) + ".",
+                        retrievedMap.get(key) != null);
                 assertClassAndValueEquals(
-                    map.get(key), retrievedMap.get(key));
+                        map.get(key), retrievedMap.get(key));
             }
 
             // now delete the first key in both maps, and make sure
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/managedinterface/TestManagedInterfaces.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/managedinterface/TestManagedInterfaces.java
index 51ce3a1..8da9d2c 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/managedinterface/TestManagedInterfaces.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/managedinterface/TestManagedInterfaces.java
@@ -222,8 +222,8 @@
         Collection seen = new ArrayList();
         SimpleEntity rel;
         SimpleEntity toRem = null;
-        for (Iterator it = set.iterator(); it.hasNext();) {
-            rel = (SimpleEntity) it.next();
+        for (Object value : set) {
+            rel = (SimpleEntity) value;
             seen.add(rel.getName());
             if (rel.getValue().equals("4"))
                 toRem = rel;
@@ -245,8 +245,8 @@
         set = pc.getSetPC();
         assertEquals(4, set.size());
         seen.clear();
-        for (Iterator it = set.iterator(); it.hasNext();) {
-            rel = (SimpleEntity) it.next();
+        for (Object o : set) {
+            rel = (SimpleEntity) o;
             seen.add(rel.getName());
         }
         assertEquals(4, seen.size());
@@ -287,8 +287,8 @@
         Collection seen = new ArrayList();
         ManagedIface rel = null;
         ManagedIface toRem = null;
-        for (Iterator it = set.iterator(); it.hasNext();) {
-            rel = (ManagedIface) it.next();
+        for (Object value : set) {
+            rel = (ManagedIface) value;
             seen.add(rel.getIntField());
             if (rel.getIntField() == 4)
                 toRem = rel;
@@ -310,8 +310,8 @@
         set = pc.getSetI();
         assertEquals(4, set.size());
         seen.clear();
-        for (Iterator it = set.iterator(); it.hasNext();) {
-            rel = (ManagedIface) it.next();
+        for (Object o : set) {
+            rel = (ManagedIface) o;
             seen.add(rel.getIntField());
         }
         assertEquals(4, seen.size());
@@ -341,8 +341,8 @@
         Set seen = new HashSet();
         assertEquals(2, c.size());
         MixedInterface pc;
-        for (Iterator it = c.iterator(); it.hasNext();) {
-            pc = (MixedInterface) it.next();
+        for (Object o : c) {
+            pc = (MixedInterface) o;
             assertEquals(4, pc.getIntField());
             seen.add(pc.getClass());
         }
@@ -372,8 +372,8 @@
         Extent e = em.createExtent(MixedInterface.class, true);
         Set seen = new HashSet();
         int size = 0;
-        for (Iterator it = e.iterator(); it.hasNext();) {
-            seen.add(it.next().getClass());
+        for (Object value : e) {
+            seen.add(value.getClass());
             size++;
         }
         assertEquals(3, size);
@@ -382,8 +382,8 @@
         e = em.createExtent(MixedInterface.class, false);
         seen = new HashSet();
         size = 0;
-        for (Iterator it = e.iterator(); it.hasNext();) {
-            seen.add(it.next().getClass());
+        for (Object o : e) {
+            seen.add(o.getClass());
             size++;
         }
         assertEquals(1, size);
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestDupNamedQuery.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestDupNamedQuery.java
index 3198886..183a179 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestDupNamedQuery.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestDupNamedQuery.java
@@ -72,24 +72,27 @@
             list = em.createNamedQuery(findAllQName).getResultList();
             assertNotNull(list);
             assertEquals(list.size(), 2);
-            for (Iterator resultIter = list.iterator(); resultIter.hasNext();) {
-                o = resultIter.next();
+            for (Object value : list) {
+                o = value;
                 assertTrue(simple2 ? o instanceof SimpleEntity2
-                		: o instanceof SimpleEntity);
+                        : o instanceof SimpleEntity);
                 String n = null;
                 String v = null;
                 if (simple2) {
                     n = ((SimpleEntity2) o).getName();
                     v = ((SimpleEntity2) o).getValue();
-                } else {
+                }
+                else {
                     n = ((SimpleEntity) o).getName();
                     v = ((SimpleEntity) o).getValue();
                 }
                 if (n.equals(nameOne)) {
                     assertTrue(v.equals(ValueOne));
-                } else if (n.equals(nameTwo)) {
+                }
+                else if (n.equals(nameTwo)) {
                     assertTrue(v.equals(ValueTwo));
-                } else {
+                }
+                else {
                     assertTrue(false);
                 }
             }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestResultSetMapping.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestResultSetMapping.java
index 8a323dc..169eaab 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestResultSetMapping.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestResultSetMapping.java
@@ -47,8 +47,8 @@
         Query q = em.createNamedQuery("findSimpleEntitites");
         List res = q.getResultList();
         assertNotNull(res);
-        for (Iterator resultIter = res.iterator(); resultIter.hasNext();) {
-            assertSame(resultIter.next().getClass(), SimpleEntity.class);
+        for (Object re : res) {
+            assertSame(re.getClass(), SimpleEntity.class);
         }
         em.close();
     }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestSubquery.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestSubquery.java
index 99aafda..10ac3f6 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestSubquery.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestSubquery.java
@@ -261,8 +261,8 @@
             return;
 
         em.getTransaction().begin();
-        for (int i = 0; i < updates.length; i++) {
-            int updateCount = em.createQuery(updates[i]).executeUpdate();
+        for (String update : updates) {
+            int updateCount = em.createQuery(update).executeUpdate();
             assertEquals(0, updateCount);
         }
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestInverseEagerSQL.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestInverseEagerSQL.java
index bbbe1fc..20606cc 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestInverseEagerSQL.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestInverseEagerSQL.java
@@ -174,11 +174,10 @@
 
         assertEquals(1, res.size());
 
-        for (int i = 0; i < res.size(); i++) {
-            Customer c = (Customer)res.get(i);
+        for (Customer re : res) {
+            Customer c = (Customer) re;
             Collection<Order> orders = c.getOrders();
-            for (Iterator<Order> iter=orders.iterator(); iter.hasNext();) {
-                Order order = (Order)iter.next();
+            for (Order order : orders) {
                 assertEquals(order.getCustomer(), c);
             }
         }
@@ -201,8 +200,8 @@
         List<EntityCInverseEager> res = q.getResultList();
         assertEquals(4, res.size());
 
-        for (int i = 0; i < res.size(); i++) {
-            EntityCInverseEager c = (EntityCInverseEager)res.get(i);
+        for (EntityCInverseEager re : res) {
+            EntityCInverseEager c = (EntityCInverseEager) re;
             EntityDInverseEager d = c.getD();
             assertEquals(c, d.getC());
         }
@@ -224,12 +223,11 @@
         Query q = em.createQuery(query);
         List list = q.getResultList();
         assertEquals(1, list.size());
-        for (int i = 0; i < list.size(); i++) {
-            EntityA1InverseEager a1 = (EntityA1InverseEager)list.get(i);
+        for (Object element : list) {
+            EntityA1InverseEager a1 = (EntityA1InverseEager) element;
             Collection<EntityBInverseEager> listB = a1.getListB();
             assertEquals(4, listB.size());
-            for (Iterator iter=listB.iterator(); iter.hasNext();) {
-                EntityBInverseEager b = (EntityBInverseEager)iter.next();
+            for (EntityBInverseEager b : listB) {
                 EntityAInverseEager a = b.getA();
                 assertEquals(a1, a);
             }
@@ -241,12 +239,12 @@
         q = em.createQuery(query);
         list = q.getResultList();
         assertEquals(1, list.size());
-        for (int i = 0; i < list.size(); i++) {
-            EntityA2InverseEager a2 = (EntityA2InverseEager)list.get(i);
+        for (Object item : list) {
+            EntityA2InverseEager a2 = (EntityA2InverseEager) item;
             Collection listB = a2.getListB();
             assertEquals(4, listB.size());
-            for (Iterator iter=listB.iterator(); iter.hasNext();) {
-                EntityBInverseEager b = (EntityBInverseEager)iter.next();
+            for (Object o : listB) {
+                EntityBInverseEager b = (EntityBInverseEager) o;
                 EntityAInverseEager a = b.getA();
                 assertEquals(a2, a);
             }
@@ -258,12 +256,12 @@
         q = em.createQuery(query);
         list = q.getResultList();
         assertEquals(3, list.size());
-        for (int i = 0; i < list.size(); i++) {
-            EntityAInverseEager a0 = (EntityAInverseEager)list.get(i);
+        for (Object value : list) {
+            EntityAInverseEager a0 = (EntityAInverseEager) value;
             Collection listB = a0.getListB();
             assertEquals(4, listB.size());
-            for (Iterator iter=listB.iterator(); iter.hasNext();) {
-                EntityBInverseEager b = (EntityBInverseEager)iter.next();
+            for (Object o : listB) {
+                EntityBInverseEager b = (EntityBInverseEager) o;
                 EntityAInverseEager a = b.getA();
                 assertEquals(a0, a);
             }
@@ -290,12 +288,11 @@
 
         sql.clear();
         em.clear();
-        for (int i = 0; i < list.size(); i++) {
-            Publisher p = (Publisher) list.get(i);
+        for (Object o : list) {
+            Publisher p = (Publisher) o;
             Set<Magazine> magazines = p.getMagazineCollection();
             assertEquals(4, magazines.size());
-            for (Iterator iter = magazines.iterator(); iter.hasNext();) {
-                Magazine m = (Magazine) iter.next();
+            for (Magazine m : magazines) {
                 Publisher mp = m.getIdPublisher();
                 assertEquals(p, mp);
             }
@@ -322,11 +319,11 @@
 
         sql.clear();
         em.clear();
-        for (int i = 0; i < list.size(); i++) {
-            PPerson p = (PPerson) list.get(i);
+        for (Object o : list) {
+            PPerson p = (PPerson) o;
             Collection<PPhone> phones = p.getPhones();
             assertEquals(_nPhones, phones.size());
-            for(PPhone phone : p.getPhones()) {
+            for (PPhone phone : p.getPhones()) {
                 assertNotNull(phone.getPeople());
                 assertTrue(phone.getPeople().contains(p));
             }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestManyEagerSQL.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestManyEagerSQL.java
index 281eddb..81f5e46 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestManyEagerSQL.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestManyEagerSQL.java
@@ -102,8 +102,8 @@
 
         sql.clear();
 
-        for (int i = 0; i < list.size(); i++) {
-            OneManyEagerChild child = (OneManyEagerChild) list.get(i);
+        for (Object o : list) {
+            OneManyEagerChild child = (OneManyEagerChild) o;
             assertEquals(2, child.getParent().getLazyChildren().size());
             assertEquals(2, child.getParent().getEagerChildren().size());
         }
@@ -128,8 +128,8 @@
 
         sql.clear();
 
-        for (int i = 0; i < list.size(); i++) {
-            OneManyLazyChild child = (OneManyLazyChild) list.get(i);
+        for (Object o : list) {
+            OneManyLazyChild child = (OneManyLazyChild) o;
             assertEquals(2, child.getParent().getLazyChildren().size());
             assertEquals(2, child.getParent().getEagerChildren().size());
         }
@@ -180,8 +180,8 @@
 
         sql.clear();
 
-        for (int i = 0; i < list.size(); i++) {
-            OneManyEagerParent p = (OneManyEagerParent) list.get(i);
+        for (Object o : list) {
+            OneManyEagerParent p = (OneManyEagerParent) o;
             long id = p.getId();
             assertEquals(2, p.getEagerChildren().size());
             assertEquals(p, p.getEagerChildren().get(0).getParent());
@@ -221,8 +221,8 @@
 
         sql.clear();
 
-        for (int i = 0; i < list.size(); i++) {
-            OneOneParent p = (OneOneParent) list.get(i);
+        for (Object o : list) {
+            OneOneParent p = (OneOneParent) o;
             assertEquals(p, p.getChild().getParent());
         }
 
@@ -248,8 +248,8 @@
 
         sql.clear();
 
-        for (int i = 0; i < list.size(); i++) {
-            OneOneChild c = (OneOneChild) list.get(i);
+        for (Object o : list) {
+            OneOneChild c = (OneOneChild) o;
             assertEquals(c, c.getParent().getChild());
         }
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/results/cls/TestResultClsAnnotation.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/results/cls/TestResultClsAnnotation.java
index 4d50267..e4b48a6 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/results/cls/TestResultClsAnnotation.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/results/cls/TestResultClsAnnotation.java
@@ -44,8 +44,8 @@
             List<ResultClsAnnotation> result = q.getResultList();
             assertEquals(1, result.size());
 
-            for (Iterator it = result.iterator(); it.hasNext();) {
-                Object obj = (Object) it.next();
+            for (ResultClsAnnotation resultClsAnnotation : result) {
+                Object obj = (Object) resultClsAnnotation;
                 ResultClsAnnotation ct = (ResultClsAnnotation) obj;
                 assertEquals("id1", ct.getId());
                 assertEquals("description1", ct.getDescription());
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/results/cls/TestResultClsXml.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/results/cls/TestResultClsXml.java
index ab56284..228041e 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/results/cls/TestResultClsXml.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/results/cls/TestResultClsXml.java
@@ -45,8 +45,8 @@
             List<ResultClsXml> result = q.getResultList();
             assertEquals(1, result.size());
 
-            for (Iterator it = result.iterator(); it.hasNext();) {
-                Object obj = (Object) it.next();
+            for (ResultClsXml resultClsXml : result) {
+                Object obj = (Object) resultClsXml;
                 ResultClsXml ct = (ResultClsXml) obj;
                 assertEquals("id1", ct.getId());
                 assertEquals("description1", ct.getDescription());
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java
index 9a28036..652c8dd 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java
@@ -28,7 +28,6 @@
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -227,10 +226,7 @@
         if (emf == null || !emf.isOpen())
             return;
 
-        for (Iterator iter = ((AbstractBrokerFactory) JPAFacadeHelper
-            .toBrokerFactory(emf)).getOpenBrokers().iterator();
-            iter.hasNext(); ) {
-            Broker b = (Broker) iter.next();
+        for (Broker b : ((AbstractBrokerFactory) JPAFacadeHelper.toBrokerFactory(emf)).getOpenBrokers()) {
             if (b != null && !b.isClosed()) {
                 EntityManager em = JPAFacadeHelper.toEntityManager(b);
                 if (em.getTransaction().isActive())
@@ -571,14 +567,12 @@
         return System.getProperty("platform", "derby");
     }
 
-    private static class FixedMap extends LinkedHashMap<EMFKey,
-            OpenJPAEntityManagerFactorySPI> {
+    private static class FixedMap extends LinkedHashMap<EMFKey, OpenJPAEntityManagerFactorySPI> {
         
         private static final long serialVersionUID = 1L;
 
         @Override
-        public boolean removeEldestEntry(Map.Entry<EMFKey,
-                OpenJPAEntityManagerFactorySPI> entry) {
+        public boolean removeEldestEntry(Map.Entry<EMFKey, OpenJPAEntityManagerFactorySPI> entry) {
             return this.size() > 2;
         }
     }
diff --git a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AbstractQuery.java b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AbstractQuery.java
index 5fbbfa8..a89177e 100644
--- a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AbstractQuery.java
+++ b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AbstractQuery.java
@@ -287,9 +287,11 @@
         lock();
         try {
             clearBinding();
-            if (params != null)
-                for (Map.Entry e : (Set<Map.Entry>) params.entrySet())
+            if (params != null) {
+                for (Map.Entry e : (Set<Map.Entry>) params.entrySet()) {
                     setParameter((String) e.getKey(), e.getValue());
+                }
+            }
             return this;
         } finally {
             unlock();
diff --git a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
index 6ee7657..9a61b8e 100644
--- a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
+++ b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
@@ -928,10 +928,10 @@
             Field[] fields = (Field[]) AccessController.doPrivileged(
                 J2DoPrivHelper.getDeclaredFieldsAction(
                     meta.getDescribedType()));
-            for (int i = 0; i < fields.length; i++)
+            for (Field field : fields)
                 if (AccessController.doPrivileged(J2DoPrivHelper
-                        .isAnnotationPresentAction(fields[i], DetachedState.class)))
-                    meta.setDetachedState(fields[i].getName());
+                        .isAnnotationPresentAction(field, DetachedState.class)))
+                    meta.setDetachedState(field.getName());
         }
     }
 
@@ -982,8 +982,7 @@
         MethodKey key;
         Set<MethodKey> seen = new HashSet<>();
         do {
-            for (Method m : (Method[]) AccessController.doPrivileged(
-                J2DoPrivHelper.getDeclaredMethodsAction(sup))) {
+            for (Method m : (Method[]) AccessController.doPrivileged(J2DoPrivHelper.getDeclaredMethodsAction(sup))) {
                 mods = m.getModifiers();
                 if (Modifier.isStatic(mods) || Modifier.isFinal(mods) ||
                     Object.class.equals(m.getDeclaringClass()))
@@ -1014,18 +1013,18 @@
                     callbacks = (Collection<LifecycleCallbacks>[])
                         new Collection[LifecycleEvent.ALL_EVENTS.length];
 
-                for (int i = 0; i < events.length; i++) {
-                    int e = events[i];
+                for (int e : events) {
                     if (callbacks[e] == null)
                         callbacks[e] = new ArrayList<>(3);
                     MetaDataParsers.validateMethodsForSameCallback(cls,
-                        callbacks[e], m, tag, conf, repos.getLog());
+                            callbacks[e], m, tag, conf, repos.getLog());
                     if (listener) {
                         callbacks[e].add(new BeanLifecycleCallbacks(cls, m,
-                            false));
-                    } else {
+                                false));
+                    }
+                    else {
                         callbacks[e].add(new MethodLifecycleCallbacks(m,
-                            false));
+                                false));
                     }
                 }
             }
diff --git a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataSerializer.java b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataSerializer.java
index 1d99544..170cf24 100644
--- a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataSerializer.java
+++ b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataSerializer.java
@@ -376,14 +376,17 @@
 
         boolean removed = false;
         ClassMetaData[] metas = repos.getMetaDatas();
-        for (int i = 0; i < metas.length; i++)
-            removed |= removeMetaData(metas[i]);
+        for (ClassMetaData meta : metas) {
+            removed |= removeMetaData(meta);
+        }
         SequenceMetaData[] seqs = repos.getSequenceMetaDatas();
-        for (int i = 0; i < seqs.length; i++)
-            removed |= removeSequenceMetaData(seqs[i]);
+        for (SequenceMetaData seq : seqs) {
+            removed |= removeSequenceMetaData(seq);
+        }
         QueryMetaData[] queries = repos.getQueryMetaDatas();
-        for (int i = 0; i < queries.length; i++)
-            removed |= removeQueryMetaData(queries[i]);
+        for (QueryMetaData query : queries) {
+            removed |= removeQueryMetaData(query);
+        }
         return removed;
     }
 
@@ -587,14 +590,12 @@
                     serializeQuery((QueryMetaData) obj);
                     break;
                 case TYPE_CLASS_QUERIES:
-                    for (QueryMetaData query : ((ClassQueries) obj)
-                        .getQueries())
+                    for (QueryMetaData query : ((ClassQueries) obj).getQueries())
                         serializeQuery(query);
                     break;
                 case TYPE_CLASS_SEQS:
                     if (isMappingMode())
-                        for (SequenceMetaData seq : ((ClassSeqs) obj)
-                            .getSequences())
+                        for (SequenceMetaData seq : ((ClassSeqs) obj).getSequences())
                             serializeSequence(seq);
                     break;
                 default:
@@ -741,8 +742,9 @@
                 (meta.getDescribedType().getName());
             if (seqs != null) {
                 serializationSort(seqs);
-                for (int i = 0; i < seqs.size(); i++)
-                    serializeSequence((SequenceMetaData) seqs.get(i));
+                for (Object seq : seqs) {
+                    serializeSequence((SequenceMetaData) seq);
+                }
             }
         }
 
@@ -751,8 +753,9 @@
                 (meta.getDescribedType().getName());
             if (queries != null) {
                 serializationSort(queries);
-                for (int i = 0; i < queries.size(); i++)
-                    serializeQuery((QueryMetaData) queries.get(i));
+                for (Object query : queries) {
+                    serializeQuery((QueryMetaData) query);
+                }
             }
             if (isMappingMode())
                 serializeQueryMappings(meta);
diff --git a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceXMLMetaDataParser.java b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceXMLMetaDataParser.java
index 88ddb0c..3363b5d 100644
--- a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceXMLMetaDataParser.java
+++ b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceXMLMetaDataParser.java
@@ -221,13 +221,12 @@
             else
                 members = cls.getDeclaredMethods();
 
-            for (int i = 0; i < members.length; i++) {
-                Member member = members[i];
+            for (Member member : members) {
                 AnnotatedElement el = (AnnotatedElement) member;
                 XMLMetaData field = null;
                 if (el.getAnnotation(xmlElementClass) != null) {
                     String xmlname = (String) xmlElementName.invoke(el
-                        .getAnnotation(xmlElementClass), new Object[]{});
+                            .getAnnotation(xmlElementClass), new Object[]{});
                     // avoid JAXB XML bind default name
                     if (Objects.equals(XMLMetaData.defaultName, xmlname))
                         xmlname = member.getName();
@@ -237,32 +236,32 @@
                         field = _repos.addXMLClassMetaData(((Field) member).getType());
                         parseXmlRootElement(((Field) member).getType(), field);
                         populateFromReflection(((Field) member).getType()
-                            , field);
+                                , field);
                         field.setXmltype(XMLMetaData.XMLTYPE);
                         field.setXmlname(xmlname);
                     }
                     else {
                         field = _repos.newXMLFieldMetaData(((Field) member)
-                            .getType(), member.getName());
+                                .getType(), member.getName());
                         field.setXmltype(XMLMetaData.ELEMENT);
                         field.setXmlname(xmlname);
                         field.setXmlnamespace((String) xmlElementNamespace
-                            .invoke(el.getAnnotation(xmlElementClass)
-                            , new Object[]{}));
+                                .invoke(el.getAnnotation(xmlElementClass)
+                                        , new Object[]{}));
                     }
                 }
                 else if (el.getAnnotation(xmlAttributeClass) != null) {
                     field = _repos.newXMLFieldMetaData(((Field) member)
-                        .getType(), member.getName());
+                            .getType(), member.getName());
                     field.setXmltype(XMLMetaData.ATTRIBUTE);
                     String xmlname = (String) xmlAttributeName.invoke(
-                        el.getAnnotation(xmlAttributeClass), new Object[]{});
+                            el.getAnnotation(xmlAttributeClass), new Object[]{});
                     // avoid JAXB XML bind default name
                     if (Objects.equals(XMLMetaData.defaultName, xmlname))
                         xmlname = member.getName();
-                    field.setXmlname("@"+xmlname);
+                    field.setXmlname("@" + xmlname);
                     field.setXmlnamespace((String) xmlAttributeNamespace.invoke(
-                        el.getAnnotation(xmlAttributeClass), new Object[]{}));
+                            el.getAnnotation(xmlAttributeClass), new Object[]{}));
                 }
                 if (field != null)
                     meta.addField(member.getName(), field);
diff --git a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
index d257ea0..5966638 100644
--- a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
+++ b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
@@ -1889,11 +1889,11 @@
                     String superName = PCEnhancer.toManagedTypeName(className);
                     ClassMetaData[] metas = conf.getMetaDataRepositoryInstance()
                         .getMetaDatas();
-                    for (int i = 0; i < metas.length; i++) {
+                    for (ClassMetaData meta : metas) {
                         if (superName.equals(
-                            metas[i].getDescribedType().getName())) {
+                                meta.getDescribedType().getName())) {
                             return PCRegistry.getPCType(
-                                metas[i].getDescribedType());
+                                    meta.getDescribedType());
                         }
                     }
 
diff --git a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/FetchPlanImpl.java b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/FetchPlanImpl.java
index 4211ca7..cb365ee 100644
--- a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/FetchPlanImpl.java
+++ b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/FetchPlanImpl.java
@@ -22,7 +22,6 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -319,8 +318,9 @@
         if (fields.isEmpty())
             return fields;
         Collection names = new ArrayList(fields);
-        for (Iterator itr = fields.iterator(); itr.hasNext();)
-            names.add(toFieldName(cls, (String) itr.next()));
+        for (Object field : fields) {
+            names.add(toFieldName(cls, (String) field));
+        }
         return names;
     }
 
diff --git a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/HintHandler.java b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/HintHandler.java
index ef740d4..4254618 100644
--- a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/HintHandler.java
+++ b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/HintHandler.java
@@ -153,14 +153,15 @@
             owner.addFilterListener(Filters.hintToFilterListener(value, loader));
         } else if (QueryHints.HINT_FILTER_LISTENERS.equals(key)) {
             FilterListener[] arr = Filters.hintToFilterListeners(value, loader);
-            for (int i = 0; i < arr.length; i++)
-                owner.addFilterListener(arr[i]);
+            for (FilterListener filterListener : arr) {
+                owner.addFilterListener(filterListener);
+            }
         } else if (QueryHints.HINT_AGGREGATE_LISTENER.equals(key)) {
             owner.addAggregateListener(Filters.hintToAggregateListener(value, loader));
         } else if (QueryHints.HINT_AGGREGATE_LISTENERS.equals(key)) {
             AggregateListener[] arr = Filters.hintToAggregateListeners(value, loader);
-            for (int i = 0; i < arr.length; i++) {
-                owner.addAggregateListener(arr[i]);
+            for (AggregateListener aggregateListener : arr) {
+                owner.addAggregateListener(aggregateListener);
             }
         } else if (QueryHints.HINT_RESULT_COUNT.equals(key)) {
             int v = (Integer) Filters.convert(value, Integer.class);
diff --git a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceUnitInfoImpl.java b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceUnitInfoImpl.java
index 1327bf5..4f12be3 100644
--- a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceUnitInfoImpl.java
+++ b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceUnitInfoImpl.java
@@ -284,15 +284,16 @@
         }
         String[] cp = classPath.split(J2DoPrivHelper.getPathSeparator());
 
-        for (int i = 0; i < cp.length; i++) {
-            if (cp[i].equals(name)
-                || cp[i].endsWith(File.separatorChar + name)) {
+        for (String s : cp) {
+            if (s.equals(name)
+                    || s.endsWith(File.separatorChar + name)) {
                 try {
                     addJarFile(AccessController
-                        .doPrivileged(J2DoPrivHelper
-                            .toURLAction(new File(cp[i]))));
+                            .doPrivileged(J2DoPrivHelper
+                                    .toURLAction(new File(s))));
                     return;
-                } catch (PrivilegedActionException | MalformedURLException pae) {
+                }
+                catch (PrivilegedActionException | MalformedURLException pae) {
                     break;
                 }
             }
diff --git a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
index e9f5852..29fcd70 100644
--- a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
+++ b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
@@ -1096,8 +1096,8 @@
             meta = repos.addMetaData(_cls, accessCode, metaDataComplete);
             FieldMetaData[] fmds = meta.getFields();
             if (metaDataComplete) {
-                for (int i = 0; i < fmds.length; i++) {
-                    fmds[i].setExplicit(true);
+                for (FieldMetaData fmd : fmds) {
+                    fmd.setExplicit(true);
                 }
             }
             meta.setEnvClassLoader(_envLoader);
@@ -2186,16 +2186,16 @@
             adapter = new MethodLifecycleCallbacks(_cls,
                 attrs.getValue("method-name"), false);
 
-        for (int i = 0; i < events.length; i++) {
-            int event = events[i];
+        for (int event : events) {
             if (_listener != null) {
                 MetaDataParsers.validateMethodsForSameCallback(_listener,
-                    _callbacks[event], ((BeanLifecycleCallbacks) adapter).
-                    getCallbackMethod(), callback, _conf, getLog());
-            } else {
+                        _callbacks[event], ((BeanLifecycleCallbacks) adapter).
+                                getCallbackMethod(), callback, _conf, getLog());
+            }
+            else {
                 MetaDataParsers.validateMethodsForSameCallback(_cls,
-                    _callbacks[event], ((MethodLifecycleCallbacks) adapter).
-                    getCallbackMethod(), callback, _conf, getLog());
+                        _callbacks[event], ((MethodLifecycleCallbacks) adapter).
+                                getCallbackMethod(), callback, _conf, getLog());
 
             }
             if (_callbacks[event] == null)
diff --git a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataSerializer.java b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataSerializer.java
index 65870f3..a6ad43e 100644
--- a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataSerializer.java
+++ b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataSerializer.java
@@ -353,14 +353,17 @@
 
         boolean removed = false;
         ClassMetaData[] metas = repos.getMetaDatas();
-        for (int i = 0; i < metas.length; i++)
-            removed |= removeMetaData(metas[i]);
+        for (ClassMetaData meta : metas) {
+            removed |= removeMetaData(meta);
+        }
         SequenceMetaData[] seqs = repos.getSequenceMetaDatas();
-        for (int i = 0; i < seqs.length; i++)
-            removed |= removeSequenceMetaData(seqs[i]);
+        for (SequenceMetaData seq : seqs) {
+            removed |= removeSequenceMetaData(seq);
+        }
         QueryMetaData[] queries = repos.getQueryMetaDatas();
-        for (int i = 0; i < queries.length; i++)
-            removed |= removeQueryMetaData(queries[i]);
+        for (QueryMetaData query : queries) {
+            removed |= removeQueryMetaData(query);
+        }
         return removed;
     }
 
@@ -457,8 +460,8 @@
         boolean unique = true;
         boolean fieldAccess = false;
         boolean propertyAccess = false;
-        for (Iterator it = objects.iterator(); it.hasNext();) {
-            meta = it.next();
+        for (Object object : objects) {
+            meta = object;
             switch (type(meta)) {
                 case TYPE_META:
                     ClassMetaData cls = (ClassMetaData) meta;
@@ -515,14 +518,12 @@
                     serializeQuery((QueryMetaData) obj);
                     break;
                 case TYPE_CLASS_QUERIES:
-                    for (QueryMetaData query : ((ClassQueries) obj)
-                        .getQueries())
+                    for (QueryMetaData query : ((ClassQueries) obj).getQueries())
                         serializeQuery(query);
                     break;
                 case TYPE_CLASS_SEQS:
                     if (isMappingMode())
-                        for (SequenceMetaData seq : ((ClassSeqs) obj)
-                            .getSequences())
+                        for (SequenceMetaData seq : ((ClassSeqs) obj).getSequences())
                             serializeSequence(seq);
                     break;
                 default:
@@ -726,8 +727,9 @@
                 (meta.getDescribedType().getName());
             if (seqs != null) {
                 serializationSort(seqs);
-                for (int i = 0; i < seqs.size(); i++)
-                    serializeSequence((SequenceMetaData) seqs.get(i));
+                for (Object seq : seqs) {
+                    serializeSequence((SequenceMetaData) seq);
+                }
             }
         }
 
@@ -736,8 +738,9 @@
                 (meta.getDescribedType().getName());
             if (queries != null) {
                 serializationSort(queries);
-                for (int i = 0; i < queries.size(); i++)
-                    serializeQuery((QueryMetaData) queries.get(i));
+                for (Object query : queries) {
+                    serializeQuery((QueryMetaData) query);
+                }
             }
             if (isMappingMode())
                 serializeQueryMappings(meta);
diff --git a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/util/SourceCode.java b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/util/SourceCode.java
index d746f1e..d93d259 100644
--- a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/util/SourceCode.java
+++ b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/util/SourceCode.java
@@ -45,53 +45,53 @@
  *
  */
 public class SourceCode {
-	private static Localizer _loc = Localizer.forPackage(SourceCode.class);
+    private static Localizer _loc = Localizer.forPackage(SourceCode.class);
 
-	/**
-	 * List of Java Keywords and primitive types. Populated statically.
-	 */
+    /**
+     * List of Java Keywords and primitive types. Populated statically.
+     */
     private static final ArrayList<String> reserved = new ArrayList<>();
     private static final ArrayList<String> knownTypes = new ArrayList<>();
 
-	private static int TABSIZE                = 4;
-	private static final String SPACE         = " ";
-	private static final String BLANK         = "";
-	private static final String SEMICOLON     = ";";
+    private static int TABSIZE                = 4;
+    private static final String SPACE         = " ";
+    private static final String BLANK         = "";
+    private static final String SEMICOLON     = ";";
     public static final String  COMMA         = ",";
     public static final String  DOT           = ".";
     public static final String  EQUAL         = "=";
     public static final String  QUOTE         = "\"";
 
-	private static final Delimiter BLOCK_DELIMITER  = new Delimiter("{}");
-	private static final Delimiter ARGS_DELIMITER   = new Delimiter("()");
+    private static final Delimiter BLOCK_DELIMITER  = new Delimiter("{}");
+    private static final Delimiter ARGS_DELIMITER   = new Delimiter("()");
     private static final Delimiter PARAMS_DELIMITER = new Delimiter("<>");
 
-	private List<Comment> comments;
-	private final Package pkg;
-	private final Class   cls;
+    private List<Comment> comments;
+    private final Package pkg;
+    private final Class   cls;
     private final Set<Import> imports = new TreeSet<>();
 
 
-	/**
-	 * Create source code for a top-level class with given fully-qualified
-	 * class name.
-	 */
-	public SourceCode(String c) {
-	    ClassName name = getOrCreateImport(c);
-	    this.cls = new Class(c);
+    /**
+     * Create source code for a top-level class with given fully-qualified
+     * class name.
+     */
+    public SourceCode(String c) {
+        ClassName name = getOrCreateImport(c);
+        this.cls = new Class(c);
         this.pkg = new Package(name.getPackageName());
-	}
+    }
 
-	/**
-	 * Gets the top level class represented by this receiver.
-	 */
-	public Class getTopLevelClass() {
-		return cls;
-	}
+    /**
+     * Gets the top level class represented by this receiver.
+     */
+    public Class getTopLevelClass() {
+        return cls;
+    }
 
-	public Package getPackage() {
-	    return pkg;
-	}
+    public Package getPackage() {
+        return pkg;
+    }
 
     /**
      * Sets the tab size. Tabs are always written as spaces.
@@ -109,90 +109,92 @@
      * @return true if the import is added. ClassName starting with <code>java.lang.</code>
      * is not added.
      */
-	private boolean addImport(ClassName name) {
-		String pkgName = name.getPackageName();
-		for (Import i : imports) {
-		    if (i.getClassName().hides(name)) {
-		        i.getClassName().useFullName();
-		        name.useFullName();
-		    }
-		}
-		return imports.add(new Import(name));
-	}
+    private boolean addImport(ClassName name) {
+        String pkgName = name.getPackageName();
+        for (Import i : imports) {
+            if (i.getClassName().hides(name)) {
+                i.getClassName().useFullName();
+                name.useFullName();
+            }
+        }
+        return imports.add(new Import(name));
+    }
 
-	/**
-	 * Get the class name instance for the given fully-qualified class name.
-	 * If the given class name is already imported, then use the existing instance.
-	 * Otherwise, creates a new instance and adds it to list of imports.
-	 *
-	 * @see #addImport(ClassName)
-	 * @see ClassName
-	 *
-	 * @param name fully-qualified name of a class
-	 * @return an existing class name instance or a new one.
-	 */
-	public ClassName getOrCreateImport(String name) {
-	    for (Import i : imports) {
-	        if (i.name.getFullName().equals(name))
-	            return i.name;
-	    }
-	    ClassName imp = new ClassName(name);
-	    addImport(imp);
-	    return imp;
-	}
+    /**
+     * Get the class name instance for the given fully-qualified class name.
+     * If the given class name is already imported, then use the existing instance.
+     * Otherwise, creates a new instance and adds it to list of imports.
+     *
+     * @see #addImport(ClassName)
+     * @see ClassName
+     *
+     * @param name fully-qualified name of a class
+     * @return an existing class name instance or a new one.
+     */
+    public ClassName getOrCreateImport(String name) {
+        for (Import i : imports) {
+            if (i.name.getFullName().equals(name))
+                return i.name;
+        }
+        ClassName imp = new ClassName(name);
+        addImport(imp);
+        return imp;
+    }
 
 
-	public SourceCode addComment(boolean inline, String... lines) {
-	    if (lines == null)
-	        return this;
-		if (comments == null)
-		    comments = new ArrayList<>();
-		Comment comment = new Comment();
-		comments.add(comment);
-		comment.makeInline(inline);
-		for (String line:lines) {
-		    // Handle long header comment lines...
-		    if (line.length() > 120-4) {
-		        String[] wrappedLines = wrap(line, 120-4);
-		        for (String w:wrappedLines) comment.append(w);
-		    } else {
-	            comment.append(line);
-		    }
-		}
-		return this;
-	}
+    public SourceCode addComment(boolean inline, String... lines) {
+        if (lines == null)
+            return this;
+        if (comments == null)
+            comments = new ArrayList<>();
+        Comment comment = new Comment();
+        comments.add(comment);
+        comment.makeInline(inline);
+        for (String line:lines) {
+            // Handle long header comment lines...
+            if (line.length() > 120-4) {
+                String[] wrappedLines = wrap(line, 120-4);
+                for (String w:wrappedLines) {
+                    comment.append(w);
+                }
+            } else {
+                comment.append(line);
+            }
+        }
+        return this;
+    }
 
-	/**
-	 * Prints the class to the given Writer.
-	 * @param out
-	 */
-	public void write(PrintWriter out) {
-		if (comments != null) {
-		    for (Comment comment : comments) {
-		        comment.write(out, 0);
-		        out.println();
-		    }
-		}
-		if (pkg != null) {
-		    pkg.write(out,0);
-		    out.println();
-		}
-		for (Import imp:imports) {
-			imp.write(out, 0);
-		}
-		out.println();
-		cls.write(out, 0);
-		out.flush();
-	}
+    /**
+     * Prints the class to the given Writer.
+     * @param out
+     */
+    public void write(PrintWriter out) {
+        if (comments != null) {
+            for (Comment comment : comments) {
+                comment.write(out, 0);
+                out.println();
+            }
+        }
+        if (pkg != null) {
+            pkg.write(out,0);
+            out.println();
+        }
+        for (Import imp:imports) {
+            imp.write(out, 0);
+        }
+        out.println();
+        cls.write(out, 0);
+        out.flush();
+    }
 
-	/**
-	 * Outputs <code>tab</code> number of spaces.
-	 */
-	static void tab(PrintWriter out, int tab) {
-		for (int i=0; i<tab*TABSIZE; i++) {
-			out.print(SPACE);
-		}
-	}
+    /**
+     * Outputs <code>tab</code> number of spaces.
+     */
+    static void tab(PrintWriter out, int tab) {
+        for (int i=0; i<tab*TABSIZE; i++) {
+            out.print(SPACE);
+        }
+    }
 
     /**
      * Wraps the given string into lines of max length width at word boundaries
@@ -201,12 +203,12 @@
         String[] words = longLine.split("\\ ");
         List<String> lines = new ArrayList<>();
         StringBuilder line = new StringBuilder();
-        for (int i = 0; i < words.length; i++) {
-            String w = words[i];
+        for (String w : words) {
             if (line.length() + w.length() < width) {
                 if (line.length() > 0) line.append(" ");
                 line.append(w);
-            } else {
+            }
+            else {
                 lines.add(line.toString());
                 line.setLength(0);
                 line.append(w);
@@ -220,51 +222,51 @@
         writeList(out, header, list, new Delimiter(), false);
     }
 
-	static void writeList(PrintWriter out, String header, List<?> list,
-			Delimiter bracket, boolean writeEmpty) {
-		if (list == null || list.isEmpty()) {
-		    if (writeEmpty)
-		        out.append(bracket.start)
-		           .append(bracket.end);
-			return;
-		}
-		out.append(header);
-		out.append(bracket.start);
-		for (int i=0; i<list.size(); i++) {
-			out.append(list.get(i).toString());
-			if (i!=list.size()-1) out.append(COMMA);
-		}
-		out.append(bracket.end);
-	}
+    static void writeList(PrintWriter out, String header, List<?> list,
+                          Delimiter bracket, boolean writeEmpty) {
+        if (list == null || list.isEmpty()) {
+            if (writeEmpty)
+                out.append(bracket.start)
+                        .append(bracket.end);
+            return;
+        }
+        out.append(header);
+        out.append(bracket.start);
+        for (int i=0; i<list.size(); i++) {
+            out.append(list.get(i).toString());
+            if (i!=list.size()-1) out.append(COMMA);
+        }
+        out.append(bracket.end);
+    }
 
-	static String capitalize(String s) {
-		return Character.toUpperCase(s.charAt(0))+s.substring(1);
-	}
+    static String capitalize(String s) {
+        return Character.toUpperCase(s.charAt(0))+s.substring(1);
+    }
 
-	static boolean isValidToken(String s) {
-		return s != null && s.length() > 0 &&
-		      !reserved.contains(s) && isJavaIdentifier(s);
-	}
+    static boolean isValidToken(String s) {
+        return s != null && s.length() > 0 &&
+                !reserved.contains(s) && isJavaIdentifier(s);
+    }
 
-	public static boolean isKnownType(String s) {
-		return knownTypes.contains(s);
-	}
+    public static boolean isKnownType(String s) {
+        return knownTypes.contains(s);
+    }
 
-	static boolean isEmpty(String s) {
-		return s == null || s.length()==0;
-	}
+    static boolean isEmpty(String s) {
+        return s == null || s.length()==0;
+    }
 
-	static LinkedList<String> tokenize(String s, String delim) {
-	    StringTokenizer tokenizer = new StringTokenizer(s, delim, false);
-		LinkedList<String> tokens = new LinkedList<>();
-		while (tokenizer.hasMoreTokens())
-			tokens.add(tokenizer.nextToken());
-		return tokens;
-	}
+    static LinkedList<String> tokenize(String s, String delim) {
+        StringTokenizer tokenizer = new StringTokenizer(s, delim, false);
+        LinkedList<String> tokens = new LinkedList<>();
+        while (tokenizer.hasMoreTokens())
+            tokens.add(tokenizer.nextToken());
+        return tokens;
+    }
 
-	public static boolean isJavaIdentifier(String s) {
+    public static boolean isJavaIdentifier(String s) {
         if (s == null || s.length() == 0 ||
-        	!Character.isJavaIdentifierStart(s.charAt(0))) {
+                !Character.isJavaIdentifierStart(s.charAt(0))) {
             return false;
         }
         for (int i=1; i<s.length(); i++) {
@@ -278,19 +280,19 @@
 
     public enum ACCESS {PUBLIC, PROTECTED, PRIVATE}
 
-	/**
-	 * Abstract element has a name, optional list of modifiers, annotations
-	 * and arguments.
-	 */
-	public abstract class Element<T> implements Comparable<Element<T>> {
-		protected String name;
-		protected ClassName type;
-		protected ACCESS access;
-		protected boolean isStatic;
-		protected boolean isFinal;
-		protected Comment comment;
-		protected List<ClassName> params = new ArrayList<>();
-		protected List<Annotation> annos = new ArrayList<>();
+    /**
+     * Abstract element has a name, optional list of modifiers, annotations
+     * and arguments.
+     */
+    public abstract class Element<T> implements Comparable<Element<T>> {
+        protected String name;
+        protected ClassName type;
+        protected ACCESS access;
+        protected boolean isStatic;
+        protected boolean isFinal;
+        protected Comment comment;
+        protected List<ClassName> params = new ArrayList<>();
+        protected List<Annotation> annos = new ArrayList<>();
 
         protected Element(String name, ClassName type) {
             this.name = name;
@@ -298,98 +300,102 @@
         }
 
         public ClassName getType() {
-			return type;
-		}
+            return type;
+        }
 
-		public Annotation addAnnotation(String a) {
-			Annotation an = new Annotation(a);
-			annos.add(an);
-			return an;
-		}
+        public Annotation addAnnotation(String a) {
+            Annotation an = new Annotation(a);
+            annos.add(an);
+            return an;
+        }
 
-		public Element<T> addParameter(String param) {
-		    params.add(getOrCreateImport(param));
-		    return this;
-		}
+        public Element<T> addParameter(String param) {
+            params.add(getOrCreateImport(param));
+            return this;
+        }
 
-		@Override
+        @Override
         public int compareTo(Element<T> other) {
-			return name.compareTo(other.name);
-		}
+            return name.compareTo(other.name);
+        }
 
-		public T addComment(boolean inline, String... lines) {
-			if (comment == null) comment = new Comment();
-			comment.makeInline(inline);
-			for (String line:lines) comment.append(line);
-			return (T)this;
-		}
+        public T addComment(boolean inline, String... lines) {
+            if (comment == null) {
+                comment = new Comment();
+            }
+            comment.makeInline(inline);
+            for (String line:lines) {
+                comment.append(line);
+            }
+            return (T)this;
+        }
 
-		public T makePublic() {
-			access = ACCESS.PUBLIC;
-			return (T)this;
-		}
+        public T makePublic() {
+            access = ACCESS.PUBLIC;
+            return (T)this;
+        }
 
-		public T makeProtected() {
-			access = ACCESS.PROTECTED;
-			return (T)this;
-		}
+        public T makeProtected() {
+            access = ACCESS.PROTECTED;
+            return (T)this;
+        }
 
-		public T makePrivate() {
-			access = ACCESS.PRIVATE;
-			return (T)this;
-		}
+        public T makePrivate() {
+            access = ACCESS.PRIVATE;
+            return (T)this;
+        }
 
-		public T makeStatic() {
-			isStatic = true;
-			return (T)this;
-		}
+        public T makeStatic() {
+            isStatic = true;
+            return (T)this;
+        }
 
-		public T makeFinal() {
-			isFinal = true;
-			return (T)this;
-		}
+        public T makeFinal() {
+            isFinal = true;
+            return (T)this;
+        }
 
-		public void write(PrintWriter out, int tab) {
-			if (comment != null) comment.write(out, tab);
-			for (Annotation a:annos)
-				a.write(out, tab);
-			tab(out, tab);
-			if (access != null)
-			    out.append(access.toString().toLowerCase(Locale.ENGLISH) + SPACE);
-			if (isStatic)
-			    out.append("static" + SPACE);
-			if (isFinal)
-			    out.append("final" + SPACE);
-		}
-	}
+        public void write(PrintWriter out, int tab) {
+            if (comment != null) comment.write(out, tab);
+            for (Annotation a:annos)
+                a.write(out, tab);
+            tab(out, tab);
+            if (access != null)
+                out.append(access.toString().toLowerCase(Locale.ENGLISH) + SPACE);
+            if (isStatic)
+                out.append("static" + SPACE);
+            if (isFinal)
+                out.append("final" + SPACE);
+        }
+    }
 
-	/**
-	 * Represent <code>class</code> declaration.
-	 *
-	 */
-	public class Class extends Element<Class> {
+    /**
+     * Represent <code>class</code> declaration.
+     *
+     */
+    public class Class extends Element<Class> {
         private boolean isAbstract;
-		private boolean isFinal;
-		private ClassName superCls;
-		private List<ClassName> interfaces = new ArrayList<>();
-	    private Set<Field> fields   = new TreeSet<>();
-	    private Set<Method> methods = new TreeSet<>();
-	    private Set<Constructor> constructors = new TreeSet<>();
+        private boolean isFinal;
+        private ClassName superCls;
+        private List<ClassName> interfaces = new ArrayList<>();
+        private Set<Field> fields   = new TreeSet<>();
+        private Set<Method> methods = new TreeSet<>();
+        private Set<Constructor> constructors = new TreeSet<>();
 
-		public Class(String name) {
-			super(name, getOrCreateImport(name));
-			makePublic();
-		}
+        public Class(String name) {
+            super(name, getOrCreateImport(name));
+            makePublic();
+        }
 
-		public Class setSuper(String s) {
-			superCls = getOrCreateImport(s);
-			return this;
-		}
+        public Class setSuper(String s) {
+            superCls = getOrCreateImport(s);
+            return this;
+        }
 
-		public Class addInterface(String s) {
-			interfaces.add(getOrCreateImport(s));
-			return this;
-		}
+        public Class addInterface(String s) {
+            interfaces.add(getOrCreateImport(s));
+            return this;
+        }
 
         public Class makeAbstract() {
             if (isFinal)
@@ -407,14 +413,14 @@
             return this;
         }
 
-	    /**
-	     * Adds getters and setters to every non-public field.
-	     */
-	    public Class markAsBean() {
-	        for (Field f:fields)
-	            f.markAsBean();
-	        return this;
-	    }
+        /**
+         * Adds getters and setters to every non-public field.
+         */
+        public Class markAsBean() {
+            for (Field f:fields)
+                f.markAsBean();
+            return this;
+        }
 
         public String getName() {
             return getType().getSimpleName();
@@ -429,109 +435,109 @@
         }
 
         public Field addField(String f, ClassName type) {
-	        if (!isValidToken(f)) {
-	            throw new IllegalArgumentException(
-	                _loc.get("src-invalid-field",f).toString());
-	        }
-	        Field field = new Field(this, f, type);
+            if (!isValidToken(f)) {
+                throw new IllegalArgumentException(
+                        _loc.get("src-invalid-field",f).toString());
+            }
+            Field field = new Field(this, f, type);
 
-	        if (!fields.add(field))
-	            throw new IllegalArgumentException(_loc.get(
-	                "src-duplicate-field", field, this).toString());
-	        return field;
-	    }
+            if (!fields.add(field))
+                throw new IllegalArgumentException(_loc.get(
+                        "src-duplicate-field", field, this).toString());
+            return field;
+        }
 
         public Method addMethod(String m, String retType) {
             return addMethod(m, getOrCreateImport(retType));
         }
 
-	    protected Method addMethod(String m, ClassName retType) {
-	        if (isEmpty(m) || !isValidToken(m)) {
-	            throw new IllegalArgumentException(_loc.get(
-	                "src-invalid-method",m).toString());
-	        }
-	        Method method = new Method(m, retType);
-	        if (!methods.add(method))
-	            throw new IllegalArgumentException(_loc.get(
-	                "src-duplicate-method", method, this).toString());
-	        return method;
-	    }
+        protected Method addMethod(String m, ClassName retType) {
+            if (isEmpty(m) || !isValidToken(m)) {
+                throw new IllegalArgumentException(_loc.get(
+                        "src-invalid-method",m).toString());
+            }
+            Method method = new Method(m, retType);
+            if (!methods.add(method))
+                throw new IllegalArgumentException(_loc.get(
+                        "src-duplicate-method", method, this).toString());
+            return method;
+        }
 
-	    public Constructor addConstructor(){
-	        Constructor c = new Constructor(type.simpleName);
-	           if (!constructors.add(c))
-	                throw new IllegalArgumentException(_loc.get(
-	                    "src-duplicate-constructor", c, this).toString());
-	            return c;
-	    }
-	    @Override
+        public Constructor addConstructor(){
+            Constructor c = new Constructor(type.simpleName);
+            if (!constructors.add(c))
+                throw new IllegalArgumentException(_loc.get(
+                        "src-duplicate-constructor", c, this).toString());
+            return c;
+        }
+        @Override
         public void write(PrintWriter out, int tab) {
-			super.write(out, tab);
-			if (isAbstract)
-			    out.append("abstract ");
-			if(isFinal)
-			    out.append("final ");
-			out.print("class ");
-			out.print(type.simpleName);
-			writeList(out, BLANK, params, PARAMS_DELIMITER, false);
-			if (superCls != null)
-				out.print(" extends " + superCls + SPACE);
-			writeList(out, "implements ", interfaces);
-			out.println(SPACE + BLOCK_DELIMITER.start);
-	        for (Field field:fields)
-	            field.write(out, 1);
-	        for(Constructor ctor : constructors){
-	            ctor.write(out, 1);
-	        }
-	        for (Method method:methods)
-	            method.write(out, 1);
-	        out.println(BLOCK_DELIMITER.end);
-		}
+            super.write(out, tab);
+            if (isAbstract)
+                out.append("abstract ");
+            if(isFinal)
+                out.append("final ");
+            out.print("class ");
+            out.print(type.simpleName);
+            writeList(out, BLANK, params, PARAMS_DELIMITER, false);
+            if (superCls != null)
+                out.print(" extends " + superCls + SPACE);
+            writeList(out, "implements ", interfaces);
+            out.println(SPACE + BLOCK_DELIMITER.start);
+            for (Field field:fields)
+                field.write(out, 1);
+            for(Constructor ctor : constructors){
+                ctor.write(out, 1);
+            }
+            for (Method method:methods)
+                method.write(out, 1);
+            out.println(BLOCK_DELIMITER.end);
+        }
 
-	    @Override
+        @Override
         public String toString() {
-	    	return getType().fullName;
-	    }
-	}
+            return getType().fullName;
+        }
+    }
 
-	/**
-	 * Represents field declaration.
-	 *
-	 */
-	public class Field extends Element<Field> {
-	    private final Class owner;
-		protected boolean isTransient;
-		protected boolean isVolatile;
+    /**
+     * Represents field declaration.
+     *
+     */
+    public class Field extends Element<Field> {
+        private final Class owner;
+        protected boolean isTransient;
+        protected boolean isVolatile;
 
-		Field(Class owner, String name, ClassName type) {
-			super(name, type);
-			this.owner = owner;
-			makePrivate();
-		}
+        Field(Class owner, String name, ClassName type) {
+            super(name, type);
+            this.owner = owner;
+            makePrivate();
+        }
 
-		/**
-		 * Adds bean-style getter setter method.
-		 */
-		public Field markAsBean() {
-			addGetter();
-			addSetter();
-			return this;
-		}
+        /**
+         * Adds bean-style getter setter method.
+         */
+        public Field markAsBean() {
+            addGetter();
+            addSetter();
+            return this;
+        }
 
-		public Field addGetter() {
-			owner.addMethod("get"+ capitalize(name), type)
-			     .makePublic()
-			     .addCodeLine("return "+ name);
-			return this;
-		}
+        public Field addGetter() {
+            owner.addMethod("get"+ capitalize(name), type)
+                    .makePublic()
+                    .addCodeLine("return "+ name);
+            return this;
+        }
 
-		public Field addSetter() {
-			owner.addMethod("set"+ capitalize(name), "void")
-			     .makePublic()
-                 .addArgument(new Argument<>(type, name,SPACE))
-			     .addCodeLine("this."+ name + " = " + name);
-			return this;
-		}
+        public Field addSetter() {
+            owner.addMethod("set"+ capitalize(name), "void")
+                    .makePublic()
+                    .addArgument(new Argument<>(type, name,SPACE))
+                    .addCodeLine("this."+ name + " = " + name);
+            return this;
+        }
 
         public void makeVolatile() {
             isVolatile = true;
@@ -541,42 +547,42 @@
             isTransient = true;
         }
 
-		@Override
+        @Override
         public String toString() {
-			return type + SPACE + name;
-		}
+            return type + SPACE + name;
+        }
 
-		@Override
+        @Override
         public void write(PrintWriter out, int tab) {
-			super.write(out, tab);
-			if (isVolatile) out.print("volatile ");
-			if (isTransient) out.print("transient ");
-			out.print(type);
-			writeList(out, BLANK, params, PARAMS_DELIMITER, false);
-			out.println(SPACE + name + SEMICOLON);
-		}
+            super.write(out, tab);
+            if (isVolatile) out.print("volatile ");
+            if (isTransient) out.print("transient ");
+            out.print(type);
+            writeList(out, BLANK, params, PARAMS_DELIMITER, false);
+            out.println(SPACE + name + SEMICOLON);
+        }
 
-		@Override
+        @Override
         public boolean equals(Object other) {
-			if (other instanceof Field) {
-				Field that = (Field)other;
-				return name.equals(that.name);
-			}
-			return false;
-		}
-	}
+            if (other instanceof Field) {
+                Field that = (Field)other;
+                return name.equals(that.name);
+            }
+            return false;
+        }
+    }
 
-	/**
-	 * Represents Method declaration.
-	 *
-	 *
-	 */
-	public class Method extends Element<Method> {
-		private boolean isAbstract;
-		private List<Argument<ClassName,String>> args = new ArrayList<>();
-		private List<String> codeLines = new ArrayList<>();
-		int tabCount = 0;
-		String tab = "";
+    /**
+     * Represents Method declaration.
+     *
+     *
+     */
+    public class Method extends Element<Method> {
+        private boolean isAbstract;
+        private List<Argument<ClassName,String>> args = new ArrayList<>();
+        private List<String> codeLines = new ArrayList<>();
+        int tabCount = 0;
+        String tab = "";
 
         Method(String n, String t) {
             this(n, getOrCreateImport(t));
@@ -587,16 +593,16 @@
             makePublic();
         }
 
-		public Method addArgument(Argument<ClassName,String> arg) {
-			args.add(arg);
-			return this;
-		}
+        public Method addArgument(Argument<ClassName,String> arg) {
+            args.add(arg);
+            return this;
+        }
 
-		public Method addArgument(String className, String argName){
-		    ClassName cn = getOrCreateImport(className);
-		    args.add(new Argument<>(cn, argName," "));
-		    return this;
-		}
+        public Method addArgument(String className, String argName){
+            ClassName cn = getOrCreateImport(className);
+            args.add(new Argument<>(cn, argName," "));
+            return this;
+        }
 
         public void setTab(boolean inc) {
             if (inc)
@@ -617,7 +623,7 @@
 
             }
             if (!line.endsWith(SEMICOLON)
-                && !(line.isEmpty() || line.endsWith("{") || line.endsWith("}") || line.startsWith("if")))
+                    && !(line.isEmpty() || line.endsWith("{") || line.endsWith("}") || line.startsWith("if")))
                 line = line + SEMICOLON;
             codeLines.add(tab + line);
             return this;
@@ -632,60 +638,60 @@
             return addCodeLine(line);
         }
 
-		public Method makeAbstract() {
-			if (codeLines.isEmpty())
-				isAbstract = true;
-			else
+        public Method makeAbstract() {
+            if (codeLines.isEmpty())
+                isAbstract = true;
+            else
                 throw new IllegalStateException("method " + name +
-				    " can not be abstract. It has a body");
-			return this;
-		}
+                        " can not be abstract. It has a body");
+            return this;
+        }
 
 
-		@Override
+        @Override
         public String toString() {
-			return type + SPACE + name;
-		}
+            return type + SPACE + name;
+        }
 
-		@Override
+        @Override
         public void write(PrintWriter out, int tab) {
-			out.println(BLANK);
-			super.write(out, tab);
-			if (isAbstract) out.append("abstract ");
-			out.print(type + SPACE + name);
-			writeList(out, BLANK, args, ARGS_DELIMITER, true);
-			if (isAbstract) {
-				out.println(SEMICOLON);
-				return;
-			}
-			out.println(SPACE + BLOCK_DELIMITER.start);
-			for (String line : codeLines) {
-				tab(out, tab+1);
-				out.println(line);
-			}
-			tab(out, tab);
-			out.println(BLOCK_DELIMITER.end);
-		}
+            out.println(BLANK);
+            super.write(out, tab);
+            if (isAbstract) out.append("abstract ");
+            out.print(type + SPACE + name);
+            writeList(out, BLANK, args, ARGS_DELIMITER, true);
+            if (isAbstract) {
+                out.println(SEMICOLON);
+                return;
+            }
+            out.println(SPACE + BLOCK_DELIMITER.start);
+            for (String line : codeLines) {
+                tab(out, tab+1);
+                out.println(line);
+            }
+            tab(out, tab);
+            out.println(BLOCK_DELIMITER.end);
+        }
 
-		@Override
+        @Override
         public boolean equals(Object other) {
-			if (other instanceof Method) {
-				Method that = (Method)other;
+            if (other instanceof Method) {
+                Method that = (Method)other;
                 return name.equals(that.name) && args.equals(that.args);
-			}
-			return false;
-		}
-	}
+            }
+            return false;
+        }
+    }
 
-	public class Constructor extends Element<Constructor> {
-	    private List<Argument<ClassName,String>> args = new ArrayList<>();
+    public class Constructor extends Element<Constructor> {
+        private List<Argument<ClassName,String>> args = new ArrayList<>();
         private List<String> codeLines = new ArrayList<>();
         int tabCount = 0;
         String tab = "";
 
-	    public Constructor(String name) {
-	        super(name, null);
-	        makePublic();
+        public Constructor(String name) {
+            super(name, null);
+            makePublic();
         }
 
         public Constructor addArgument(Argument<ClassName,String> arg) {
@@ -705,7 +711,7 @@
 
             }
             if (!line.endsWith(SEMICOLON)
-                && !(line.isEmpty() || line.endsWith("{") || line.endsWith("}") || line.startsWith("if")))
+                    && !(line.isEmpty() || line.endsWith("{") || line.endsWith("}") || line.startsWith("if")))
                 line = line + SEMICOLON;
             codeLines.add(tab + line);
             return this;
@@ -745,82 +751,82 @@
             out.println(BLOCK_DELIMITER.end);
         }
 
-	}
-	/**
-	 * Represents <code>import</code> statement.
-	 *
-	 */
-	class Import implements Comparable<Import> {
-		private final ClassName name;
+    }
+    /**
+     * Represents <code>import</code> statement.
+     *
+     */
+    class Import implements Comparable<Import> {
+        private final ClassName name;
 
-		public Import(ClassName name) {
-			this.name = name;
-		}
+        public Import(ClassName name) {
+            this.name = name;
+        }
 
-		@Override
+        @Override
         public int compareTo(Import other) {
-			return name.compareTo(other.name);
-		}
+            return name.compareTo(other.name);
+        }
 
-		public void write(PrintWriter out, int tab) {
-		    if (name.usingFullName())
-		        return;
-		    String pkg = name.getPackageName();
-		    if (pkg.length() == 0 || pkg.equals(getPackage().name))
-		        return;
-		    out.println("import "+ name.fullName + SEMICOLON);
-		}
+        public void write(PrintWriter out, int tab) {
+            if (name.usingFullName())
+                return;
+            String pkg = name.getPackageName();
+            if (pkg.length() == 0 || pkg.equals(getPackage().name))
+                return;
+            out.println("import "+ name.fullName + SEMICOLON);
+        }
 
-		@Override
+        @Override
         public boolean equals(Object other) {
-			if (other instanceof Import) {
-				Import that = (Import)other;
-				return name.equals(that.name);
-			}
-			return false;
-		}
+            if (other instanceof Import) {
+                Import that = (Import)other;
+                return name.equals(that.name);
+            }
+            return false;
+        }
 
-		ClassName getClassName() {
-		    return name;
-		}
-	}
+        ClassName getClassName() {
+            return name;
+        }
+    }
 
-	/**
-	 * Represents method argument.
-	 *
-	 */
-	public class Argument<K,V> {
-		final private K key;
-		final private V value;
-		final private String connector;
+    /**
+     * Represents method argument.
+     *
+     */
+    public class Argument<K,V> {
+        final private K key;
+        final private V value;
+        final private String connector;
 
-		Argument(K key, V value, String connector) {
-			this.key = key;
-			this.value = value;
-			this.connector = connector;
-		}
+        Argument(K key, V value, String connector) {
+            this.key = key;
+            this.value = value;
+            this.connector = connector;
+        }
 
         @Override
         public String toString() {
-			return key + connector + value;
-		}
-	}
+            return key + connector + value;
+        }
+    }
 
-	/**
-	 * Represents annotation.
-	 *
-	 */
-	public class Annotation {
-		private String name;
+    /**
+     * Represents annotation.
+     *
+     */
+    public class Annotation {
+        private String name;
         private List<Argument<?,?>> args = new ArrayList<>();
 
-		Annotation(String n) {
-			name = n;
-		}
+        Annotation(String n) {
+            name = n;
+        }
 
         public Annotation addArgument(String key, String v, boolean quote) {
             return addArgument(new Argument<>(key,
-                quote ? quote(v) : v, EQUAL));
+                    quote ? quote(v) : v, EQUAL));
         }
 
         public Annotation addArgument(String key, String v) {
@@ -842,259 +848,259 @@
             return this;
         }
 
-		public void write(PrintWriter out, int tab) {
-			tab(out, tab);
-			out.println("@"+name);
-			writeList(out, BLANK, args, ARGS_DELIMITER, false);
-			out.println();
-		}
+        public void write(PrintWriter out, int tab) {
+            tab(out, tab);
+            out.println("@"+name);
+            writeList(out, BLANK, args, ARGS_DELIMITER, false);
+            out.println();
+        }
 
-		String quote(String s) {
-		    return QUOTE + s + QUOTE;
-		}
-	}
+        String quote(String s) {
+            return QUOTE + s + QUOTE;
+        }
+    }
 
-	static class Package {
-		private String name;
+    static class Package {
+        private String name;
 
-		Package(String p) {
-			name = p;
-		}
+        Package(String p) {
+            name = p;
+        }
 
         public void write(PrintWriter out, int tab) {
             if (name != null && !name.isEmpty())
                 out.println("package " + name + SEMICOLON);
         }
-	}
+    }
 
-	class Comment {
-		List<String> lines = new ArrayList<>();
-		private boolean inline = false;
+    class Comment {
+        List<String> lines = new ArrayList<>();
+        private boolean inline = false;
 
-		public void append(String line) {
-			lines.add(line);
-		}
+        public void append(String line) {
+            lines.add(line);
+        }
 
-		boolean isEmpty() {
-			return lines.isEmpty();
-		}
+        boolean isEmpty() {
+            return lines.isEmpty();
+        }
 
-		void makeInline(boolean flag) {
-			inline = flag;
-		}
-		public void write(PrintWriter out, int tab) {
-			if (inline) {
-				for (String l:lines) {
-					tab(out, tab);
-					out.println("// " + l);
-				}
-			} else {
-				int i = 0;
-				for (String l:lines) {
-					tab(out, tab);
-					if (i == 0) {
-						out.println("/** ");
-						tab(out, tab);
-					}
+        void makeInline(boolean flag) {
+            inline = flag;
+        }
+        public void write(PrintWriter out, int tab) {
+            if (inline) {
+                for (String l:lines) {
+                    tab(out, tab);
+                    out.println("// " + l);
+                }
+            } else {
+                int i = 0;
+                for (String l:lines) {
+                    tab(out, tab);
+                    if (i == 0) {
+                        out.println("/** ");
+                        tab(out, tab);
+                    }
                     out.println(" *  " + l);
-					i++;
-				}
-				tab(out, tab);
-				out.println("**/");
-			}
-		}
-	}
+                    i++;
+                }
+                tab(out, tab);
+                out.println("**/");
+            }
+        }
+    }
 
-	/**
-	 * Represents fully-qualified name of a Java type.
-	 *
-	 * NOTE: Do not construct directly unless necessary.
-	 * @see SourceCode#getOrCreateImport(String)
-	 */
-	private class ClassName implements Comparable<ClassName> {
+    /**
+     * Represents fully-qualified name of a Java type.
+     *
+     * NOTE: Do not construct directly unless necessary.
+     * @see SourceCode#getOrCreateImport(String)
+     */
+    private class ClassName implements Comparable<ClassName> {
         public final String fullName;
         public final String simpleName;
         public final String pkgName;
         private String  arrayMarker = BLANK;
         private boolean useFullName = false;
 
-	    ClassName(String name) {
-	    	while (isArray(name)) {
-	    		arrayMarker = arrayMarker + "[]";
-	    		name = getComponentName(name);
-	    	}
+        ClassName(String name) {
+            while (isArray(name)) {
+                arrayMarker = arrayMarker + "[]";
+                name = getComponentName(name);
+            }
             int start = name.indexOf("<");
             int stop = name.lastIndexOf(">");
             if (start != -1 && stop != -1) {
                 name = name.substring(0, start) + name.substring(stop + 1);
             }
-	        this.fullName = name;
-	        int dot = fullName.lastIndexOf(DOT);
-	        simpleName = (dot == -1) ? fullName : fullName.substring(dot+1);
-	        pkgName = (dot == -1) ? BLANK : fullName.substring(0,dot);
+            this.fullName = name;
+            int dot = fullName.lastIndexOf(DOT);
+            simpleName = (dot == -1) ? fullName : fullName.substring(dot+1);
+            pkgName = (dot == -1) ? BLANK : fullName.substring(0,dot);
             if (!isValidTypeName(name)) {
                 throw new IllegalArgumentException(_loc.get("src-invalid-type",
-                    name).toString());
+                        name).toString());
             }
-	    }
+        }
 
-	    /**
-	     * Gets fully qualified name of this receiver.
-	     */
-	    public String getFullName() {
-	        return fullName + arrayMarker;
-	    }
+        /**
+         * Gets fully qualified name of this receiver.
+         */
+        public String getFullName() {
+            return fullName + arrayMarker;
+        }
 
         /**
          * Gets simple name of this receiver.
          */
-	    public String getSimpleName() {
-	        return simpleName + arrayMarker;
-	    }
+        public String getSimpleName() {
+            return simpleName + arrayMarker;
+        }
 
-	    /**
-	     * Gets the package name of this receiver. Default package name is
-	     * represented as empty string.
-	     */
-	    public String getPackageName() {
-	        return pkgName;
-	    }
+        /**
+         * Gets the package name of this receiver. Default package name is
+         * represented as empty string.
+         */
+        public String getPackageName() {
+            return pkgName;
+        }
 
-	    /**
-	     * Gets the full or simple name of this receiver based on useFullName flag.
-	     */
-	    @Override
+        /**
+         * Gets the full or simple name of this receiver based on useFullName flag.
+         */
+        @Override
         public String toString() {
-	        return (useFullName ? fullName : simpleName) + arrayMarker;
-	    }
+            return (useFullName ? fullName : simpleName) + arrayMarker;
+        }
 
-	    /**
-	     * Compares by fully-qualified name.
-	     */
-	    @Override
+        /**
+         * Compares by fully-qualified name.
+         */
+        @Override
         public int compareTo(ClassName other) {
-	        return getFullName().compareTo(other.getFullName());
-	    }
+            return getFullName().compareTo(other.getFullName());
+        }
 
-	    public boolean isValidTypeName(String s) {
-	        return isValidPackageName(pkgName)
-	            && (isKnownType(s) || isValidToken(simpleName));
-	    }
+        public boolean isValidTypeName(String s) {
+            return isValidPackageName(pkgName)
+                    && (isKnownType(s) || isValidToken(simpleName));
+        }
 
-	    boolean isValidPackageName(String s) {
-	        if (isEmpty(s)) return true;
-	        LinkedList<String> tokens = tokenize(s, DOT);
-	        for (String token : tokens) {
-	            if (!isValidToken(token))
-	                return false;
-	        }
-	        return !s.endsWith(DOT);
-	    }
+        boolean isValidPackageName(String s) {
+            if (isEmpty(s)) return true;
+            LinkedList<String> tokens = tokenize(s, DOT);
+            for (String token : tokens) {
+                if (!isValidToken(token))
+                    return false;
+            }
+            return !s.endsWith(DOT);
+        }
 
-	    boolean isArray(String name) {
-	    	return name.endsWith("[]");
-	    }
+        boolean isArray(String name) {
+            return name.endsWith("[]");
+        }
 
-	    String getComponentName(String name) {
-	    	return (!isArray(name)) ? name :
-	    		name.substring(0, name.length()-"[]".length());
-	    }
+        String getComponentName(String name) {
+            return (!isArray(name)) ? name :
+                    name.substring(0, name.length()-"[]".length());
+        }
 
-	    boolean hides(ClassName other) {
-	        return this.getSimpleName().equals(other.getSimpleName())
-	            && !this.fullName.equals(other.fullName);
-	    }
+        boolean hides(ClassName other) {
+            return this.getSimpleName().equals(other.getSimpleName())
+                    && !this.fullName.equals(other.fullName);
+        }
 
-	    void useFullName() {
-	        useFullName = true;
-	    }
+        void useFullName() {
+            useFullName = true;
+        }
 
-	    boolean usingFullName() {
-	        return useFullName;
-	    }
+        boolean usingFullName() {
+            return useFullName;
+        }
 
-	}
+    }
 
-	static class Delimiter {
-	    final char start;
-	    final char end;
+    static class Delimiter {
+        final char start;
+        final char end;
 
         public Delimiter() {
             this((char)' ', (char)' ');
         }
 
-	    public Delimiter(String pair) {
-	        this(pair.charAt(0), pair.charAt(1));
-	    }
+        public Delimiter(String pair) {
+            this(pair.charAt(0), pair.charAt(1));
+        }
 
         public Delimiter(char start, char end) {
             super();
             this.start = start;
             this.end = end;
         }
-	}
+    }
 
-	static {
-		reserved.add("abstract");
-		reserved.add("continue");
-		reserved.add("for");
-		reserved.add("new");
-		reserved.add("switch");
-		reserved.add("assert");
-		reserved.add("default");
-		reserved.add("goto");
-		reserved.add("package");
-		reserved.add("synchronized");
-		reserved.add("boolean");
-		reserved.add("do");
-		reserved.add("if");
-		reserved.add("private");
-		reserved.add("this");
-		reserved.add("break");
-		reserved.add("double");
-		reserved.add("implements");
-		reserved.add("protected");
-		reserved.add("throw");
-		reserved.add("byte");
-		reserved.add("else");
-		reserved.add("import");
-		reserved.add("public");
-		reserved.add("throws");
-		reserved.add("case");
-		reserved.add("enum");
-		reserved.add("instanceof");
-		reserved.add("return");
-		reserved.add("transient");
-		reserved.add("catch");
-		reserved.add("extends");
-		reserved.add("int");
-		reserved.add("short");
-		reserved.add("try");
-		reserved.add("char");
-		reserved.add("final");
-		reserved.add("interface");
-		reserved.add("static");
-		reserved.add("void");
-		reserved.add("class");
-		reserved.add("finally");
-		reserved.add("long");
-		reserved.add("strictfp");
-		reserved.add("volatile");
-		reserved.add("const");
-		reserved.add("float");
-		reserved.add("native");
-		reserved.add("super");
-		reserved.add("while");
+    static {
+        reserved.add("abstract");
+        reserved.add("continue");
+        reserved.add("for");
+        reserved.add("new");
+        reserved.add("switch");
+        reserved.add("assert");
+        reserved.add("default");
+        reserved.add("goto");
+        reserved.add("package");
+        reserved.add("synchronized");
+        reserved.add("boolean");
+        reserved.add("do");
+        reserved.add("if");
+        reserved.add("private");
+        reserved.add("this");
+        reserved.add("break");
+        reserved.add("double");
+        reserved.add("implements");
+        reserved.add("protected");
+        reserved.add("throw");
+        reserved.add("byte");
+        reserved.add("else");
+        reserved.add("import");
+        reserved.add("public");
+        reserved.add("throws");
+        reserved.add("case");
+        reserved.add("enum");
+        reserved.add("instanceof");
+        reserved.add("return");
+        reserved.add("transient");
+        reserved.add("catch");
+        reserved.add("extends");
+        reserved.add("int");
+        reserved.add("short");
+        reserved.add("try");
+        reserved.add("char");
+        reserved.add("final");
+        reserved.add("interface");
+        reserved.add("static");
+        reserved.add("void");
+        reserved.add("class");
+        reserved.add("finally");
+        reserved.add("long");
+        reserved.add("strictfp");
+        reserved.add("volatile");
+        reserved.add("const");
+        reserved.add("float");
+        reserved.add("native");
+        reserved.add("super");
+        reserved.add("while");
 
-		knownTypes.add("boolean");
-		knownTypes.add("byte");
-		knownTypes.add("char");
-		knownTypes.add("double");
-		knownTypes.add("float");
-		knownTypes.add("int");
-		knownTypes.add("long");
-		knownTypes.add("short");
-		knownTypes.add("void");
-		knownTypes.add("String");
-	}
+        knownTypes.add("boolean");
+        knownTypes.add("byte");
+        knownTypes.add("char");
+        knownTypes.add("double");
+        knownTypes.add("float");
+        knownTypes.add("int");
+        knownTypes.add("long");
+        knownTypes.add("short");
+        knownTypes.add("void");
+        knownTypes.add("String");
+    }
 }
diff --git a/openjpa-slice/src/main/java/org/apache/openjpa/slice/jdbc/DistributedJDBCStoreManager.java b/openjpa-slice/src/main/java/org/apache/openjpa/slice/jdbc/DistributedJDBCStoreManager.java
index b8c6bfb..a7a062f 100644
--- a/openjpa-slice/src/main/java/org/apache/openjpa/slice/jdbc/DistributedJDBCStoreManager.java
+++ b/openjpa-slice/src/main/java/org/apache/openjpa/slice/jdbc/DistributedJDBCStoreManager.java
@@ -271,19 +271,19 @@
         Collection<StateManagerSet> remaining =
             new ArrayList<>(subsets.values());
         ExecutorService threadPool = SliceThread.getPool();
-        for (int i = 0; i < _slices.size(); i++) {
-            SliceStoreManager slice = _slices.get(i);
+        for (SliceStoreManager slice : _slices) {
             StateManagerSet subset = subsets.get(slice.getName());
             if (subset.isEmpty())
                 continue;
             if (subset.containsReplicated()) {
                 Map<OpenJPAStateManager, Object> oldVersions = cacheVersion(
-                    subset.getReplicated());
-            	collectException(slice.flush(subset), exceptions);
+                        subset.getReplicated());
+                collectException(slice.flush(subset), exceptions);
                 remaining.remove(subset);
-            	rollbackVersion(subset.getReplicated(), oldVersions, remaining);
-            } else {
-            	futures.add(threadPool.submit(new Flusher(slice, subset)));
+                rollbackVersion(subset.getReplicated(), oldVersions, remaining);
+            }
+            else {
+                futures.add(threadPool.submit(new Flusher(slice, subset)));
             }
         }
         for (Future<Collection> future : futures) {
diff --git a/openjpa-slice/src/test/java/org/apache/openjpa/slice/PersistenceTestCase.java b/openjpa-slice/src/test/java/org/apache/openjpa/slice/PersistenceTestCase.java
index 33c0e8a..f4710a3 100644
--- a/openjpa-slice/src/test/java/org/apache/openjpa/slice/PersistenceTestCase.java
+++ b/openjpa-slice/src/test/java/org/apache/openjpa/slice/PersistenceTestCase.java
@@ -158,10 +158,8 @@
         if (emf == null || !emf.isOpen())
             return;
 
-        for (Iterator iter = ((AbstractBrokerFactory) JPAFacadeHelper
-            .toBrokerFactory(emf)).getOpenBrokers().iterator();
-            iter.hasNext(); ) {
-            Broker b = (Broker) iter.next();
+        for (Broker b : ((AbstractBrokerFactory) JPAFacadeHelper
+                .toBrokerFactory(emf)).getOpenBrokers()) {
             if (b != null && !b.isClosed()) {
                 EntityManager em = JPAFacadeHelper.toEntityManager(b);
                 if (em.getTransaction().isActive())
diff --git a/openjpa-tools/openjpa-maven-plugin/src/main/java/org/apache/openjpa/tools/maven/AbstractOpenJpaMappingToolMojo.java b/openjpa-tools/openjpa-maven-plugin/src/main/java/org/apache/openjpa/tools/maven/AbstractOpenJpaMappingToolMojo.java
index 80595fb..a4f944c 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/main/java/org/apache/openjpa/tools/maven/AbstractOpenJpaMappingToolMojo.java
+++ b/openjpa-tools/openjpa-maven-plugin/src/main/java/org/apache/openjpa/tools/maven/AbstractOpenJpaMappingToolMojo.java
@@ -142,15 +142,15 @@
             if (classes == null) {
                 getLog().info("Found no classes for " + classPath.getAbsolutePath());
             } else {
-                for (int i = 0; i < classes.length; i++) {
-                    Class<?> cls = classes[i];
-
+                for (Class<?> cls : classes) {
                     if (cls.getAnnotation(Entity.class) != null) {
                         getLog().debug("Found @Entity in class " + classPath);
-                    } else if (implementsPersistenceCapable(cls)) {
+                    }
+                    else if (implementsPersistenceCapable(cls)) {
                         getLog().debug("Found class " + classPath + " that implements interface "
                                 + PersistenceCapable.class.getName());
-                    } else {
+                    }
+                    else {
                         getLog().debug("Removing non-entity class " + classPath);
                         fileIt.remove();
                     }
@@ -167,8 +167,8 @@
     private boolean implementsPersistenceCapable(Class<?> cls) {
         boolean isPersistenceCapable = false;
         Class<?>[] interfaces = cls.getInterfaces();
-        for (int i = 0; i < interfaces.length; i++) {
-            if (interfaces[i].getName().equals(PersistenceCapable.class.getName())) {
+        for (Class<?> anInterface : interfaces) {
+            if (anInterface.getName().equals(PersistenceCapable.class.getName())) {
                 isPersistenceCapable = true;
                 break;
             }
diff --git a/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/ObjectData.java b/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/ObjectData.java
index 7bf9ada..a3a3e72 100644
--- a/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/ObjectData.java
+++ b/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/ObjectData.java
@@ -155,9 +155,9 @@
 
                 // populate the proxy collection with our stored data,
                 // converting it to the right type from its stored form
-                for (Iterator itr = c.iterator(); itr.hasNext();)
-                    c2.add(toNestedLoadable(sm, fmd.getElement(), itr.next(),
-                        fetch));
+                for (Object value : c)
+                    c2.add(toNestedLoadable(sm, fmd.getElement(), value,
+                            fetch));
                 return c2;
 
             case JavaTypes.ARRAY:
@@ -189,11 +189,11 @@
 
                 // populate the proxy map with our stored data, converting
                 // it to the right type from its stored form
-                for (Iterator itr = m.entrySet().iterator(); itr.hasNext();) {
-                    Map.Entry e = (Map.Entry) itr.next();
-                    m2.put(toNestedLoadable(sm, fmd.getKey(), e.getKey(),fetch),
-                        toNestedLoadable(sm, fmd.getElement(), e.getValue(),
-                            fetch));
+                for (Object o : m.entrySet()) {
+                    Map.Entry e = (Map.Entry) o;
+                    m2.put(toNestedLoadable(sm, fmd.getKey(), e.getKey(), fetch),
+                            toNestedLoadable(sm, fmd.getElement(), e.getValue(),
+                                    fetch));
                 }
                 return m2;
 
@@ -272,8 +272,9 @@
                 // create a collection to copy the elements into for storage,
                 // and populate it with converted element values
                 Collection c2 = new ArrayList();
-                for (Iterator itr = c.iterator(); itr.hasNext();)
-                    c2.add(toNestedStorable(fmd.getElement(), itr.next(), ctx));
+                for (Object value : c) {
+                    c2.add(toNestedStorable(fmd.getElement(), value, ctx));
+                }
                 return c2;
 
             case JavaTypes.ARRAY:
@@ -291,10 +292,10 @@
                 // create a map to copy the entries into for storage, and
                 // populate it with converted entry values
                 Map m2 = new HashMap();
-                for (Iterator itr = m.entrySet().iterator(); itr.hasNext();) {
-                    Map.Entry e = (Map.Entry) itr.next();
+                for (Object o : m.entrySet()) {
+                    Map.Entry e = (Map.Entry) o;
                     m2.put(toNestedStorable(fmd.getKey(), e.getKey(), ctx),
-                        toNestedStorable(fmd.getElement(), e.getValue(), ctx));
+                            toNestedStorable(fmd.getElement(), e.getValue(), ctx));
                 }
                 return m2;
 
diff --git a/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/XMLFileHandler.java b/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/XMLFileHandler.java
index 35c4032..9d830ac 100644
--- a/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/XMLFileHandler.java
+++ b/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/XMLFileHandler.java
@@ -36,7 +36,6 @@
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
 
@@ -172,8 +171,8 @@
         out.write("<extent>");
 
         // run through each object in the collection
-        for (Iterator itr = datas.iterator(); itr.hasNext();) {
-            ObjectData obj = (ObjectData) itr.next();
+        for (Object data : datas) {
+            ObjectData obj = (ObjectData) data;
             ClassMetaData meta = obj.getMetaData();
 
             // write out the "object" element start
@@ -205,9 +204,9 @@
 
                         // write out each of the elements
                         int elemType = fmds[i].getElement().getTypeCode();
-                        for (Iterator ci = c.iterator(); ci.hasNext();) {
+                        for (Object o : c) {
                             out.write("<element>");
-                            writeDataValue(out, elemType, ci.next());
+                            writeDataValue(out, elemType, o);
                             out.write("</element>");
                         }
                         break;
@@ -221,8 +220,8 @@
                         Collection entries = m.entrySet();
                         int keyType = fmds[i].getKey().getTypeCode();
                         int valueType = fmds[i].getElement().getTypeCode();
-                        for (Iterator ei = entries.iterator(); ei.hasNext();) {
-                            Map.Entry e = (Map.Entry) ei.next();
+                        for (Object entry : entries) {
+                            Map.Entry e = (Map.Entry) entry;
                             out.write("<key>");
                             writeDataValue(out, keyType, e.getKey());
                             out.write("</key>");
@@ -234,7 +233,7 @@
 
                     default:
                         writeDataValue(out, fmds[i].getTypeCode(),
-                            obj.getField(i));
+                                obj.getField(i));
                 }
                 out.write("</field>");
             }
diff --git a/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/XMLStore.java b/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/XMLStore.java
index 7cc330f..9cada69 100644
--- a/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/XMLStore.java
+++ b/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/XMLStore.java
@@ -21,7 +21,6 @@
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
@@ -79,8 +78,8 @@
         // load datas from file and cache them
         Collection datas = _conf.getFileHandler().load(meta);
         m = new HashMap(datas.size());
-        for (Iterator itr = datas.iterator(); itr.hasNext();) {
-            ObjectData data = (ObjectData) itr.next();
+        for (Object o : datas) {
+            ObjectData data = (ObjectData) o;
             m.put(data.getId(), data);
         }
         _metaOidMaps.put(meta, m);
@@ -125,8 +124,7 @@
         try {
             // commit updates
             if (updates != null) {
-                for (Iterator itr = updates.iterator(); itr.hasNext();) {
-                    ObjectData data = (ObjectData) itr.next();
+                for (ObjectData data : updates) {
                     ClassMetaData meta = getLeastDerived(data.getMetaData());
                     getMap(meta).put(data.getId(), data);
                     dirty.add(meta);
@@ -135,8 +133,7 @@
 
             // commit deletes
             if (deletes != null) {
-                for (Iterator itr = deletes.iterator(); itr.hasNext();) {
-                    ObjectData data = (ObjectData) itr.next();
+                for (ObjectData data : deletes) {
                     ClassMetaData meta = getLeastDerived(data.getMetaData());
                     getMap(meta).remove(data.getId());
                     dirty.add(meta);
@@ -145,8 +142,8 @@
 
             // write changes to dirty extents back to file
             XMLFileHandler fh = _conf.getFileHandler();
-            for (Iterator itr = dirty.iterator(); itr.hasNext();) {
-                ClassMetaData meta = (ClassMetaData) itr.next();
+            for (Object o : dirty) {
+                ClassMetaData meta = (ClassMetaData) o;
                 fh.store(meta, getMap(meta).values());
             }
         }
diff --git a/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/XMLStoreManager.java b/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/XMLStoreManager.java
index 1b72cac..97f08dd 100644
--- a/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/XMLStoreManager.java
+++ b/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/XMLStoreManager.java
@@ -21,7 +21,6 @@
 import java.util.ArrayList;
 import java.util.BitSet;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -214,16 +213,15 @@
         _deletes = new ArrayList<>(pDeleted.size());
 
         // convert additions
-        for (Iterator itr = pNew.iterator(); itr.hasNext();) {
+        for (OpenJPAStateManager sm : pNew) {
             // create new object data for instance
-            OpenJPAStateManager sm = (OpenJPAStateManager) itr.next();
             Object oid = sm.getObjectId();
             ObjectData data = _store.getData(sm.getMetaData(), oid);
             if (data != null)
                 throw new StoreException("Attempt to insert "
-                    + "new object " + sm.getManagedInstance()
-                    + "with the same oid as an existing instance: " + oid).
-                    setFatal(true);
+                        + "new object " + sm.getManagedInstance()
+                        + "with the same oid as an existing instance: " + oid).
+                        setFatal(true);
 
             data = new ObjectData(oid, sm.getMetaData());
             incrementVersion(sm);
@@ -232,16 +230,15 @@
         }
 
         // convert updates
-        for (Iterator itr = pDirty.iterator(); itr.hasNext();) {
-            OpenJPAStateManager sm = (OpenJPAStateManager) itr.next();
+        for (OpenJPAStateManager sm : pDirty) {
             ObjectData data = _store.getData(sm.getMetaData(),
-                sm.getObjectId());
+                    sm.getObjectId());
 
             // if data has been deleted or has the wrong version, record
             // opt lock violation
             if (data == null || !data.getVersion().equals(sm.getVersion())) {
                 exceps.add(new OptimisticException
-                    (sm.getManagedInstance()));
+                        (sm.getManagedInstance()));
                 continue;
             }
 
@@ -253,10 +250,9 @@
         }
 
         // convert deletes
-        for (Iterator itr = pDeleted.iterator(); itr.hasNext();) {
-            OpenJPAStateManager sm = (OpenJPAStateManager) itr.next();
+        for (OpenJPAStateManager sm : pDeleted) {
             ObjectData data = _store.getData(sm.getMetaData(),
-                sm.getObjectId());
+                    sm.getObjectId());
 
             // record delete
             if (data != null)
@@ -277,11 +273,11 @@
         // create a list of the corresponding persistent objects that
         // match the type and subclasses criteria
         List pcs = new ArrayList(datas.length);
-        for (int i = 0; i < datas.length; i++) {
+        for (ObjectData data : datas) {
             // does this instance belong in the extent?
-            Class c = datas[i].getMetaData().getDescribedType();
+            Class c = data.getMetaData().getDescribedType();
             if (c != candidate && (!subclasses
-                || !candidate.isAssignableFrom(c)))
+                    || !candidate.isAssignableFrom(c)))
                 continue;
 
             // look up the pc instance for the data, passing in the data
@@ -291,7 +287,7 @@
             // being passed through and save ourselves a trip to the store
             // if it is present; this is particularly important in systems
             // where a trip to the store can be expensive.
-            pcs.add(ctx.find(datas[i].getId(), fetch, null, datas[i], 0));
+            pcs.add(ctx.find(data.getId(), fetch, null, data, 0));
         }
         return new ListResultObjectProvider(pcs);
     }