constructor( name = '', duration = -1, tracks = [], blendMode = NormalAnimationBlendMode ) {

		/**
		 * The clip's name.
		 *
		 * @type {string}
		 */
		this.name = name;

		/**
		 *  An array of keyframe tracks.
		 *
		 * @type {Array<KeyframeTrack>}
		 */
		this.tracks = tracks;

		/**
		 * The clip's duration in seconds.
		 *
		 * @type {number}
		 */
		this.duration = duration;

		/**
		 * Defines how the animation is blended/combined when two or more animations
		 * are simultaneously played.
		 *
		 * @type {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)}
		 */
		this.blendMode = blendMode;

		/**
		 * The UUID of the animation clip.
		 *
		 * @type {string}
		 * @readonly
		 */
		this.uuid = generateUUID();

		// this means it should figure out its duration by scanning the tracks
		if ( this.duration < 0 ) {

			this.resetDuration();

		}

	}
Constructs a new animation clip.

Note: Instead of instantiating an AnimationClip directly with the constructor, you can
use the static interface of this class for creating clips. In most cases though, animation clips
will automatically be created by loaders when importing animated 3D assets.

@param {string} [name=''] - The clip's name.
@param {number} [duration=-1] - The clip's duration in seconds. If a negative value is passed,
the duration will be calculated from the passed keyframes.
@param {Array<KeyframeTrack>} tracks - An array of keyframe tracks.
@param {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)} [blendMode=NormalAnimationBlendMode] - Defines how the animation
is blended/combined when two or more animations are simultaneously played.