code: function () {
  
  		var valid = true;
  
  		var valueSize = this.getValueSize();
  		if ( valueSize - Math.floor( valueSize ) !== 0 ) {
  
  			console.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );
  			valid = false;
  
  		}
  
  		var times = this.times,
  			values = this.values,
  
  			nKeys = times.length;
  
  		if ( nKeys === 0 ) {
  
  			console.error( 'THREE.KeyframeTrack: Track is empty.', this );
  			valid = false;
  
  		}
  
  		var prevTime = null;
  
  		for ( var i = 0; i !== nKeys; i ++ ) {
  
  			var currTime = times[ i ];
  
  			if ( typeof currTime === 'number' && isNaN( currTime ) ) {
  
  				console.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );
  				valid = false;
  				break;
  
  			}
  
  			if ( prevTime !== null && prevTime > currTime ) {
  
  				console.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );
  				valid = false;
  				break;
  
  			}
  
  			prevTime = currTime;
  
  		}
  
  		if ( values !== undefined ) {
  
  			if ( AnimationUtils.isTypedArray( values ) ) {
  
  				for ( var i = 0, n = values.length; i !== n; ++ i ) {
  
  					var value = values[ i ];
  
  					if ( isNaN( value ) ) {
  
  						console.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );
  						valid = false;
  						break;
  
  					}
  
  				}
  
  			}
  
  		}
  
  		return valid;
  
  	}
docs: ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable