+
+ /**
+ * Determine whether this processing phase is implied to have completed by completion of some other phase.
+ * Algebraically this means that other is not null and is either this phase or its {@link #getPreviousPhase()} chain
+ * contains this phase.
+ *
+ * @param other Other phase
+ * @return True if this phase completes no later than specified phase.
+ */
+ public boolean isCompletedBy(final @Nullable ModelProcessingPhase other) {
+ return other != null && ordinal() <= other.ordinal();
+ }