      * time, so the new keyframe must be inserted in the proper place according to its
      * time value and the startDelay time passed in
      */
-    private function insertKeyframe(keyframes:Array, newKF:KeyFrame, startDelay:Number = 0):void
+    private function insertKeyframe(keyframes:Vector.<Keyframe>, 
+        newKF:Keyframe, startDelay:Number = 0):void
     {
         newKF.time += startDelay;
         for (var i:int = 0; i < keyframes.length; i++)

        for (s in autoProps)
        {
            var mp:MotionPath = new MotionPath(s);
            mp.keyframes = [new KeyFrame(0, null), new KeyFrame(duration, null)];
            mp.scaleKeyframes(duration);
            if (!motionPaths)
                motionPaths = [];
            motionPaths.push(mp);
        }
        // TODO (chaase): We probably need to advertise percentWidth/Height
        // in the affected properties/styles arrays; we don't pick these up
        // in the transition propertyChanges automatically otherwise 
        if (propertyChanges && !disableConstraints)
        {
            setupConstraintAnimation("left");
            setupConstraintAnimation("right");

import mx.effects.Effect;

import spark.effects.Animate;
import spark.effects.animation.Animation;
import spark.effects.animation.Keyframe;
import spark.effects.animation.MotionPath;
import spark.effects.easing.IEaser;
import spark.effects.easing.Linear;

