if (seen == PUTFIELD) {
OpcodeStack.Item obj = stack.getStackItem(1);
OpcodeStack.Item value = stack.getStackItem(0);
XField f = getXFieldOperand();
XClass x = getXClassOperand();
checkPUTFIELD: if (putFieldPC + 10 > getPC() && f != null && obj != null && f.equals(putFieldXField)
&& !f.isSynthetic() && obj.equals(putFieldObj) && x != null) {
LineNumberTable table = getCode().getLineNumberTable();
if (table != null) {
int first = table.getSourceLine(putFieldPC);
int second = table.getSourceLine(getPC());
if (first + 1 != second && first != second) {
break checkPUTFIELD;
}
} else if (putFieldPC + 3 != getPC()) {
break checkPUTFIELD;
}
int priority = NORMAL_PRIORITY;
if (value.equals(putFieldValue) && putFieldPC + 3 != getPC()) {
priority++;
}
boolean storeOfDefaultValue = putFieldValue.isNull() || putFieldValue.hasConstantValue(0);
if (storeOfDefaultValue) {
priority++;
}
if (f.isVolatile()) {
priority++;
}
XField intendedTarget = null;
double minimumDistance = 2;
int matches = 0;
for (XField f2 : x.getXFields()) {
if (!f.equals(f2) && !f2.isStatic() && !f2.isFinal() && !f2.isSynthetic()
&& f2.getSignature().equals(f.getSignature())) {
double distance = EditDistance.editDistanceRatio(f.getName(), f2.getName());
matches++;