         if (obj != null)
         {
         	appliedTarget = obj;
-	        var propName:String = (PSEUDONYMS[name] && (PSEUDONYMS[name] in obj)) ?
-	                          PSEUDONYMS[name] :
-	                          name;
+            var propName:String = PSEUDONYMS[name] ? getPseudonym(obj, name) : name;
 	
 	        var relatedProps:Array = RELATED_PROPERTIES[propName] ?
 	                                 RELATED_PROPERTIES[propName] :

        var obj:* = getOverrideContext(appliedTarget, parent);
        if (obj != null && applied)
        {
            var propName:String = (PSEUDONYMS[name] && (PSEUDONYMS[name] in obj)) ?
	                          PSEUDONYMS[name] :
	                          name;
	        
	        var relatedProps:Array = RELATED_PROPERTIES[propName] ?
	                                 RELATED_PROPERTIES[propName] :
	                                 null;
	

    }

    /**
     * Utility function to return the pseudonym of the property
     * name if it exists on the object
     */
    private function getPseudonym(obj:*, name:String):String
    {
        var propName:String;
        if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_0)
            return (PSEUDONYMS[name] in obj) ?
                PSEUDONYMS[name] :
                name;
        propName = PSEUDONYMS[name];
        if (!(PSEUDONYMS[name] in obj))
        {
            // 'in' does not work for mx_internal properties 
            // like currentStateDeferred
            try
            {
                // Check if we can access the property; if it doesn't
                // exist, it'll throw a ReferenceError
                var tmp:* = obj[PSEUDONYMS[name]];
            }
            catch (e:ReferenceError)
            {
                propName = name;
            }
        }
        else
        {
            propName = name;
        }
        return propName;
    }
    
    /**
     *  @inheritDoc
     *  
     *  @langversion 3.0
