function ModelArticulation(options) {
  options = options ?? Frozen.EMPTY_OBJECT;

  const articulation = options.articulation;
  const sceneGraph = options.sceneGraph;
  //>>includeStart('debug', pragmas.debug);
  Check.typeOf.object("options.articulation", articulation);
  Check.typeOf.object("options.sceneGraph", sceneGraph);
  //>>includeEnd('debug');

  this._articulation = articulation;
  this._sceneGraph = sceneGraph;

  this._name = articulation.name;
  this._runtimeStages = [];
  this._runtimeStagesByName = {};

  // Will be populated as the runtime nodes are created
  this._runtimeNodes = [];

  // Set to true so that the first call to
  // ModelSceneGraph.applyArticulations will work.
  this._dirty = true;

  initialize(this);
}
An in-memory representation of an articulation that affects nodes in the
{@link ModelSceneGraph}. This is defined in a model by the
<code>AGI_articulations</code> extension.

@param {object} options An object containing the following options:
@param {ModelComponents.Articulation} options.articulation The articulation components from the 3D model.
@param {ModelSceneGraph} options.sceneGraph The scene graph this articulation belongs to.

@alias ModelArticulation
@constructor

@private