case ARRAY_INDEX: final int elemIndex = fieldPath.get(pos).getLookupIndex(); return iterateSubset(elemIndex, elemIndex, fieldPath, null, pos + 1, handler); case VARIABLE: { FieldPathIteratorHandler.IndexValue val = handler.getVariables().get(fieldPath.get(pos).getVariableName()); return iterateSubset(idx, idx, fieldPath, null, pos + 1, handler); } else { return FieldPathIteratorHandler.ModificationStatus.NOT_MODIFIED; return iterateSubset(0, values.size() - 1, fieldPath, fieldPath.get(pos).getVariableName(), pos + 1, handler); return iterateSubset(0, values.size() - 1, fieldPath, null, pos, handler); } else { FieldPathIteratorHandler.ModificationStatus status = handler.modify(this); if (iterateSubset(0, values.size() - 1, fieldPath, null, pos, handler) != FieldPathIteratorHandler.ModificationStatus.NOT_MODIFIED) { status = FieldPathIteratorHandler.ModificationStatus.MODIFIED;