+
+ orig = prev.originalLink().original();
+ if (orig != null) {
+ LOG.trace("Linked {} to original {}", this, orig);
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Return the previous incarnation of this generator, or {@code null} if this is the original generator.
+ *
+ * @return Previous incarnation or {@code null}
+ */
+ final @Nullable AbstractExplicitGenerator<S, R> previous() {
+ final var local = verifyNotNull(prev, "Generator %s does not have linkage to previous instance resolved", this);
+ return local == this ? null : local;
+ }
+
+ /**
+ * Return the original incarnation of this generator, or self if this is the original generator.
+ *
+ * @return Original incarnation of this generator
+ */
+ @NonNull AbstractExplicitGenerator<S, R> getOriginal() {
+ return verifyNotNull(orig, "Generator %s does not have linkage to original instance resolved", this);
+ }
+
+ @Nullable AbstractExplicitGenerator<S, R> tryOriginal() {
+ return orig;