     /**
      *  @private
      *  Method for supporting Form Accessibility.
-     */
-    private static function updateFormItemString(formItem:FormItem):String
+     * 
+     *  @param formItem Object of type FormItem. Object is used here to avoid
+     *  linking in FormItem. 
+     */
+    private static function updateFormItemString(formItem:Object):String
     {
         var formName:String = "";
         var resourceManager:IResourceManager = ResourceManager.getInstance();
         
+        var formClass:Class = Class(getDefinition("mx.containers.Form", formItem.moduleFactory));
         var form:UIComponent = UIComponent(formItem.parent);
 
         // If we are located within a Form, then look for the first FormHeading
         // that is a sibling that is above us in the parent's child hierarchy
-        if (form is Form)
-        {
-            var formItemIndex:int = form.getChildIndex(formItem);
+        if (formClass && form is formClass)
+        {
+            var formHeadingClass:Class = Class(getDefinition("mx.containers.FormHeading", formItem.moduleFactory));
+            var formItemIndex:int = form.getChildIndex(DisplayObject(formItem));
             for (var i:int = formItemIndex; i >= 0; i--)
             {
                 var child:UIComponent = UIComponent(form.getChildAt(i));
-                if (child is FormHeading)
+                if (formHeadingClass && child is formHeadingClass)
                 {
                     // Accessible name if it exists, else label text.
-                    if (FormHeading(child).accessibilityProperties)
+                    if (formHeadingClass(child).accessibilityProperties)
                         formName = 
-                        FormHeading(child).accessibilityProperties.name;
+                            formHeadingClass(child).accessibilityProperties.name;
                     if (formName == "") 
-                        formName = FormHeading(child).label;
+                        formName = formHeadingClass(child).label;
                     break;
                 }
             }

        var formName:String = "";
        
        // Return nothing if we are a container 
        if (component is Container)
            return formName;

        // keeping this DisplayObjectContainer since parent returns
        // that as root is not a UIComponent.
        var par:DisplayObjectContainer = component.parent; 
        // continue looking up the parent chain
        // until root (or application) or FormItem is found.
        while (par && !(par is FormItem) &&
               !(par is SystemManager) && par != component.root)
        {
            par = par.parent;
        }

        if (par && par is FormItem)
            formName = updateFormItemString(FormItem(par));

        return formName;
    }

import flash.accessibility.Accessibility;
import flash.accessibility.AccessibilityImplementation;
import flash.accessibility.AccessibilityProperties;
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.events.Event;
import flash.system.ApplicationDomain;

import mx.core.IFlexModuleFactory;
import mx.core.UIComponent;
import mx.core.mx_internal;
import mx.managers.ISystemManager;
import mx.resources.ResourceManager;
import mx.resources.IResourceManager;

