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

  const channel = options.channel;
  const runtimeAnimation = options.runtimeAnimation;
  const runtimeNode = options.runtimeNode;
  //>>includeStart('debug', pragmas.debug);
  Check.typeOf.object("options.channel", channel);
  Check.typeOf.object("options.runtimeAnimation", runtimeAnimation);
  Check.typeOf.object("options.runtimeNode", runtimeNode);
  //>>includeEnd('debug');

  this._channel = channel;
  this._runtimeAnimation = runtimeAnimation;
  this._runtimeNode = runtimeNode;

  // An animation channel can have multiple splines if it animates
  // a node's morph weights, which will involve multiple morph targets.
  this._splines = [];
  this._path = undefined;

  initialize(this);
}
A runtime animation channel for a {@link ModelAnimation}. An animation
channel is responsible for interpolating between the keyframe values of an animated
property, then applying the change to the target node.

@param {object} options An object containing the following options:
@param {ModelComponents.AnimationChannel} options.channel The corresponding animation channel components from the 3D model.
@param {ModelAnimation} options.runtimeAnimation The runtime animation containing this channel.
@param {ModelRuntimeNode} options.runtimeNode The runtime node that this channel will animate.

@alias ModelAnimationChannel
@constructor

@private