1   
2   package dev.metaschema.core.metapath.item.node;
3   
4   import edu.umd.cs.findbugs.annotations.NonNull;
5   
6   /**
7    * A marker interface used to identify an {@link IAssemblyNodeItem} as the head
8    * of a cycle of item that loop back to the head.
9    * <p>
10   * This is needed to prevent infinite recursion when searching
11   * {@link IModuleNodeItem} graphs.
12   */
13  public interface ICycledAssemblyNodeItem extends IAssemblyNodeItem {
14    /**
15     * Get the assembly item at the head of the cycle.
16     *
17     * @return the assembly item at the head of the cycle
18     */
19    @NonNull
20    IAssemblyNodeItem getCycledNodeItem();
21  }