Interface name as a type

The interface name becomes the name of a type, which can then be used as a parameter in methods. For example:


[object, uuid(b5483f00-4f6c-101b-a1c7-00aa00389acb)]
   interface IFoo {
      };

causes a typed named "IFoo" to be declared, such that a method


[object, uuid(6A874340-57EB-11ce-A964-00AA006C3706)] 
   interface IBar {
      HRESULT   M1([in] short i, [in] IFoo* pfoo);
      };

is a legal declaration.