     private static function injectProperty(property:XML, metadata:XML,
             source:DisplayObjectContainer, target:*):void
     {
-        var args:Object = { name: null, adapter: null };
+        var args:Object = { name: null, adapter: null, optional: null };
 
         try {
             collectArgs(metadata, args);

        catch (die:DisplayInjectorError)
        {
            die.property = property.@name;
            throw die;
        }
        catch (te:TypeError)
        {
            throw new DisplayPathError(te.message, displayPath, property.@name);
        }
    }


    private static function getChildByPath(
            display:DisplayObjectContainer, path:String):*
    //        throws DisplayPathError
    {
        var names:Array = path.split(".");
        var resolvedNames:Array = [ ];

 *     an error is thrown.</p>
 *   </dd>
 *
 *   <dt><code>optional</code></dt>
 *   <dd><p>If the search fails, set the target property to <code>null</code>
 *     instead of throwing an error.</p>
 *   </dd>
 *
 *   <dt><code>adapter</code></dt>
 *   <dd><p>Instead of trying to cast the child DisplayObject to the property's
 *     class, use the class as a constructor, with the child DisplayObject
