Why do these methods in Component return Object, not a type?
   public static Object getInstance(Class<?> clazz)
   {
      return getInstance(clazz, true);
   }
   public static Object getInstance(Class<?> clazz, boolean create)
   {
      return getInstance( getComponentName(clazz), create );
   }
   public static Object getInstance(Class<?> clazz, ScopeType scope)
   {
      return getInstance(clazz, scope, true);
   }
   public static Object getInstance(Class<?> clazz, ScopeType scope, boolean create)
   {
      return getInstance( getComponentName(clazz), scope, create );
   }
Ordinarily, you would do:
   public static <T> T getInstance(Class<T> clazz)
   {
      return (T)getInstance(clazz, true);
   }
Would help catch bugs I think.
Okay, looks like the code in Component works correctly when you're dealing with an @Unwrap component type. Oops. Please delete my post :-)