1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package gov.nist.secauto.metaschema.core.model;
7   
8   import edu.umd.cs.findbugs.annotations.NonNull;
9   
10  /**
11   * This marker interface indicates that this object is an instance.
12   */
13  public interface IInstance extends IModelElement {
14  
15    /**
16     * Retrieve the Metaschema module definition on which the instance was declared.
17     *
18     * @return the Metaschema module definition on which the instance was declared
19     */
20    @NonNull
21    IModelDefinition getContainingDefinition();
22  
23    /**
24     * Get the parent model definition that serves as the container of this
25     * instance.
26     *
27     * @return the container
28     */
29    @NonNull
30    IContainer getParentContainer();
31  
32    // @Override
33    // default IModule getContainingModule() {
34    // return getContainingDefinition().getContainingModule();
35    // }
36  
37    /**
38     * Generates a "coordinate" string for the provided information element
39     * instance.
40     *
41     * A coordinate consists of the element's:
42     * <ul>
43     * <li>containing Metaschema module's short name</li>
44     * <li>model type</li>
45     * <li>name</li>
46     * <li>hash code</li>
47     * <li>the hash code of the definition</li>
48     * </ul>
49     *
50     * @return the coordinate
51     */
52    @SuppressWarnings("null")
53    @Override
54    String toCoordinates();
55  }