boolean (DifferentiateContext context, JvmClass changedClass, Iterable<JvmField> removed, Utils future, Utils present) { if (Iterators.isEmpty(removed)) { return true; } debug("Processing removed fields:"); for (JvmField removedField : removed) { debug("Field: ", removedField.getName()); if (!context.getParams().isProcessConstantsIncrementally() && !removedField.isPrivate() && removedField.isInlinable() && removedField.getValue() != null) { debug("Field had value and was (non-private) final => a switch to non-incremental mode requested"); if (!affectOnNonIncrementalChange(context, changedClass.getReferenceID(), removedField, present)) { debug("End of Differentiate, returning false"); return false; } } Set<JvmNodeReferenceID> propagated = present.collectSubclassesWithoutField(changedClass.getReferenceID(), removedField.getName()); affectMemberUsages(context, changedClass.getReferenceID(), removedField, propagated); if (!removedField.isPrivate() && removedField.isStatic()) { debug("The field was static --- affecting static field import usages"); affectStaticMemberImportUsages(context, changedClass.getReferenceID(), removedField.getName(), propagated); } } debug("End of removed fields processing"); return true; }