     {
         if (popUpMenu)
             return Menu(popUpMenu).dataProvider;
-        return null;
+        return _dataProvider;
     }
 
     /**

     */
    override protected function commitProperties():void
    {
        if (_showRootChanged)
        {
            _showRootChanged = false;

        _dataProvider = value;
        dataProviderChanged = true;
        
        invalidateProperties();     
    }
    
    //--------------------------------------------------------------------------
    //  iconField
    //--------------------------------------------------------------------------

    /**
     *  @private
     *  Storage for the iconField property.
     */
    private var _iconField:String = "icon";

    [Bindable("iconFieldChanged")]
    [Inspectable(category="Data", defaultValue="icon")]

    /**
     *  Name of the field in the <code>dataProvider</code> Array that contains the icon to
     *  show for each menu item.
     *  The <code>iconFunction</code> property, if set, overrides this property.
     * 
     *  <p>The renderers will look in the data provider object for a property of 
     *  the name supplied as the iconField.  If the value of the property is a 
     *  Class, it will instantiate that class and expect it to be an instance 
     *  of an IFlexDisplayObject. If the value of the property is a String, 
     *  it will look to see if a Class exists with that name in the application, 
     *  and if it can't find one, it will also look for a property on the 
     *  document with that name and expect that property to map to a Class.</p>
     * 
     *  If the data provider is an E4X XML object, you must set this property
     *  explicitly; for example, use &#064;icon to specify the <code>icon</code> attribute.
     *
     *  @default "icon"
     */
    public function get iconField():String
    {
        return _iconField;
    }

    /**
     *  @private
     */
    public function set iconField(value:String):void
    {
        if (_iconField != value)
        {
            _iconField = value;
            
            if (popUpMenu)
                popUpMenu.iconField = _iconField;
            
            dispatchEvent(new Event("iconFieldChanged"));
        }
    }

    //--------------------------------------------------------------------------
    //  iconFunction
    //--------------------------------------------------------------------------

    /**
     *  @private
     *  Storage for the iconFunction property.
     */
    private var _iconFunction:Function;

    [Inspectable(category="Data")]

    /**
     *  A function that determines the icon to display for each menu item.
     *  If you omit this property, Flex uses the contents of the field or attribute
     *  determined by the <code>iconField</code> property.
     *  If you specify this property, Flex ignores any <code>iconField</code>
     *  property value.
     *
     *  By default the menu does not try to display icons with the text 
     *  in the rows.  However, by specifying an icon function, you can specify 
     *  a Class for a graphic that will be created and displayed as an icon 
     *  in the row. 
     *
     *  <p>The iconFunction takes a single argument which is the item
     *  in the data provider and returns a Class.</p>
     * 
     *  <blockquote>
     *  <code>iconFunction(item:Object):Class</code>
     *  </blockquote>
     *
     *  @default null
     */
    public function get iconFunction():Function
    {
        return _iconFunction;
    }

    /**
     *  @private
     */
    public function set iconFunction(value:Function):void
    {
        if (_iconFunction != value)
        {
            _iconFunction = value;
            
            if (popUpMenu)
                popUpMenu.iconFunction = _iconFunction;
        }
    }

    //--------------------------------------------------------------------------
