     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 = [ ];



    private static function collectArgs(metadata:XML, argDict:*):void
    //      throws DisplayMetadataError
    {
        for each (var arg:XML in metadata.arg)
        {
