001/*
002 * SPDX-FileCopyrightText: none
003 * SPDX-License-Identifier: CC0-1.0
004 */
005
006package dev.metaschema.core.model;
007
008import edu.umd.cs.findbugs.annotations.NonNull;
009
010/**
011 * Base implementation of {@link IInstance} providing parent container
012 * management.
013 *
014 * @param <P>
015 *          the Java type of the parent container
016 */
017public abstract class AbstractInstance<P extends IContainer> implements IInstance {
018  @NonNull
019  private final P parent;
020
021  /**
022   * Construct a new instance.
023   *
024   * @param parent
025   *          the parent containing the instance.
026   */
027  protected AbstractInstance(@NonNull P parent) {
028    this.parent = parent;
029  }
030
031  @Override
032  @NonNull
033  public final P getParentContainer() {
034    return parent;
035  }
036}