List<FieldInfo> newFields,
boolean isOldSecKeyField,
List<FieldInfo> otherNewFields,
ComplexFormat newFormat,
Evolver evolver) {
Mutations mutations = evolver.getMutations();
boolean evolveFailure = false;
boolean localEvolveNeeded = false;
boolean readerNeeded = false;
List<FieldReader> fieldReaders = new ArrayList<FieldReader>();
FieldReader currentReader = null;
int newFieldsMatched = 0;
/*
* Add FieldReaders to the list in old field storage order, since that
* is the order in which field values must be read.
*/
fieldLoop:
for (int oldFieldIndex = 0;
oldFieldIndex < oldFields.size();
oldFieldIndex += 1) {
FieldInfo oldField = oldFields.get(oldFieldIndex);
String oldName = oldField.getName();
SecondaryKeyMetadata oldMeta = null;
if (isOldSecKeyField) {
oldMeta = getSecondaryKeyMetadataByFieldName
(clsMeta.getSecondaryKeys(), oldName);
assert oldMeta != null;
}
/* Get field mutations. */
Renamer renamer = mutations.getRenamer
(getClassName(), getVersion(), oldName);
Deleter deleter = mutations.getDeleter
(getClassName(), getVersion(), oldName);
Converter converter = mutations.getConverter
(getClassName(), getVersion(), oldName);
if (deleter != null && (converter != null || renamer != null)) {
evolver.addInvalidMutation
(this, newFormat, deleter,
"Field Deleter is not allowed along with a Renamer or " +