  *     </listing>
  *     will first search the container for a child called 'navBar', and
  *     then search 'navBar' for a child called 'nextButton'. If any of the
- *     intermediate children are not themselves DisplayObjectContainers,
+ *     intermediate children are not found, or not DisplayObjectContainers,
  *     an error is thrown.
  *   </dd>
  *
- *   <dt><code>wrapper</code></dt>
- *   <dd>Instead of casting the child DisplayObject to the property's
- *     class, use the specified class as a constructor, with the child
- *     DisplayObject as an argument. For example:
- *     <listing version="3.0">
- *       [Display(wrapper="org.yellcorp.ui.GlowButton")]
+ *   <dt><code>adapter</code></dt>
+ *   <dd>Instead of trying to cast the child DisplayObject to the property's
+ *     class, use the class as a constructor, with the child DisplayObject
+ *     as an argument. For example:
+ *     <listing version="3.0">
+ *       [Display(adapter)]
  *       public var nextButton:GlowButton;
  *     </listing>
+ *     will essentially perform the following:
+ *     <listing version="3.0">
+ *       target.nextButton = new GlowButton(container.getChildByName("nextButton")));
+ *     </listing>
+ *     If the property's class is an interface or a base class, the concrete
+ *     class can be specified in the value for <code>adapter</code>.
+ *     <listing version="3.0">
+ *       [Display(adapter="org.yellcorp.ui.GlowButton")]
+ *       public var nextButton:IButton;
+ *     </listing>
  *     will perform the following:
  *     <listing version="3.0">
  *       target.nextButton = new GlowButton(container.getChildByName("nextButton")));
  *     </listing>
+ *     In all cases, the constructor is assumed to take a single argument.
  *   </dd>
  * </dl>
  *
- * TODO: The <code>wrapper</code> parameter should support a default value,
- * which would be the class of the target property. Filling out the full
- * class name would only then be necessary if a subclass or an implemetor of
- * an interface was desired.
+ * TODO: adapter could also specify a static function
  */
 public class DisplayInjector
 {

    }


    private static function construct(wrapper:String, displayObject:*):*
    {
        var clazz:Object = getDefinitionByName(wrapper);
        return new clazz(displayObject);
    }
}

 * called the 'target'.
 *
 * For each qualifying instance variable of the target, the default
 * behaviour of DisplayInjector.inject is:
 * <ul>
 *   <li>Search the container for a child with the same name as the target
 *       variable.</li>
 *   <li>Cast it to the target variable class.</li>
 *   <li>Assign it to the target variable.</li>
 * </ul>
 *
 * A qualifying instance variable is one that is publically accessible and
 * has the metadata tag <code>[Display]</code>.
 *
 * As an example, if a target instance has the following variable:
 *
