%module xxx %inline %{ struct A5; int A6; template struct A7 { }; template struct A8 { }; struct A0 : public A1 , A2, private A3 , private A4 , A5 , A6 , A7 , protected A8 { }; struct A1 { }; class B1 {}; class B0 : B1, B2 { }; struct Recursive : Recursive { }; %} template class Base {}; %template() Base; class Derived : public Base {}; class Derived2 : public Base {}; %template(BaseDouble) Base;