      */ 
     override protected function commitProperties():void
     {
+        // need to run this code before calling super.commitProperites
+        // because the super.commitProperties can handle state change on 
+        // rare occassion (during initialization)
+        if (rendererStateIsDirty)
+        {
+            setCurrentState(getCurrentRendererState(), playTransitionsOnNextRendererState); 
+            playTransitionsOnNextRendererState = false;
+            rendererStateIsDirty = false;
+        }
+        
         super.commitProperties();
-        
-        if (rendererStateIsDirty)
-        {
-            setCurrentState(getCurrentRendererState(), playTransitions); 
-            rendererStateIsDirty = false;
-        }
     }
     
     /**

        // Initially state is dirty
        rendererStateIsDirty = true;
        
        itemRendererInteractionStateDetector = new ItemRendererInteractionStateDetector(this);
        itemRendererInteractionStateDetector.addEventListener(Event.CHANGE, itemRendererInteractionStateDetector_changeHandler);
    }
    
    //--------------------------------------------------------------------------

     *  <p>The full set of states supported (in order of precedence) are: 
     *    <ul>
     *      <li>dragging</li>
     *      <li>downAndSelected</li>
     *      <li>selectedAndShowsCaret</li>
     *      <li>hoveredAndShowsCaret</li>
     *      <li>normalAndShowsCaret</li>
     *      <li>down</li>
     *      <li>selected</li>
     *      <li>hovered</li>
     *      <li>normal</li>
     *    </ul>
     *  </p>
