                     propertyName = Object(name).toString();
 
 
+
                 if (parent is ContentProxy && ContentProxy(parent).object_proxy::isSimple)
                 {
-                    existingValue = ContentProxy(parent).object_proxy::content;
+                    var simpleContent:* = ContentProxy(parent).object_proxy::content;
+                    if (simpleContent != null)
+                    {
+                        if (isSimpleValue(simpleContent) || TypeIterator.isIterable(simpleContent))
+                        {
+                            existingValue = simpleContent;
+                        }
+                        else
+                        {
+                            // HACK for SDK-14800:
+                            // Flex Builder 3 may generate a strongly typed class for simpleContent extensions
+                            // or restrictions, which uses the convention of "_" + typeName for the simpleContent
+                            // value.
+                            var simplePropName:String = "_" + getUnqualifiedClassName(simpleContent);
+                            if (Object(simpleContent).hasOwnProperty(simplePropName))
+                            {
+                                simpleContent[simplePropName] = value;
+                                return;
+                            }
+                        }
+                    }
                 }
                 else 
                 {


        return existingValue;
    }

    /**
     * Noop. Method exists to give a chance to subclasses to pre-process the

import flash.utils.getQualifiedClassName;

import mx.collections.ArrayCollection;
import mx.logging.ILogger;
import mx.logging.Log;
import mx.utils.DescribeTypeCache;
import mx.utils.ObjectProxy;
import mx.utils.URLUtil;
import mx.utils.XMLUtil;
import mx.utils.object_proxy;

[ExcludeClass]

