/ test / dynamic_cast14.pass.cpp
dynamic_cast14.pass.cpp
   1  //===------------------------- dynamic_cast14.cpp -------------------------===//
   2  //
   3  // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
   4  // See https://llvm.org/LICENSE.txt for license information.
   5  // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
   6  //
   7  //===----------------------------------------------------------------------===//
   8  
   9  #include <cassert>
  10  #include "support/timer.h"
  11  
  12  namespace t1
  13  {
  14  
  15  struct A1
  16  {
  17      char _[43981];
  18      virtual ~A1() {}
  19  
  20      A1* getA1() {return this;}
  21  };
  22  
  23  struct A2
  24  {
  25      char _[34981];
  26      virtual ~A2() {}
  27  
  28      A2* getA2() {return this;}
  29  };
  30  
  31  struct A3
  32      : public A1,
  33        public virtual A2
  34  {
  35      char _[93481];
  36      virtual ~A3() {}
  37  
  38      A1* getA1_3() {return A1::getA1();}
  39      A2* getA2() {return A2::getA2();}
  40      A3* getA3() {return this;}
  41  };
  42  
  43  struct A4
  44      : public virtual A2,
  45        public A1
  46  {
  47      char _[13489];
  48      virtual ~A4() {}
  49  
  50      A1* getA1_4() {return A1::getA1();}
  51      A2* getA2() {return A2::getA2();}
  52      A4* getA4() {return this;}
  53  };
  54  
  55  struct A5
  56      : public A3,
  57        public A4
  58  {
  59      char _[13489];
  60      virtual ~A5() {}
  61  
  62      A1* getA1_3() {return A3::getA1();}
  63      A1* getA1_4() {return A4::getA1();}
  64      A2* getA2() {return A3::getA2();}
  65      A3* getA3() {return A3::getA3();}
  66      A4* getA4() {return A4::getA4();}
  67      A5* getA5() {return this;}
  68  };
  69  
  70  struct A6
  71      : public A1
  72  {
  73      char _[81349];
  74      virtual ~A6() {}
  75  
  76      A1* getA1_6() {return A1::getA1();}
  77      A6* getA6() {return this;}
  78  };
  79  
  80  struct A7
  81      : public A5,
  82        public A6
  83  {
  84      char _[34819];
  85      virtual ~A7() {}
  86  
  87      A1* getA1_3() {return A5::getA1_3();}
  88      A1* getA1_4() {return A5::getA1_4();}
  89      A1* getA1_6() {return A6::getA1_6();}
  90      A2* getA2() {return A5::getA2();}
  91      A3* getA3() {return A5::getA3();}
  92      A4* getA4() {return A5::getA4();}
  93      A5* getA5() {return A5::getA5();}
  94      A6* getA6() {return A6::getA6();}
  95      A7* getA7() {return this;}
  96  };
  97  
  98  struct A8
  99      : public A7
 100  {
 101      char _[3489];
 102      virtual ~A8() {}
 103  
 104      A1* getA1_3() {return A7::getA1_3();}
 105      A1* getA1_4() {return A7::getA1_4();}
 106      A1* getA1_6() {return A7::getA1_6();}
 107      A2* getA2() {return A7::getA2();}
 108      A3* getA3() {return A7::getA3();}
 109      A4* getA4() {return A7::getA4();}
 110      A5* getA5() {return A7::getA5();}
 111      A6* getA6() {return A7::getA6();}
 112      A7* getA7() {return A7::getA7();}
 113      A8* getA8() {return this;}
 114  };
 115  
 116  struct A9
 117      : public A1
 118  {
 119      char _[3481];
 120      virtual ~A9() {}
 121  
 122      A1* getA1_9() {return A1::getA1();}
 123      A9* getA9() {return this;}
 124  };
 125  
 126  struct A10
 127      : public virtual A8
 128  {
 129      char _[4831];
 130      virtual ~A10() {}
 131  
 132      A1* getA1_3() {return A8::getA1_3();}
 133      A1* getA1_4() {return A8::getA1_4();}
 134      A1* getA1_6() {return A8::getA1_6();}
 135      A2* getA2() {return A8::getA2();}
 136      A3* getA3() {return A8::getA3();}
 137      A4* getA4() {return A8::getA4();}
 138      A5* getA5() {return A8::getA5();}
 139      A6* getA6() {return A8::getA6();}
 140      A7* getA7() {return A8::getA7();}
 141      A8* getA8() {return A8::getA8();}
 142      A10* getA10() {return this;}
 143  };
 144  
 145  struct A11
 146      : public virtual A8,
 147        public A9
 148  {
 149      char _[6483];
 150      virtual ~A11() {}
 151  
 152      A1* getA1_3() {return A8::getA1_3();}
 153      A1* getA1_4() {return A8::getA1_4();}
 154      A1* getA1_6() {return A8::getA1_6();}
 155      A1* getA1_9() {return A9::getA1_9();}
 156      A2* getA2() {return A8::getA2();}
 157      A3* getA3() {return A8::getA3();}
 158      A4* getA4() {return A8::getA4();}
 159      A5* getA5() {return A8::getA5();}
 160      A6* getA6() {return A8::getA6();}
 161      A7* getA7() {return A8::getA7();}
 162      A8* getA8() {return A8::getA8();}
 163      A9* getA9() {return A9::getA9();}
 164      A11* getA11() {return this;}
 165  };
 166  
 167  struct A12
 168      : public A10,
 169        public A11
 170  {
 171      char _[2283];
 172      virtual ~A12() {}
 173  
 174      A1* getA1_3() {return A10::getA1_3();}
 175      A1* getA1_4() {return A10::getA1_4();}
 176      A1* getA1_6() {return A10::getA1_6();}
 177      A1* getA1_9() {return A11::getA1_9();}
 178      A2* getA2() {return A10::getA2();}
 179      A3* getA3() {return A10::getA3();}
 180      A4* getA4() {return A10::getA4();}
 181      A5* getA5() {return A10::getA5();}
 182      A6* getA6() {return A10::getA6();}
 183      A7* getA7() {return A10::getA7();}
 184      A8* getA8() {return A10::getA8();}
 185      A9* getA9() {return A11::getA9();}
 186      A10* getA10() {return A10::getA10();}
 187      A11* getA11() {return A11::getA11();}
 188      A12* getA12() {return this;}
 189  };
 190  
 191  struct A13
 192      : public A12
 193  {
 194      char _[1283];
 195      virtual ~A13() {}
 196  
 197      A1* getA1_3() {return A12::getA1_3();}
 198      A1* getA1_4() {return A12::getA1_4();}
 199      A1* getA1_6() {return A12::getA1_6();}
 200      A1* getA1_9() {return A12::getA1_9();}
 201      A2* getA2() {return A12::getA2();}
 202      A3* getA3() {return A12::getA3();}
 203      A4* getA4() {return A12::getA4();}
 204      A5* getA5() {return A12::getA5();}
 205      A6* getA6() {return A12::getA6();}
 206      A7* getA7() {return A12::getA7();}
 207      A8* getA8() {return A12::getA8();}
 208      A9* getA9() {return A12::getA9();}
 209      A10* getA10() {return A12::getA10();}
 210      A11* getA11() {return A12::getA11();}
 211      A12* getA12() {return A12::getA12();}
 212      A13* getA13() {return this;}
 213  };
 214  
 215  A3 a3;
 216  A4 a4;
 217  A5 a5;
 218  A6 a6;
 219  A7 a7;
 220  A8 a8;
 221  A9 a9;
 222  A10 a10;
 223  A11 a11;
 224  A12 a12;
 225  A13 a13;
 226  
 227  void test()
 228  {
 229      assert(dynamic_cast<A3*>(a3.getA1_3()) == a3.getA3());
 230      assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
 231  
 232      assert(dynamic_cast<A3*>(a4.getA1_4()) == 0);
 233      assert(dynamic_cast<A3*>(a4.getA2()) == 0);
 234      assert(dynamic_cast<A4*>(a4.getA1_4()) == a4.getA4());
 235      assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4());
 236  
 237      assert(dynamic_cast<A3*>(a5.getA1_3()) == a5.getA3());
 238      assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3());
 239  
 240      assert(dynamic_cast<A4*>(a5.getA1_3()) == a5.getA4());
 241      assert(dynamic_cast<A4*>(a5.getA1_4()) == a5.getA4());
 242      assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
 243      assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
 244  
 245      assert(dynamic_cast<A5*>(a5.getA1_3()) == a5.getA5());
 246      assert(dynamic_cast<A5*>(a5.getA1_4()) == a5.getA5());
 247      assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
 248      assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
 249      assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
 250      assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5());
 251  
 252      assert(dynamic_cast<A3*>(a6.getA1_6()) == 0);
 253  
 254      assert(dynamic_cast<A4*>(a6.getA1_6()) == 0);
 255  
 256      assert(dynamic_cast<A5*>(a6.getA1_6()) == 0);
 257  
 258      assert(dynamic_cast<A6*>(a6.getA1_6()) == a6.getA6());
 259  
 260      assert(dynamic_cast<A3*>(a7.getA1_3()) == a7.getA3());
 261      assert(dynamic_cast<A3*>(a7.getA1_4()) == a7.getA3());
 262      assert(dynamic_cast<A3*>(a7.getA2()) == a7.getA3());
 263  
 264      assert(dynamic_cast<A4*>(a7.getA1_3()) == a7.getA4());
 265      assert(dynamic_cast<A4*>(a7.getA1_4()) == a7.getA4());
 266      assert(dynamic_cast<A4*>(a7.getA2()) == a7.getA4());
 267      assert(dynamic_cast<A4*>(a7.getA3()) == a7.getA4());
 268  
 269      assert(dynamic_cast<A5*>(a7.getA1_3()) == a7.getA5());
 270      assert(dynamic_cast<A5*>(a7.getA1_4()) == a7.getA5());
 271      assert(dynamic_cast<A5*>(a7.getA2()) == a7.getA5());
 272      assert(dynamic_cast<A5*>(a7.getA3()) == a7.getA5());
 273      assert(dynamic_cast<A5*>(a7.getA4()) == a7.getA5());
 274  
 275      assert(dynamic_cast<A6*>(a7.getA1_3()) == a7.getA6());
 276      assert(dynamic_cast<A6*>(a7.getA1_4()) == a7.getA6());
 277      assert(dynamic_cast<A6*>(a7.getA1_6()) == a7.getA6());
 278      assert(dynamic_cast<A6*>(a7.getA2()) == a7.getA6());
 279      assert(dynamic_cast<A6*>(a7.getA3()) == a7.getA6());
 280      assert(dynamic_cast<A6*>(a7.getA4()) == a7.getA6());
 281      assert(dynamic_cast<A6*>(a7.getA5()) == a7.getA6());
 282  
 283      assert(dynamic_cast<A7*>(a7.getA1_3()) == a7.getA7());
 284      assert(dynamic_cast<A7*>(a7.getA1_4()) == a7.getA7());
 285      assert(dynamic_cast<A7*>(a7.getA1_6()) == a7.getA7());
 286      assert(dynamic_cast<A7*>(a7.getA2()) == a7.getA7());
 287      assert(dynamic_cast<A7*>(a7.getA3()) == a7.getA7());
 288      assert(dynamic_cast<A7*>(a7.getA4()) == a7.getA7());
 289      assert(dynamic_cast<A7*>(a7.getA5()) == a7.getA7());
 290      assert(dynamic_cast<A7*>(a7.getA6()) == a7.getA7());
 291  
 292      assert(dynamic_cast<A3*>(a8.getA1_3()) == a8.getA3());
 293      assert(dynamic_cast<A3*>(a8.getA1_4()) == a8.getA3());
 294      assert(dynamic_cast<A3*>(a8.getA2()) == a8.getA3());
 295  
 296      assert(dynamic_cast<A4*>(a8.getA1_3()) == a8.getA4());
 297      assert(dynamic_cast<A4*>(a8.getA1_4()) == a8.getA4());
 298      assert(dynamic_cast<A4*>(a8.getA2()) == a8.getA4());
 299      assert(dynamic_cast<A4*>(a8.getA3()) == a8.getA4());
 300  
 301      assert(dynamic_cast<A5*>(a8.getA1_3()) == a8.getA5());
 302      assert(dynamic_cast<A5*>(a8.getA1_4()) == a8.getA5());
 303      assert(dynamic_cast<A5*>(a8.getA2()) == a8.getA5());
 304      assert(dynamic_cast<A5*>(a8.getA3()) == a8.getA5());
 305      assert(dynamic_cast<A5*>(a8.getA4()) == a8.getA5());
 306  
 307      assert(dynamic_cast<A6*>(a8.getA1_3()) == a8.getA6());
 308      assert(dynamic_cast<A6*>(a8.getA1_4()) == a8.getA6());
 309      assert(dynamic_cast<A6*>(a8.getA1_6()) == a8.getA6());
 310      assert(dynamic_cast<A6*>(a8.getA2()) == a8.getA6());
 311      assert(dynamic_cast<A6*>(a8.getA3()) == a8.getA6());
 312      assert(dynamic_cast<A6*>(a8.getA4()) == a8.getA6());
 313      assert(dynamic_cast<A6*>(a8.getA5()) == a8.getA6());
 314  
 315      assert(dynamic_cast<A7*>(a8.getA1_3()) == a8.getA7());
 316      assert(dynamic_cast<A7*>(a8.getA1_4()) == a8.getA7());
 317      assert(dynamic_cast<A7*>(a8.getA1_6()) == a8.getA7());
 318      assert(dynamic_cast<A7*>(a8.getA2()) == a8.getA7());
 319      assert(dynamic_cast<A7*>(a8.getA3()) == a8.getA7());
 320      assert(dynamic_cast<A7*>(a8.getA4()) == a8.getA7());
 321      assert(dynamic_cast<A7*>(a8.getA5()) == a8.getA7());
 322      assert(dynamic_cast<A7*>(a8.getA6()) == a8.getA7());
 323  
 324      assert(dynamic_cast<A8*>(a8.getA1_3()) == a8.getA8());
 325      assert(dynamic_cast<A8*>(a8.getA1_4()) == a8.getA8());
 326      assert(dynamic_cast<A8*>(a8.getA1_6()) == a8.getA8());
 327      assert(dynamic_cast<A8*>(a8.getA2()) == a8.getA8());
 328      assert(dynamic_cast<A8*>(a8.getA3()) == a8.getA8());
 329      assert(dynamic_cast<A8*>(a8.getA4()) == a8.getA8());
 330      assert(dynamic_cast<A8*>(a8.getA5()) == a8.getA8());
 331      assert(dynamic_cast<A8*>(a8.getA6()) == a8.getA8());
 332      assert(dynamic_cast<A8*>(a8.getA7()) == a8.getA8());
 333  
 334      assert(dynamic_cast<A3*>(a9.getA1_9()) == 0);
 335  
 336      assert(dynamic_cast<A4*>(a9.getA1_9()) == 0);
 337  
 338      assert(dynamic_cast<A5*>(a9.getA1_9()) == 0);
 339  
 340      assert(dynamic_cast<A6*>(a9.getA1_9()) == 0);
 341  
 342      assert(dynamic_cast<A7*>(a9.getA1_9()) == 0);
 343  
 344      assert(dynamic_cast<A8*>(a9.getA1_9()) == 0);
 345  
 346      assert(dynamic_cast<A9*>(a9.getA1_9()) == a9.getA9());
 347  
 348      assert(dynamic_cast<A3*>(a10.getA1_3()) == a10.getA3());
 349      assert(dynamic_cast<A3*>(a10.getA1_4()) == a10.getA3());
 350      assert(dynamic_cast<A3*>(a10.getA1_6()) == a10.getA3());
 351      assert(dynamic_cast<A3*>(a10.getA2()) == a10.getA3());
 352  
 353      assert(dynamic_cast<A4*>(a10.getA1_3()) == a10.getA4());
 354      assert(dynamic_cast<A4*>(a10.getA1_4()) == a10.getA4());
 355      assert(dynamic_cast<A4*>(a10.getA1_6()) == a10.getA4());
 356      assert(dynamic_cast<A4*>(a10.getA2()) == a10.getA4());
 357      assert(dynamic_cast<A4*>(a10.getA3()) == a10.getA4());
 358  
 359      assert(dynamic_cast<A5*>(a10.getA1_3()) == a10.getA5());
 360      assert(dynamic_cast<A5*>(a10.getA1_4()) == a10.getA5());
 361      assert(dynamic_cast<A5*>(a10.getA1_6()) == a10.getA5());
 362      assert(dynamic_cast<A5*>(a10.getA2()) == a10.getA5());
 363      assert(dynamic_cast<A5*>(a10.getA3()) == a10.getA5());
 364      assert(dynamic_cast<A5*>(a10.getA4()) == a10.getA5());
 365  
 366      assert(dynamic_cast<A6*>(a10.getA1_3()) == a10.getA6());
 367      assert(dynamic_cast<A6*>(a10.getA1_4()) == a10.getA6());
 368      assert(dynamic_cast<A6*>(a10.getA1_6()) == a10.getA6());
 369      assert(dynamic_cast<A6*>(a10.getA2()) == a10.getA6());
 370      assert(dynamic_cast<A6*>(a10.getA3()) == a10.getA6());
 371      assert(dynamic_cast<A6*>(a10.getA4()) == a10.getA6());
 372      assert(dynamic_cast<A6*>(a10.getA5()) == a10.getA6());
 373  
 374      assert(dynamic_cast<A7*>(a10.getA1_3()) == a10.getA7());
 375      assert(dynamic_cast<A7*>(a10.getA1_4()) == a10.getA7());
 376      assert(dynamic_cast<A7*>(a10.getA1_6()) == a10.getA7());
 377      assert(dynamic_cast<A7*>(a10.getA2()) == a10.getA7());
 378      assert(dynamic_cast<A7*>(a10.getA3()) == a10.getA7());
 379      assert(dynamic_cast<A7*>(a10.getA4()) == a10.getA7());
 380      assert(dynamic_cast<A7*>(a10.getA5()) == a10.getA7());
 381      assert(dynamic_cast<A7*>(a10.getA6()) == a10.getA7());
 382  
 383      assert(dynamic_cast<A8*>(a10.getA1_3()) == a10.getA8());
 384      assert(dynamic_cast<A8*>(a10.getA1_4()) == a10.getA8());
 385      assert(dynamic_cast<A8*>(a10.getA1_6()) == a10.getA8());
 386      assert(dynamic_cast<A8*>(a10.getA2()) == a10.getA8());
 387      assert(dynamic_cast<A8*>(a10.getA3()) == a10.getA8());
 388      assert(dynamic_cast<A8*>(a10.getA4()) == a10.getA8());
 389      assert(dynamic_cast<A8*>(a10.getA5()) == a10.getA8());
 390      assert(dynamic_cast<A8*>(a10.getA6()) == a10.getA8());
 391      assert(dynamic_cast<A8*>(a10.getA7()) == a10.getA8());
 392  
 393      assert(dynamic_cast<A9*>(a10.getA1_3()) == 0);
 394      assert(dynamic_cast<A9*>(a10.getA1_4()) == 0);
 395      assert(dynamic_cast<A9*>(a10.getA1_6()) == 0);
 396      assert(dynamic_cast<A9*>(a10.getA2()) == 0);
 397      assert(dynamic_cast<A9*>(a10.getA3()) == 0);
 398      assert(dynamic_cast<A9*>(a10.getA4()) == 0);
 399      assert(dynamic_cast<A9*>(a10.getA5()) == 0);
 400      assert(dynamic_cast<A9*>(a10.getA6()) == 0);
 401      assert(dynamic_cast<A9*>(a10.getA7()) == 0);
 402      assert(dynamic_cast<A9*>(a10.getA8()) == 0);
 403  
 404      assert(dynamic_cast<A10*>(a10.getA1_3()) == a10.getA10());
 405      assert(dynamic_cast<A10*>(a10.getA1_4()) == a10.getA10());
 406      assert(dynamic_cast<A10*>(a10.getA1_6()) == a10.getA10());
 407      assert(dynamic_cast<A10*>(a10.getA2()) == a10.getA10());
 408      assert(dynamic_cast<A10*>(a10.getA3()) == a10.getA10());
 409      assert(dynamic_cast<A10*>(a10.getA4()) == a10.getA10());
 410      assert(dynamic_cast<A10*>(a10.getA5()) == a10.getA10());
 411      assert(dynamic_cast<A10*>(a10.getA6()) == a10.getA10());
 412      assert(dynamic_cast<A10*>(a10.getA7()) == a10.getA10());
 413      assert(dynamic_cast<A10*>(a10.getA8()) == a10.getA10());
 414  
 415      assert(dynamic_cast<A3*>(a11.getA1_3()) == a11.getA3());
 416      assert(dynamic_cast<A3*>(a11.getA1_4()) == a11.getA3());
 417      assert(dynamic_cast<A3*>(a11.getA1_6()) == a11.getA3());
 418      assert(dynamic_cast<A3*>(a11.getA1_9()) == a11.getA3());
 419      assert(dynamic_cast<A3*>(a11.getA2()) == a11.getA3());
 420  
 421      assert(dynamic_cast<A4*>(a11.getA1_3()) == a11.getA4());
 422      assert(dynamic_cast<A4*>(a11.getA1_4()) == a11.getA4());
 423      assert(dynamic_cast<A4*>(a11.getA1_6()) == a11.getA4());
 424      assert(dynamic_cast<A4*>(a11.getA1_9()) == a11.getA4());
 425      assert(dynamic_cast<A4*>(a11.getA2()) == a11.getA4());
 426      assert(dynamic_cast<A4*>(a11.getA3()) == a11.getA4());
 427  
 428      assert(dynamic_cast<A5*>(a11.getA1_3()) == a11.getA5());
 429      assert(dynamic_cast<A5*>(a11.getA1_4()) == a11.getA5());
 430      assert(dynamic_cast<A5*>(a11.getA1_6()) == a11.getA5());
 431      assert(dynamic_cast<A5*>(a11.getA1_9()) == a11.getA5());
 432      assert(dynamic_cast<A5*>(a11.getA2()) == a11.getA5());
 433      assert(dynamic_cast<A5*>(a11.getA3()) == a11.getA5());
 434      assert(dynamic_cast<A5*>(a11.getA4()) == a11.getA5());
 435  
 436      assert(dynamic_cast<A6*>(a11.getA1_3()) == a11.getA6());
 437      assert(dynamic_cast<A6*>(a11.getA1_4()) == a11.getA6());
 438      assert(dynamic_cast<A6*>(a11.getA1_6()) == a11.getA6());
 439      assert(dynamic_cast<A6*>(a11.getA1_9()) == a11.getA6());
 440      assert(dynamic_cast<A6*>(a11.getA2()) == a11.getA6());
 441      assert(dynamic_cast<A6*>(a11.getA3()) == a11.getA6());
 442      assert(dynamic_cast<A6*>(a11.getA4()) == a11.getA6());
 443      assert(dynamic_cast<A6*>(a11.getA5()) == a11.getA6());
 444  
 445      assert(dynamic_cast<A7*>(a11.getA1_3()) == a11.getA7());
 446      assert(dynamic_cast<A7*>(a11.getA1_4()) == a11.getA7());
 447      assert(dynamic_cast<A7*>(a11.getA1_6()) == a11.getA7());
 448      assert(dynamic_cast<A7*>(a11.getA1_9()) == a11.getA7());
 449      assert(dynamic_cast<A7*>(a11.getA2()) == a11.getA7());
 450      assert(dynamic_cast<A7*>(a11.getA3()) == a11.getA7());
 451      assert(dynamic_cast<A7*>(a11.getA4()) == a11.getA7());
 452      assert(dynamic_cast<A7*>(a11.getA5()) == a11.getA7());
 453      assert(dynamic_cast<A7*>(a11.getA6()) == a11.getA7());
 454  
 455      assert(dynamic_cast<A8*>(a11.getA1_3()) == a11.getA8());
 456      assert(dynamic_cast<A8*>(a11.getA1_4()) == a11.getA8());
 457      assert(dynamic_cast<A8*>(a11.getA1_6()) == a11.getA8());
 458      assert(dynamic_cast<A8*>(a11.getA1_9()) == a11.getA8());
 459      assert(dynamic_cast<A8*>(a11.getA2()) == a11.getA8());
 460      assert(dynamic_cast<A8*>(a11.getA3()) == a11.getA8());
 461      assert(dynamic_cast<A8*>(a11.getA4()) == a11.getA8());
 462      assert(dynamic_cast<A8*>(a11.getA5()) == a11.getA8());
 463      assert(dynamic_cast<A8*>(a11.getA6()) == a11.getA8());
 464      assert(dynamic_cast<A8*>(a11.getA7()) == a11.getA8());
 465  
 466      assert(dynamic_cast<A9*>(a11.getA1_3()) == a11.getA9());
 467      assert(dynamic_cast<A9*>(a11.getA1_4()) == a11.getA9());
 468      assert(dynamic_cast<A9*>(a11.getA1_6()) == a11.getA9());
 469      assert(dynamic_cast<A9*>(a11.getA1_9()) == a11.getA9());
 470      assert(dynamic_cast<A9*>(a11.getA2()) == a11.getA9());
 471      assert(dynamic_cast<A9*>(a11.getA3()) == a11.getA9());
 472      assert(dynamic_cast<A9*>(a11.getA4()) == a11.getA9());
 473      assert(dynamic_cast<A9*>(a11.getA5()) == a11.getA9());
 474      assert(dynamic_cast<A9*>(a11.getA6()) == a11.getA9());
 475      assert(dynamic_cast<A9*>(a11.getA7()) == a11.getA9());
 476      assert(dynamic_cast<A9*>(a11.getA8()) == a11.getA9());
 477  
 478      assert(dynamic_cast<A10*>(a11.getA1_3()) == 0);
 479      assert(dynamic_cast<A10*>(a11.getA1_4()) == 0);
 480      assert(dynamic_cast<A10*>(a11.getA1_6()) == 0);
 481      assert(dynamic_cast<A10*>(a11.getA1_9()) == 0);
 482      assert(dynamic_cast<A10*>(a11.getA2()) == 0);
 483      assert(dynamic_cast<A10*>(a11.getA3()) == 0);
 484      assert(dynamic_cast<A10*>(a11.getA4()) == 0);
 485      assert(dynamic_cast<A10*>(a11.getA5()) == 0);
 486      assert(dynamic_cast<A10*>(a11.getA6()) == 0);
 487      assert(dynamic_cast<A10*>(a11.getA7()) == 0);
 488      assert(dynamic_cast<A10*>(a11.getA8()) == 0);
 489      assert(dynamic_cast<A10*>(a11.getA9()) == 0);
 490  
 491      assert(dynamic_cast<A11*>(a11.getA1_3()) == a11.getA11());
 492      assert(dynamic_cast<A11*>(a11.getA1_4()) == a11.getA11());
 493      assert(dynamic_cast<A11*>(a11.getA1_6()) == a11.getA11());
 494      assert(dynamic_cast<A11*>(a11.getA1_9()) == a11.getA11());
 495      assert(dynamic_cast<A11*>(a11.getA2()) == a11.getA11());
 496      assert(dynamic_cast<A11*>(a11.getA3()) == a11.getA11());
 497      assert(dynamic_cast<A11*>(a11.getA4()) == a11.getA11());
 498      assert(dynamic_cast<A11*>(a11.getA5()) == a11.getA11());
 499      assert(dynamic_cast<A11*>(a11.getA6()) == a11.getA11());
 500      assert(dynamic_cast<A11*>(a11.getA7()) == a11.getA11());
 501      assert(dynamic_cast<A11*>(a11.getA8()) == a11.getA11());
 502      assert(dynamic_cast<A11*>(a11.getA9()) == a11.getA11());
 503  
 504      assert(dynamic_cast<A3*>(a12.getA1_3()) == a12.getA3());
 505      assert(dynamic_cast<A3*>(a12.getA1_4()) == a12.getA3());
 506      assert(dynamic_cast<A3*>(a12.getA1_6()) == a12.getA3());
 507      assert(dynamic_cast<A3*>(a12.getA1_9()) == a12.getA3());
 508      assert(dynamic_cast<A3*>(a12.getA2()) == a12.getA3());
 509  
 510      assert(dynamic_cast<A4*>(a12.getA1_3()) == a12.getA4());
 511      assert(dynamic_cast<A4*>(a12.getA1_4()) == a12.getA4());
 512      assert(dynamic_cast<A4*>(a12.getA1_6()) == a12.getA4());
 513      assert(dynamic_cast<A4*>(a12.getA1_9()) == a12.getA4());
 514      assert(dynamic_cast<A4*>(a12.getA2()) == a12.getA4());
 515      assert(dynamic_cast<A4*>(a12.getA3()) == a12.getA4());
 516  
 517      assert(dynamic_cast<A5*>(a12.getA1_3()) == a12.getA5());
 518      assert(dynamic_cast<A5*>(a12.getA1_4()) == a12.getA5());
 519      assert(dynamic_cast<A5*>(a12.getA1_6()) == a12.getA5());
 520      assert(dynamic_cast<A5*>(a12.getA1_9()) == a12.getA5());
 521      assert(dynamic_cast<A5*>(a12.getA2()) == a12.getA5());
 522      assert(dynamic_cast<A5*>(a12.getA3()) == a12.getA5());
 523      assert(dynamic_cast<A5*>(a12.getA4()) == a12.getA5());
 524  
 525      assert(dynamic_cast<A6*>(a12.getA1_3()) == a12.getA6());
 526      assert(dynamic_cast<A6*>(a12.getA1_4()) == a12.getA6());
 527      assert(dynamic_cast<A6*>(a12.getA1_6()) == a12.getA6());
 528      assert(dynamic_cast<A6*>(a12.getA1_9()) == a12.getA6());
 529      assert(dynamic_cast<A6*>(a12.getA2()) == a12.getA6());
 530      assert(dynamic_cast<A6*>(a12.getA3()) == a12.getA6());
 531      assert(dynamic_cast<A6*>(a12.getA4()) == a12.getA6());
 532      assert(dynamic_cast<A6*>(a12.getA5()) == a12.getA6());
 533  
 534      assert(dynamic_cast<A7*>(a12.getA1_3()) == a12.getA7());
 535      assert(dynamic_cast<A7*>(a12.getA1_4()) == a12.getA7());
 536      assert(dynamic_cast<A7*>(a12.getA1_6()) == a12.getA7());
 537      assert(dynamic_cast<A7*>(a12.getA1_9()) == a12.getA7());
 538      assert(dynamic_cast<A7*>(a12.getA2()) == a12.getA7());
 539      assert(dynamic_cast<A7*>(a12.getA3()) == a12.getA7());
 540      assert(dynamic_cast<A7*>(a12.getA4()) == a12.getA7());
 541      assert(dynamic_cast<A7*>(a12.getA5()) == a12.getA7());
 542      assert(dynamic_cast<A7*>(a12.getA6()) == a12.getA7());
 543  
 544      assert(dynamic_cast<A8*>(a12.getA1_3()) == a12.getA8());
 545      assert(dynamic_cast<A8*>(a12.getA1_4()) == a12.getA8());
 546      assert(dynamic_cast<A8*>(a12.getA1_6()) == a12.getA8());
 547      assert(dynamic_cast<A8*>(a12.getA1_9()) == a12.getA8());
 548      assert(dynamic_cast<A8*>(a12.getA2()) == a12.getA8());
 549      assert(dynamic_cast<A8*>(a12.getA3()) == a12.getA8());
 550      assert(dynamic_cast<A8*>(a12.getA4()) == a12.getA8());
 551      assert(dynamic_cast<A8*>(a12.getA5()) == a12.getA8());
 552      assert(dynamic_cast<A8*>(a12.getA6()) == a12.getA8());
 553      assert(dynamic_cast<A8*>(a12.getA7()) == a12.getA8());
 554  
 555      assert(dynamic_cast<A9*>(a12.getA1_3()) == a12.getA9());
 556      assert(dynamic_cast<A9*>(a12.getA1_4()) == a12.getA9());
 557      assert(dynamic_cast<A9*>(a12.getA1_6()) == a12.getA9());
 558      assert(dynamic_cast<A9*>(a12.getA1_9()) == a12.getA9());
 559      assert(dynamic_cast<A9*>(a12.getA2()) == a12.getA9());
 560      assert(dynamic_cast<A9*>(a12.getA3()) == a12.getA9());
 561      assert(dynamic_cast<A9*>(a12.getA4()) == a12.getA9());
 562      assert(dynamic_cast<A9*>(a12.getA5()) == a12.getA9());
 563      assert(dynamic_cast<A9*>(a12.getA6()) == a12.getA9());
 564      assert(dynamic_cast<A9*>(a12.getA7()) == a12.getA9());
 565      assert(dynamic_cast<A9*>(a12.getA8()) == a12.getA9());
 566  
 567      assert(dynamic_cast<A10*>(a12.getA1_3()) == a12.getA10());
 568      assert(dynamic_cast<A10*>(a12.getA1_4()) == a12.getA10());
 569      assert(dynamic_cast<A10*>(a12.getA1_6()) == a12.getA10());
 570      assert(dynamic_cast<A10*>(a12.getA1_9()) == a12.getA10());
 571      assert(dynamic_cast<A10*>(a12.getA2()) == a12.getA10());
 572      assert(dynamic_cast<A10*>(a12.getA3()) == a12.getA10());
 573      assert(dynamic_cast<A10*>(a12.getA4()) == a12.getA10());
 574      assert(dynamic_cast<A10*>(a12.getA5()) == a12.getA10());
 575      assert(dynamic_cast<A10*>(a12.getA6()) == a12.getA10());
 576      assert(dynamic_cast<A10*>(a12.getA7()) == a12.getA10());
 577      assert(dynamic_cast<A10*>(a12.getA8()) == a12.getA10());
 578      assert(dynamic_cast<A10*>(a12.getA9()) == a12.getA10());
 579  
 580      assert(dynamic_cast<A11*>(a12.getA1_3()) == a12.getA11());
 581      assert(dynamic_cast<A11*>(a12.getA1_4()) == a12.getA11());
 582      assert(dynamic_cast<A11*>(a12.getA1_6()) == a12.getA11());
 583      assert(dynamic_cast<A11*>(a12.getA1_9()) == a12.getA11());
 584      assert(dynamic_cast<A11*>(a12.getA2()) == a12.getA11());
 585      assert(dynamic_cast<A11*>(a12.getA3()) == a12.getA11());
 586      assert(dynamic_cast<A11*>(a12.getA4()) == a12.getA11());
 587      assert(dynamic_cast<A11*>(a12.getA5()) == a12.getA11());
 588      assert(dynamic_cast<A11*>(a12.getA6()) == a12.getA11());
 589      assert(dynamic_cast<A11*>(a12.getA7()) == a12.getA11());
 590      assert(dynamic_cast<A11*>(a12.getA8()) == a12.getA11());
 591      assert(dynamic_cast<A11*>(a12.getA9()) == a12.getA11());
 592      assert(dynamic_cast<A11*>(a12.getA10()) == a12.getA11());
 593  
 594      assert(dynamic_cast<A12*>(a12.getA1_3()) == a12.getA12());
 595      assert(dynamic_cast<A12*>(a12.getA1_4()) == a12.getA12());
 596      assert(dynamic_cast<A12*>(a12.getA1_6()) == a12.getA12());
 597      assert(dynamic_cast<A12*>(a12.getA1_9()) == a12.getA12());
 598      assert(dynamic_cast<A12*>(a12.getA2()) == a12.getA12());
 599      assert(dynamic_cast<A12*>(a12.getA3()) == a12.getA12());
 600      assert(dynamic_cast<A12*>(a12.getA4()) == a12.getA12());
 601      assert(dynamic_cast<A12*>(a12.getA5()) == a12.getA12());
 602      assert(dynamic_cast<A12*>(a12.getA6()) == a12.getA12());
 603      assert(dynamic_cast<A12*>(a12.getA7()) == a12.getA12());
 604      assert(dynamic_cast<A12*>(a12.getA8()) == a12.getA12());
 605      assert(dynamic_cast<A12*>(a12.getA9()) == a12.getA12());
 606      assert(dynamic_cast<A12*>(a12.getA10()) == a12.getA12());
 607      assert(dynamic_cast<A12*>(a12.getA11()) == a12.getA12());
 608  
 609      assert(dynamic_cast<A3*>(a13.getA1_3()) == a13.getA3());
 610      assert(dynamic_cast<A3*>(a13.getA1_4()) == a13.getA3());
 611      assert(dynamic_cast<A3*>(a13.getA1_6()) == a13.getA3());
 612      assert(dynamic_cast<A3*>(a13.getA1_9()) == a13.getA3());
 613      assert(dynamic_cast<A3*>(a13.getA2()) == a13.getA3());
 614  
 615      assert(dynamic_cast<A4*>(a13.getA1_3()) == a13.getA4());
 616      assert(dynamic_cast<A4*>(a13.getA1_4()) == a13.getA4());
 617      assert(dynamic_cast<A4*>(a13.getA1_6()) == a13.getA4());
 618      assert(dynamic_cast<A4*>(a13.getA1_9()) == a13.getA4());
 619      assert(dynamic_cast<A4*>(a13.getA2()) == a13.getA4());
 620      assert(dynamic_cast<A4*>(a13.getA3()) == a13.getA4());
 621  
 622      assert(dynamic_cast<A5*>(a13.getA1_3()) == a13.getA5());
 623      assert(dynamic_cast<A5*>(a13.getA1_4()) == a13.getA5());
 624      assert(dynamic_cast<A5*>(a13.getA1_6()) == a13.getA5());
 625      assert(dynamic_cast<A5*>(a13.getA1_9()) == a13.getA5());
 626      assert(dynamic_cast<A5*>(a13.getA2()) == a13.getA5());
 627      assert(dynamic_cast<A5*>(a13.getA3()) == a13.getA5());
 628      assert(dynamic_cast<A5*>(a13.getA4()) == a13.getA5());
 629  
 630      assert(dynamic_cast<A6*>(a13.getA1_3()) == a13.getA6());
 631      assert(dynamic_cast<A6*>(a13.getA1_4()) == a13.getA6());
 632      assert(dynamic_cast<A6*>(a13.getA1_6()) == a13.getA6());
 633      assert(dynamic_cast<A6*>(a13.getA1_9()) == a13.getA6());
 634      assert(dynamic_cast<A6*>(a13.getA2()) == a13.getA6());
 635      assert(dynamic_cast<A6*>(a13.getA3()) == a13.getA6());
 636      assert(dynamic_cast<A6*>(a13.getA4()) == a13.getA6());
 637      assert(dynamic_cast<A6*>(a13.getA5()) == a13.getA6());
 638  
 639      assert(dynamic_cast<A7*>(a13.getA1_3()) == a13.getA7());
 640      assert(dynamic_cast<A7*>(a13.getA1_4()) == a13.getA7());
 641      assert(dynamic_cast<A7*>(a13.getA1_6()) == a13.getA7());
 642      assert(dynamic_cast<A7*>(a13.getA1_9()) == a13.getA7());
 643      assert(dynamic_cast<A7*>(a13.getA2()) == a13.getA7());
 644      assert(dynamic_cast<A7*>(a13.getA3()) == a13.getA7());
 645      assert(dynamic_cast<A7*>(a13.getA4()) == a13.getA7());
 646      assert(dynamic_cast<A7*>(a13.getA5()) == a13.getA7());
 647      assert(dynamic_cast<A7*>(a13.getA6()) == a13.getA7());
 648  
 649      assert(dynamic_cast<A8*>(a13.getA1_3()) == a13.getA8());
 650      assert(dynamic_cast<A8*>(a13.getA1_4()) == a13.getA8());
 651      assert(dynamic_cast<A8*>(a13.getA1_6()) == a13.getA8());
 652      assert(dynamic_cast<A8*>(a13.getA1_9()) == a13.getA8());
 653      assert(dynamic_cast<A8*>(a13.getA2()) == a13.getA8());
 654      assert(dynamic_cast<A8*>(a13.getA3()) == a13.getA8());
 655      assert(dynamic_cast<A8*>(a13.getA4()) == a13.getA8());
 656      assert(dynamic_cast<A8*>(a13.getA5()) == a13.getA8());
 657      assert(dynamic_cast<A8*>(a13.getA6()) == a13.getA8());
 658      assert(dynamic_cast<A8*>(a13.getA7()) == a13.getA8());
 659  
 660      assert(dynamic_cast<A9*>(a13.getA1_3()) == a13.getA9());
 661      assert(dynamic_cast<A9*>(a13.getA1_4()) == a13.getA9());
 662      assert(dynamic_cast<A9*>(a13.getA1_6()) == a13.getA9());
 663      assert(dynamic_cast<A9*>(a13.getA1_9()) == a13.getA9());
 664      assert(dynamic_cast<A9*>(a13.getA2()) == a13.getA9());
 665      assert(dynamic_cast<A9*>(a13.getA3()) == a13.getA9());
 666      assert(dynamic_cast<A9*>(a13.getA4()) == a13.getA9());
 667      assert(dynamic_cast<A9*>(a13.getA5()) == a13.getA9());
 668      assert(dynamic_cast<A9*>(a13.getA6()) == a13.getA9());
 669      assert(dynamic_cast<A9*>(a13.getA7()) == a13.getA9());
 670      assert(dynamic_cast<A9*>(a13.getA8()) == a13.getA9());
 671  
 672      assert(dynamic_cast<A10*>(a13.getA1_3()) == a13.getA10());
 673      assert(dynamic_cast<A10*>(a13.getA1_4()) == a13.getA10());
 674      assert(dynamic_cast<A10*>(a13.getA1_6()) == a13.getA10());
 675      assert(dynamic_cast<A10*>(a13.getA1_9()) == a13.getA10());
 676      assert(dynamic_cast<A10*>(a13.getA2()) == a13.getA10());
 677      assert(dynamic_cast<A10*>(a13.getA3()) == a13.getA10());
 678      assert(dynamic_cast<A10*>(a13.getA4()) == a13.getA10());
 679      assert(dynamic_cast<A10*>(a13.getA5()) == a13.getA10());
 680      assert(dynamic_cast<A10*>(a13.getA6()) == a13.getA10());
 681      assert(dynamic_cast<A10*>(a13.getA7()) == a13.getA10());
 682      assert(dynamic_cast<A10*>(a13.getA8()) == a13.getA10());
 683      assert(dynamic_cast<A10*>(a13.getA9()) == a13.getA10());
 684  
 685      assert(dynamic_cast<A11*>(a13.getA1_3()) == a13.getA11());
 686      assert(dynamic_cast<A11*>(a13.getA1_4()) == a13.getA11());
 687      assert(dynamic_cast<A11*>(a13.getA1_6()) == a13.getA11());
 688      assert(dynamic_cast<A11*>(a13.getA1_9()) == a13.getA11());
 689      assert(dynamic_cast<A11*>(a13.getA2()) == a13.getA11());
 690      assert(dynamic_cast<A11*>(a13.getA3()) == a13.getA11());
 691      assert(dynamic_cast<A11*>(a13.getA4()) == a13.getA11());
 692      assert(dynamic_cast<A11*>(a13.getA5()) == a13.getA11());
 693      assert(dynamic_cast<A11*>(a13.getA6()) == a13.getA11());
 694      assert(dynamic_cast<A11*>(a13.getA7()) == a13.getA11());
 695      assert(dynamic_cast<A11*>(a13.getA8()) == a13.getA11());
 696      assert(dynamic_cast<A11*>(a13.getA9()) == a13.getA11());
 697      assert(dynamic_cast<A11*>(a13.getA10()) == a13.getA11());
 698  
 699      assert(dynamic_cast<A12*>(a13.getA1_3()) == a13.getA12());
 700      assert(dynamic_cast<A12*>(a13.getA1_4()) == a13.getA12());
 701      assert(dynamic_cast<A12*>(a13.getA1_6()) == a13.getA12());
 702      assert(dynamic_cast<A12*>(a13.getA1_9()) == a13.getA12());
 703      assert(dynamic_cast<A12*>(a13.getA2()) == a13.getA12());
 704      assert(dynamic_cast<A12*>(a13.getA3()) == a13.getA12());
 705      assert(dynamic_cast<A12*>(a13.getA4()) == a13.getA12());
 706      assert(dynamic_cast<A12*>(a13.getA5()) == a13.getA12());
 707      assert(dynamic_cast<A12*>(a13.getA6()) == a13.getA12());
 708      assert(dynamic_cast<A12*>(a13.getA7()) == a13.getA12());
 709      assert(dynamic_cast<A12*>(a13.getA8()) == a13.getA12());
 710      assert(dynamic_cast<A12*>(a13.getA9()) == a13.getA12());
 711      assert(dynamic_cast<A12*>(a13.getA10()) == a13.getA12());
 712      assert(dynamic_cast<A12*>(a13.getA11()) == a13.getA12());
 713  
 714      assert(dynamic_cast<A13*>(a13.getA1_3()) == a13.getA13());
 715      assert(dynamic_cast<A13*>(a13.getA1_4()) == a13.getA13());
 716      assert(dynamic_cast<A13*>(a13.getA1_6()) == a13.getA13());
 717      assert(dynamic_cast<A13*>(a13.getA1_9()) == a13.getA13());
 718      assert(dynamic_cast<A13*>(a13.getA2()) == a13.getA13());
 719      assert(dynamic_cast<A13*>(a13.getA3()) == a13.getA13());
 720      assert(dynamic_cast<A13*>(a13.getA4()) == a13.getA13());
 721      assert(dynamic_cast<A13*>(a13.getA5()) == a13.getA13());
 722      assert(dynamic_cast<A13*>(a13.getA6()) == a13.getA13());
 723      assert(dynamic_cast<A13*>(a13.getA7()) == a13.getA13());
 724      assert(dynamic_cast<A13*>(a13.getA8()) == a13.getA13());
 725      assert(dynamic_cast<A13*>(a13.getA9()) == a13.getA13());
 726      assert(dynamic_cast<A13*>(a13.getA10()) == a13.getA13());
 727      assert(dynamic_cast<A13*>(a13.getA11()) == a13.getA13());
 728      assert(dynamic_cast<A13*>(a13.getA12()) == a13.getA13());
 729  }
 730  
 731  }  // t1
 732  
 733  namespace t2
 734  {
 735  
 736  struct A1
 737  {
 738      char _[43981];
 739      virtual ~A1() {}
 740  
 741      A1* getA1() {return this;}
 742  };
 743  
 744  struct A2
 745  {
 746      char _[34981];
 747      virtual ~A2() {}
 748  
 749      A2* getA2() {return this;}
 750  };
 751  
 752  struct A3
 753      : protected A1,
 754        public virtual A2
 755  {
 756      char _[93481];
 757      virtual ~A3() {}
 758  
 759      A1* getA1_3() {return A1::getA1();}
 760      A2* getA2() {return A2::getA2();}
 761      A3* getA3() {return this;}
 762  };
 763  
 764  struct A4
 765      : public virtual A2,
 766        public A1
 767  {
 768      char _[13489];
 769      virtual ~A4() {}
 770  
 771      A1* getA1_4() {return A1::getA1();}
 772      A2* getA2() {return A2::getA2();}
 773      A4* getA4() {return this;}
 774  };
 775  
 776  struct A5
 777      : public A3,
 778        public A4
 779  {
 780      char _[13489];
 781      virtual ~A5() {}
 782  
 783      A1* getA1_3() {return A3::getA1();}
 784      A1* getA1_4() {return A4::getA1();}
 785      A2* getA2() {return A3::getA2();}
 786      A3* getA3() {return A3::getA3();}
 787      A4* getA4() {return A4::getA4();}
 788      A5* getA5() {return this;}
 789  };
 790  
 791  struct A6
 792      : public A1
 793  {
 794      char _[81349];
 795      virtual ~A6() {}
 796  
 797      A1* getA1_6() {return A1::getA1();}
 798      A6* getA6() {return this;}
 799  };
 800  
 801  struct A7
 802      : public A5,
 803        public A6
 804  {
 805      char _[34819];
 806      virtual ~A7() {}
 807  
 808      A1* getA1_3() {return A5::getA1_3();}
 809      A1* getA1_4() {return A5::getA1_4();}
 810      A1* getA1_6() {return A6::getA1_6();}
 811      A2* getA2() {return A5::getA2();}
 812      A3* getA3() {return A5::getA3();}
 813      A4* getA4() {return A5::getA4();}
 814      A5* getA5() {return A5::getA5();}
 815      A6* getA6() {return A6::getA6();}
 816      A7* getA7() {return this;}
 817  };
 818  
 819  struct A8
 820      : public A7
 821  {
 822      char _[3489];
 823      virtual ~A8() {}
 824  
 825      A1* getA1_3() {return A7::getA1_3();}
 826      A1* getA1_4() {return A7::getA1_4();}
 827      A1* getA1_6() {return A7::getA1_6();}
 828      A2* getA2() {return A7::getA2();}
 829      A3* getA3() {return A7::getA3();}
 830      A4* getA4() {return A7::getA4();}
 831      A5* getA5() {return A7::getA5();}
 832      A6* getA6() {return A7::getA6();}
 833      A7* getA7() {return A7::getA7();}
 834      A8* getA8() {return this;}
 835  };
 836  
 837  struct A9
 838      : public A1
 839  {
 840      char _[3481];
 841      virtual ~A9() {}
 842  
 843      A1* getA1_9() {return A1::getA1();}
 844      A9* getA9() {return this;}
 845  };
 846  
 847  struct A10
 848      : public virtual A8
 849  {
 850      char _[4831];
 851      virtual ~A10() {}
 852  
 853      A1* getA1_3() {return A8::getA1_3();}
 854      A1* getA1_4() {return A8::getA1_4();}
 855      A1* getA1_6() {return A8::getA1_6();}
 856      A2* getA2() {return A8::getA2();}
 857      A3* getA3() {return A8::getA3();}
 858      A4* getA4() {return A8::getA4();}
 859      A5* getA5() {return A8::getA5();}
 860      A6* getA6() {return A8::getA6();}
 861      A7* getA7() {return A8::getA7();}
 862      A8* getA8() {return A8::getA8();}
 863      A10* getA10() {return this;}
 864  };
 865  
 866  struct A11
 867      : public virtual A8,
 868        public A9
 869  {
 870      char _[6483];
 871      virtual ~A11() {}
 872  
 873      A1* getA1_3() {return A8::getA1_3();}
 874      A1* getA1_4() {return A8::getA1_4();}
 875      A1* getA1_6() {return A8::getA1_6();}
 876      A1* getA1_9() {return A9::getA1_9();}
 877      A2* getA2() {return A8::getA2();}
 878      A3* getA3() {return A8::getA3();}
 879      A4* getA4() {return A8::getA4();}
 880      A5* getA5() {return A8::getA5();}
 881      A6* getA6() {return A8::getA6();}
 882      A7* getA7() {return A8::getA7();}
 883      A8* getA8() {return A8::getA8();}
 884      A9* getA9() {return A9::getA9();}
 885      A11* getA11() {return this;}
 886  };
 887  
 888  struct A12
 889      : public A10,
 890        public A11
 891  {
 892      char _[2283];
 893      virtual ~A12() {}
 894  
 895      A1* getA1_3() {return A10::getA1_3();}
 896      A1* getA1_4() {return A10::getA1_4();}
 897      A1* getA1_6() {return A10::getA1_6();}
 898      A1* getA1_9() {return A11::getA1_9();}
 899      A2* getA2() {return A10::getA2();}
 900      A3* getA3() {return A10::getA3();}
 901      A4* getA4() {return A10::getA4();}
 902      A5* getA5() {return A10::getA5();}
 903      A6* getA6() {return A10::getA6();}
 904      A7* getA7() {return A10::getA7();}
 905      A8* getA8() {return A10::getA8();}
 906      A9* getA9() {return A11::getA9();}
 907      A10* getA10() {return A10::getA10();}
 908      A11* getA11() {return A11::getA11();}
 909      A12* getA12() {return this;}
 910  };
 911  
 912  struct A13
 913      : public A12
 914  {
 915      char _[1283];
 916      virtual ~A13() {}
 917  
 918      A1* getA1_3() {return A12::getA1_3();}
 919      A1* getA1_4() {return A12::getA1_4();}
 920      A1* getA1_6() {return A12::getA1_6();}
 921      A1* getA1_9() {return A12::getA1_9();}
 922      A2* getA2() {return A12::getA2();}
 923      A3* getA3() {return A12::getA3();}
 924      A4* getA4() {return A12::getA4();}
 925      A5* getA5() {return A12::getA5();}
 926      A6* getA6() {return A12::getA6();}
 927      A7* getA7() {return A12::getA7();}
 928      A8* getA8() {return A12::getA8();}
 929      A9* getA9() {return A12::getA9();}
 930      A10* getA10() {return A12::getA10();}
 931      A11* getA11() {return A12::getA11();}
 932      A12* getA12() {return A12::getA12();}
 933      A13* getA13() {return this;}
 934  };
 935  
 936  A3 a3;
 937  A4 a4;
 938  A5 a5;
 939  A6 a6;
 940  A7 a7;
 941  A8 a8;
 942  A9 a9;
 943  A10 a10;
 944  A11 a11;
 945  A12 a12;
 946  A13 a13;
 947  
 948  void test()
 949  {
 950      assert(dynamic_cast<A3*>(a3.getA1_3()) == 0);
 951      assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
 952  
 953      assert(dynamic_cast<A3*>(a4.getA1_4()) == 0);
 954      assert(dynamic_cast<A3*>(a4.getA2()) == 0);
 955      assert(dynamic_cast<A4*>(a4.getA1_4()) == a4.getA4());
 956      assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4());
 957  
 958      assert(dynamic_cast<A3*>(a5.getA1_3()) == 0);
 959      assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3());
 960  
 961      assert(dynamic_cast<A4*>(a5.getA1_3()) == 0);
 962      assert(dynamic_cast<A4*>(a5.getA1_4()) == a5.getA4());
 963      assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
 964      assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
 965  
 966      assert(dynamic_cast<A5*>(a5.getA1_3()) == 0);
 967      assert(dynamic_cast<A5*>(a5.getA1_4()) == a5.getA5());
 968      assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
 969      assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
 970      assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
 971      assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5());
 972  
 973      assert(dynamic_cast<A3*>(a6.getA1_6()) == 0);
 974  
 975      assert(dynamic_cast<A4*>(a6.getA1_6()) == 0);
 976  
 977      assert(dynamic_cast<A5*>(a6.getA1_6()) == 0);
 978  
 979      assert(dynamic_cast<A6*>(a6.getA1_6()) == a6.getA6());
 980  
 981      assert(dynamic_cast<A3*>(a7.getA1_3()) == 0);
 982      assert(dynamic_cast<A3*>(a7.getA1_4()) == a7.getA3());
 983      assert(dynamic_cast<A3*>(a7.getA2()) == a7.getA3());
 984  
 985      assert(dynamic_cast<A4*>(a7.getA1_3()) == 0);
 986      assert(dynamic_cast<A4*>(a7.getA1_4()) == a7.getA4());
 987      assert(dynamic_cast<A4*>(a7.getA2()) == a7.getA4());
 988      assert(dynamic_cast<A4*>(a7.getA3()) == a7.getA4());
 989  
 990      assert(dynamic_cast<A5*>(a7.getA1_3()) == 0);
 991      assert(dynamic_cast<A5*>(a7.getA1_4()) == a7.getA5());
 992      assert(dynamic_cast<A5*>(a7.getA2()) == a7.getA5());
 993      assert(dynamic_cast<A5*>(a7.getA3()) == a7.getA5());
 994      assert(dynamic_cast<A5*>(a7.getA4()) == a7.getA5());
 995  
 996      assert(dynamic_cast<A6*>(a7.getA1_3()) == 0);
 997      assert(dynamic_cast<A6*>(a7.getA1_4()) == a7.getA6());
 998      assert(dynamic_cast<A6*>(a7.getA1_6()) == a7.getA6());
 999      assert(dynamic_cast<A6*>(a7.getA2()) == a7.getA6());
1000      assert(dynamic_cast<A6*>(a7.getA3()) == a7.getA6());
1001      assert(dynamic_cast<A6*>(a7.getA4()) == a7.getA6());
1002      assert(dynamic_cast<A6*>(a7.getA5()) == a7.getA6());
1003  
1004      assert(dynamic_cast<A7*>(a7.getA1_3()) == 0);
1005      assert(dynamic_cast<A7*>(a7.getA1_4()) == a7.getA7());
1006      assert(dynamic_cast<A7*>(a7.getA1_6()) == a7.getA7());
1007      assert(dynamic_cast<A7*>(a7.getA2()) == a7.getA7());
1008      assert(dynamic_cast<A7*>(a7.getA3()) == a7.getA7());
1009      assert(dynamic_cast<A7*>(a7.getA4()) == a7.getA7());
1010      assert(dynamic_cast<A7*>(a7.getA5()) == a7.getA7());
1011      assert(dynamic_cast<A7*>(a7.getA6()) == a7.getA7());
1012  
1013      assert(dynamic_cast<A3*>(a8.getA1_3()) == 0);
1014      assert(dynamic_cast<A3*>(a8.getA1_4()) == a8.getA3());
1015      assert(dynamic_cast<A3*>(a8.getA2()) == a8.getA3());
1016  
1017      assert(dynamic_cast<A4*>(a8.getA1_3()) == 0);
1018      assert(dynamic_cast<A4*>(a8.getA1_4()) == a8.getA4());
1019      assert(dynamic_cast<A4*>(a8.getA2()) == a8.getA4());
1020      assert(dynamic_cast<A4*>(a8.getA3()) == a8.getA4());
1021  
1022      assert(dynamic_cast<A5*>(a8.getA1_3()) == 0);
1023      assert(dynamic_cast<A5*>(a8.getA1_4()) == a8.getA5());
1024      assert(dynamic_cast<A5*>(a8.getA2()) == a8.getA5());
1025      assert(dynamic_cast<A5*>(a8.getA3()) == a8.getA5());
1026      assert(dynamic_cast<A5*>(a8.getA4()) == a8.getA5());
1027  
1028      assert(dynamic_cast<A6*>(a8.getA1_3()) == 0);
1029      assert(dynamic_cast<A6*>(a8.getA1_4()) == a8.getA6());
1030      assert(dynamic_cast<A6*>(a8.getA1_6()) == a8.getA6());
1031      assert(dynamic_cast<A6*>(a8.getA2()) == a8.getA6());
1032      assert(dynamic_cast<A6*>(a8.getA3()) == a8.getA6());
1033      assert(dynamic_cast<A6*>(a8.getA4()) == a8.getA6());
1034      assert(dynamic_cast<A6*>(a8.getA5()) == a8.getA6());
1035  
1036      assert(dynamic_cast<A7*>(a8.getA1_3()) == 0);
1037      assert(dynamic_cast<A7*>(a8.getA1_4()) == a8.getA7());
1038      assert(dynamic_cast<A7*>(a8.getA1_6()) == a8.getA7());
1039      assert(dynamic_cast<A7*>(a8.getA2()) == a8.getA7());
1040      assert(dynamic_cast<A7*>(a8.getA3()) == a8.getA7());
1041      assert(dynamic_cast<A7*>(a8.getA4()) == a8.getA7());
1042      assert(dynamic_cast<A7*>(a8.getA5()) == a8.getA7());
1043      assert(dynamic_cast<A7*>(a8.getA6()) == a8.getA7());
1044  
1045      assert(dynamic_cast<A8*>(a8.getA1_3()) == 0);
1046      assert(dynamic_cast<A8*>(a8.getA1_4()) == a8.getA8());
1047      assert(dynamic_cast<A8*>(a8.getA1_6()) == a8.getA8());
1048      assert(dynamic_cast<A8*>(a8.getA2()) == a8.getA8());
1049      assert(dynamic_cast<A8*>(a8.getA3()) == a8.getA8());
1050      assert(dynamic_cast<A8*>(a8.getA4()) == a8.getA8());
1051      assert(dynamic_cast<A8*>(a8.getA5()) == a8.getA8());
1052      assert(dynamic_cast<A8*>(a8.getA6()) == a8.getA8());
1053      assert(dynamic_cast<A8*>(a8.getA7()) == a8.getA8());
1054  
1055      assert(dynamic_cast<A3*>(a9.getA1_9()) == 0);
1056  
1057      assert(dynamic_cast<A4*>(a9.getA1_9()) == 0);
1058  
1059      assert(dynamic_cast<A5*>(a9.getA1_9()) == 0);
1060  
1061      assert(dynamic_cast<A6*>(a9.getA1_9()) == 0);
1062  
1063      assert(dynamic_cast<A7*>(a9.getA1_9()) == 0);
1064  
1065      assert(dynamic_cast<A8*>(a9.getA1_9()) == 0);
1066  
1067      assert(dynamic_cast<A9*>(a9.getA1_9()) == a9.getA9());
1068  
1069      assert(dynamic_cast<A3*>(a10.getA1_3()) == 0);
1070      assert(dynamic_cast<A3*>(a10.getA1_4()) == a10.getA3());
1071      assert(dynamic_cast<A3*>(a10.getA1_6()) == a10.getA3());
1072      assert(dynamic_cast<A3*>(a10.getA2()) == a10.getA3());
1073  
1074      assert(dynamic_cast<A4*>(a10.getA1_3()) == 0);
1075      assert(dynamic_cast<A4*>(a10.getA1_4()) == a10.getA4());
1076      assert(dynamic_cast<A4*>(a10.getA1_6()) == a10.getA4());
1077      assert(dynamic_cast<A4*>(a10.getA2()) == a10.getA4());
1078      assert(dynamic_cast<A4*>(a10.getA3()) == a10.getA4());
1079  
1080      assert(dynamic_cast<A5*>(a10.getA1_3()) == 0);
1081      assert(dynamic_cast<A5*>(a10.getA1_4()) == a10.getA5());
1082      assert(dynamic_cast<A5*>(a10.getA1_6()) == a10.getA5());
1083      assert(dynamic_cast<A5*>(a10.getA2()) == a10.getA5());
1084      assert(dynamic_cast<A5*>(a10.getA3()) == a10.getA5());
1085      assert(dynamic_cast<A5*>(a10.getA4()) == a10.getA5());
1086  
1087      assert(dynamic_cast<A6*>(a10.getA1_3()) == 0);
1088      assert(dynamic_cast<A6*>(a10.getA1_4()) == a10.getA6());
1089      assert(dynamic_cast<A6*>(a10.getA1_6()) == a10.getA6());
1090      assert(dynamic_cast<A6*>(a10.getA2()) == a10.getA6());
1091      assert(dynamic_cast<A6*>(a10.getA3()) == a10.getA6());
1092      assert(dynamic_cast<A6*>(a10.getA4()) == a10.getA6());
1093      assert(dynamic_cast<A6*>(a10.getA5()) == a10.getA6());
1094  
1095      assert(dynamic_cast<A7*>(a10.getA1_3()) == 0);
1096      assert(dynamic_cast<A7*>(a10.getA1_4()) == a10.getA7());
1097      assert(dynamic_cast<A7*>(a10.getA1_6()) == a10.getA7());
1098      assert(dynamic_cast<A7*>(a10.getA2()) == a10.getA7());
1099      assert(dynamic_cast<A7*>(a10.getA3()) == a10.getA7());
1100      assert(dynamic_cast<A7*>(a10.getA4()) == a10.getA7());
1101      assert(dynamic_cast<A7*>(a10.getA5()) == a10.getA7());
1102      assert(dynamic_cast<A7*>(a10.getA6()) == a10.getA7());
1103  
1104      assert(dynamic_cast<A8*>(a10.getA1_3()) == 0);
1105      assert(dynamic_cast<A8*>(a10.getA1_4()) == a10.getA8());
1106      assert(dynamic_cast<A8*>(a10.getA1_6()) == a10.getA8());
1107      assert(dynamic_cast<A8*>(a10.getA2()) == a10.getA8());
1108      assert(dynamic_cast<A8*>(a10.getA3()) == a10.getA8());
1109      assert(dynamic_cast<A8*>(a10.getA4()) == a10.getA8());
1110      assert(dynamic_cast<A8*>(a10.getA5()) == a10.getA8());
1111      assert(dynamic_cast<A8*>(a10.getA6()) == a10.getA8());
1112      assert(dynamic_cast<A8*>(a10.getA7()) == a10.getA8());
1113  
1114      assert(dynamic_cast<A9*>(a10.getA1_3()) == 0);
1115      assert(dynamic_cast<A9*>(a10.getA1_4()) == 0);
1116      assert(dynamic_cast<A9*>(a10.getA1_6()) == 0);
1117      assert(dynamic_cast<A9*>(a10.getA2()) == 0);
1118      assert(dynamic_cast<A9*>(a10.getA3()) == 0);
1119      assert(dynamic_cast<A9*>(a10.getA4()) == 0);
1120      assert(dynamic_cast<A9*>(a10.getA5()) == 0);
1121      assert(dynamic_cast<A9*>(a10.getA6()) == 0);
1122      assert(dynamic_cast<A9*>(a10.getA7()) == 0);
1123      assert(dynamic_cast<A9*>(a10.getA8()) == 0);
1124  
1125      assert(dynamic_cast<A10*>(a10.getA1_3()) == 0);
1126      assert(dynamic_cast<A10*>(a10.getA1_4()) == a10.getA10());
1127      assert(dynamic_cast<A10*>(a10.getA1_6()) == a10.getA10());
1128      assert(dynamic_cast<A10*>(a10.getA2()) == a10.getA10());
1129      assert(dynamic_cast<A10*>(a10.getA3()) == a10.getA10());
1130      assert(dynamic_cast<A10*>(a10.getA4()) == a10.getA10());
1131      assert(dynamic_cast<A10*>(a10.getA5()) == a10.getA10());
1132      assert(dynamic_cast<A10*>(a10.getA6()) == a10.getA10());
1133      assert(dynamic_cast<A10*>(a10.getA7()) == a10.getA10());
1134      assert(dynamic_cast<A10*>(a10.getA8()) == a10.getA10());
1135  
1136      assert(dynamic_cast<A3*>(a11.getA1_3()) == 0);
1137      assert(dynamic_cast<A3*>(a11.getA1_4()) == a11.getA3());
1138      assert(dynamic_cast<A3*>(a11.getA1_6()) == a11.getA3());
1139      assert(dynamic_cast<A3*>(a11.getA1_9()) == a11.getA3());
1140      assert(dynamic_cast<A3*>(a11.getA2()) == a11.getA3());
1141  
1142      assert(dynamic_cast<A4*>(a11.getA1_3()) == 0);
1143      assert(dynamic_cast<A4*>(a11.getA1_4()) == a11.getA4());
1144      assert(dynamic_cast<A4*>(a11.getA1_6()) == a11.getA4());
1145      assert(dynamic_cast<A4*>(a11.getA1_9()) == a11.getA4());
1146      assert(dynamic_cast<A4*>(a11.getA2()) == a11.getA4());
1147      assert(dynamic_cast<A4*>(a11.getA3()) == a11.getA4());
1148  
1149      assert(dynamic_cast<A5*>(a11.getA1_3()) == 0);
1150      assert(dynamic_cast<A5*>(a11.getA1_4()) == a11.getA5());
1151      assert(dynamic_cast<A5*>(a11.getA1_6()) == a11.getA5());
1152      assert(dynamic_cast<A5*>(a11.getA1_9()) == a11.getA5());
1153      assert(dynamic_cast<A5*>(a11.getA2()) == a11.getA5());
1154      assert(dynamic_cast<A5*>(a11.getA3()) == a11.getA5());
1155      assert(dynamic_cast<A5*>(a11.getA4()) == a11.getA5());
1156  
1157      assert(dynamic_cast<A6*>(a11.getA1_3()) == 0);
1158      assert(dynamic_cast<A6*>(a11.getA1_4()) == a11.getA6());
1159      assert(dynamic_cast<A6*>(a11.getA1_6()) == a11.getA6());
1160      assert(dynamic_cast<A6*>(a11.getA1_9()) == a11.getA6());
1161      assert(dynamic_cast<A6*>(a11.getA2()) == a11.getA6());
1162      assert(dynamic_cast<A6*>(a11.getA3()) == a11.getA6());
1163      assert(dynamic_cast<A6*>(a11.getA4()) == a11.getA6());
1164      assert(dynamic_cast<A6*>(a11.getA5()) == a11.getA6());
1165  
1166      assert(dynamic_cast<A7*>(a11.getA1_3()) == 0);
1167      assert(dynamic_cast<A7*>(a11.getA1_4()) == a11.getA7());
1168      assert(dynamic_cast<A7*>(a11.getA1_6()) == a11.getA7());
1169      assert(dynamic_cast<A7*>(a11.getA1_9()) == a11.getA7());
1170      assert(dynamic_cast<A7*>(a11.getA2()) == a11.getA7());
1171      assert(dynamic_cast<A7*>(a11.getA3()) == a11.getA7());
1172      assert(dynamic_cast<A7*>(a11.getA4()) == a11.getA7());
1173      assert(dynamic_cast<A7*>(a11.getA5()) == a11.getA7());
1174      assert(dynamic_cast<A7*>(a11.getA6()) == a11.getA7());
1175  
1176      assert(dynamic_cast<A8*>(a11.getA1_3()) == 0);
1177      assert(dynamic_cast<A8*>(a11.getA1_4()) == a11.getA8());
1178      assert(dynamic_cast<A8*>(a11.getA1_6()) == a11.getA8());
1179      assert(dynamic_cast<A8*>(a11.getA1_9()) == a11.getA8());
1180      assert(dynamic_cast<A8*>(a11.getA2()) == a11.getA8());
1181      assert(dynamic_cast<A8*>(a11.getA3()) == a11.getA8());
1182      assert(dynamic_cast<A8*>(a11.getA4()) == a11.getA8());
1183      assert(dynamic_cast<A8*>(a11.getA5()) == a11.getA8());
1184      assert(dynamic_cast<A8*>(a11.getA6()) == a11.getA8());
1185      assert(dynamic_cast<A8*>(a11.getA7()) == a11.getA8());
1186  
1187      assert(dynamic_cast<A9*>(a11.getA1_3()) == 0);
1188      assert(dynamic_cast<A9*>(a11.getA1_4()) == a11.getA9());
1189      assert(dynamic_cast<A9*>(a11.getA1_6()) == a11.getA9());
1190      assert(dynamic_cast<A9*>(a11.getA1_9()) == a11.getA9());
1191      assert(dynamic_cast<A9*>(a11.getA2()) == a11.getA9());
1192      assert(dynamic_cast<A9*>(a11.getA3()) == a11.getA9());
1193      assert(dynamic_cast<A9*>(a11.getA4()) == a11.getA9());
1194      assert(dynamic_cast<A9*>(a11.getA5()) == a11.getA9());
1195      assert(dynamic_cast<A9*>(a11.getA6()) == a11.getA9());
1196      assert(dynamic_cast<A9*>(a11.getA7()) == a11.getA9());
1197      assert(dynamic_cast<A9*>(a11.getA8()) == a11.getA9());
1198  
1199      assert(dynamic_cast<A10*>(a11.getA1_3()) == 0);
1200      assert(dynamic_cast<A10*>(a11.getA1_4()) == 0);
1201      assert(dynamic_cast<A10*>(a11.getA1_6()) == 0);
1202      assert(dynamic_cast<A10*>(a11.getA1_9()) == 0);
1203      assert(dynamic_cast<A10*>(a11.getA2()) == 0);
1204      assert(dynamic_cast<A10*>(a11.getA3()) == 0);
1205      assert(dynamic_cast<A10*>(a11.getA4()) == 0);
1206      assert(dynamic_cast<A10*>(a11.getA5()) == 0);
1207      assert(dynamic_cast<A10*>(a11.getA6()) == 0);
1208      assert(dynamic_cast<A10*>(a11.getA7()) == 0);
1209      assert(dynamic_cast<A10*>(a11.getA8()) == 0);
1210      assert(dynamic_cast<A10*>(a11.getA9()) == 0);
1211  
1212      assert(dynamic_cast<A11*>(a11.getA1_3()) == 0);
1213      assert(dynamic_cast<A11*>(a11.getA1_4()) == a11.getA11());
1214      assert(dynamic_cast<A11*>(a11.getA1_6()) == a11.getA11());
1215      assert(dynamic_cast<A11*>(a11.getA1_9()) == a11.getA11());
1216      assert(dynamic_cast<A11*>(a11.getA2()) == a11.getA11());
1217      assert(dynamic_cast<A11*>(a11.getA3()) == a11.getA11());
1218      assert(dynamic_cast<A11*>(a11.getA4()) == a11.getA11());
1219      assert(dynamic_cast<A11*>(a11.getA5()) == a11.getA11());
1220      assert(dynamic_cast<A11*>(a11.getA6()) == a11.getA11());
1221      assert(dynamic_cast<A11*>(a11.getA7()) == a11.getA11());
1222      assert(dynamic_cast<A11*>(a11.getA8()) == a11.getA11());
1223      assert(dynamic_cast<A11*>(a11.getA9()) == a11.getA11());
1224  
1225      assert(dynamic_cast<A3*>(a12.getA1_3()) == 0);
1226      assert(dynamic_cast<A3*>(a12.getA1_4()) == a12.getA3());
1227      assert(dynamic_cast<A3*>(a12.getA1_6()) == a12.getA3());
1228      assert(dynamic_cast<A3*>(a12.getA1_9()) == a12.getA3());
1229      assert(dynamic_cast<A3*>(a12.getA2()) == a12.getA3());
1230  
1231      assert(dynamic_cast<A4*>(a12.getA1_3()) == 0);
1232      assert(dynamic_cast<A4*>(a12.getA1_4()) == a12.getA4());
1233      assert(dynamic_cast<A4*>(a12.getA1_6()) == a12.getA4());
1234      assert(dynamic_cast<A4*>(a12.getA1_9()) == a12.getA4());
1235      assert(dynamic_cast<A4*>(a12.getA2()) == a12.getA4());
1236      assert(dynamic_cast<A4*>(a12.getA3()) == a12.getA4());
1237  
1238      assert(dynamic_cast<A5*>(a12.getA1_3()) == 0);
1239      assert(dynamic_cast<A5*>(a12.getA1_4()) == a12.getA5());
1240      assert(dynamic_cast<A5*>(a12.getA1_6()) == a12.getA5());
1241      assert(dynamic_cast<A5*>(a12.getA1_9()) == a12.getA5());
1242      assert(dynamic_cast<A5*>(a12.getA2()) == a12.getA5());
1243      assert(dynamic_cast<A5*>(a12.getA3()) == a12.getA5());
1244      assert(dynamic_cast<A5*>(a12.getA4()) == a12.getA5());
1245  
1246      assert(dynamic_cast<A6*>(a12.getA1_3()) == 0);
1247      assert(dynamic_cast<A6*>(a12.getA1_4()) == a12.getA6());
1248      assert(dynamic_cast<A6*>(a12.getA1_6()) == a12.getA6());
1249      assert(dynamic_cast<A6*>(a12.getA1_9()) == a12.getA6());
1250      assert(dynamic_cast<A6*>(a12.getA2()) == a12.getA6());
1251      assert(dynamic_cast<A6*>(a12.getA3()) == a12.getA6());
1252      assert(dynamic_cast<A6*>(a12.getA4()) == a12.getA6());
1253      assert(dynamic_cast<A6*>(a12.getA5()) == a12.getA6());
1254  
1255      assert(dynamic_cast<A7*>(a12.getA1_3()) == 0);
1256      assert(dynamic_cast<A7*>(a12.getA1_4()) == a12.getA7());
1257      assert(dynamic_cast<A7*>(a12.getA1_6()) == a12.getA7());
1258      assert(dynamic_cast<A7*>(a12.getA1_9()) == a12.getA7());
1259      assert(dynamic_cast<A7*>(a12.getA2()) == a12.getA7());
1260      assert(dynamic_cast<A7*>(a12.getA3()) == a12.getA7());
1261      assert(dynamic_cast<A7*>(a12.getA4()) == a12.getA7());
1262      assert(dynamic_cast<A7*>(a12.getA5()) == a12.getA7());
1263      assert(dynamic_cast<A7*>(a12.getA6()) == a12.getA7());
1264  
1265      assert(dynamic_cast<A8*>(a12.getA1_3()) == 0);
1266      assert(dynamic_cast<A8*>(a12.getA1_4()) == a12.getA8());
1267      assert(dynamic_cast<A8*>(a12.getA1_6()) == a12.getA8());
1268      assert(dynamic_cast<A8*>(a12.getA1_9()) == a12.getA8());
1269      assert(dynamic_cast<A8*>(a12.getA2()) == a12.getA8());
1270      assert(dynamic_cast<A8*>(a12.getA3()) == a12.getA8());
1271      assert(dynamic_cast<A8*>(a12.getA4()) == a12.getA8());
1272      assert(dynamic_cast<A8*>(a12.getA5()) == a12.getA8());
1273      assert(dynamic_cast<A8*>(a12.getA6()) == a12.getA8());
1274      assert(dynamic_cast<A8*>(a12.getA7()) == a12.getA8());
1275  
1276      assert(dynamic_cast<A9*>(a12.getA1_3()) == 0);
1277      assert(dynamic_cast<A9*>(a12.getA1_4()) == a12.getA9());
1278      assert(dynamic_cast<A9*>(a12.getA1_6()) == a12.getA9());
1279      assert(dynamic_cast<A9*>(a12.getA1_9()) == a12.getA9());
1280      assert(dynamic_cast<A9*>(a12.getA2()) == a12.getA9());
1281      assert(dynamic_cast<A9*>(a12.getA3()) == a12.getA9());
1282      assert(dynamic_cast<A9*>(a12.getA4()) == a12.getA9());
1283      assert(dynamic_cast<A9*>(a12.getA5()) == a12.getA9());
1284      assert(dynamic_cast<A9*>(a12.getA6()) == a12.getA9());
1285      assert(dynamic_cast<A9*>(a12.getA7()) == a12.getA9());
1286      assert(dynamic_cast<A9*>(a12.getA8()) == a12.getA9());
1287  
1288      assert(dynamic_cast<A10*>(a12.getA1_3()) == 0);
1289      assert(dynamic_cast<A10*>(a12.getA1_4()) == a12.getA10());
1290      assert(dynamic_cast<A10*>(a12.getA1_6()) == a12.getA10());
1291      assert(dynamic_cast<A10*>(a12.getA1_9()) == a12.getA10());
1292      assert(dynamic_cast<A10*>(a12.getA2()) == a12.getA10());
1293      assert(dynamic_cast<A10*>(a12.getA3()) == a12.getA10());
1294      assert(dynamic_cast<A10*>(a12.getA4()) == a12.getA10());
1295      assert(dynamic_cast<A10*>(a12.getA5()) == a12.getA10());
1296      assert(dynamic_cast<A10*>(a12.getA6()) == a12.getA10());
1297      assert(dynamic_cast<A10*>(a12.getA7()) == a12.getA10());
1298      assert(dynamic_cast<A10*>(a12.getA8()) == a12.getA10());
1299      assert(dynamic_cast<A10*>(a12.getA9()) == a12.getA10());
1300  
1301      assert(dynamic_cast<A11*>(a12.getA1_3()) == 0);
1302      assert(dynamic_cast<A11*>(a12.getA1_4()) == a12.getA11());
1303      assert(dynamic_cast<A11*>(a12.getA1_6()) == a12.getA11());
1304      assert(dynamic_cast<A11*>(a12.getA1_9()) == a12.getA11());
1305      assert(dynamic_cast<A11*>(a12.getA2()) == a12.getA11());
1306      assert(dynamic_cast<A11*>(a12.getA3()) == a12.getA11());
1307      assert(dynamic_cast<A11*>(a12.getA4()) == a12.getA11());
1308      assert(dynamic_cast<A11*>(a12.getA5()) == a12.getA11());
1309      assert(dynamic_cast<A11*>(a12.getA6()) == a12.getA11());
1310      assert(dynamic_cast<A11*>(a12.getA7()) == a12.getA11());
1311      assert(dynamic_cast<A11*>(a12.getA8()) == a12.getA11());
1312      assert(dynamic_cast<A11*>(a12.getA9()) == a12.getA11());
1313      assert(dynamic_cast<A11*>(a12.getA10()) == a12.getA11());
1314  
1315      assert(dynamic_cast<A12*>(a12.getA1_3()) == 0);
1316      assert(dynamic_cast<A12*>(a12.getA1_4()) == a12.getA12());
1317      assert(dynamic_cast<A12*>(a12.getA1_6()) == a12.getA12());
1318      assert(dynamic_cast<A12*>(a12.getA1_9()) == a12.getA12());
1319      assert(dynamic_cast<A12*>(a12.getA2()) == a12.getA12());
1320      assert(dynamic_cast<A12*>(a12.getA3()) == a12.getA12());
1321      assert(dynamic_cast<A12*>(a12.getA4()) == a12.getA12());
1322      assert(dynamic_cast<A12*>(a12.getA5()) == a12.getA12());
1323      assert(dynamic_cast<A12*>(a12.getA6()) == a12.getA12());
1324      assert(dynamic_cast<A12*>(a12.getA7()) == a12.getA12());
1325      assert(dynamic_cast<A12*>(a12.getA8()) == a12.getA12());
1326      assert(dynamic_cast<A12*>(a12.getA9()) == a12.getA12());
1327      assert(dynamic_cast<A12*>(a12.getA10()) == a12.getA12());
1328      assert(dynamic_cast<A12*>(a12.getA11()) == a12.getA12());
1329  
1330      assert(dynamic_cast<A3*>(a13.getA1_3()) == 0);
1331      assert(dynamic_cast<A3*>(a13.getA1_4()) == a13.getA3());
1332      assert(dynamic_cast<A3*>(a13.getA1_6()) == a13.getA3());
1333      assert(dynamic_cast<A3*>(a13.getA1_9()) == a13.getA3());
1334      assert(dynamic_cast<A3*>(a13.getA2()) == a13.getA3());
1335  
1336      assert(dynamic_cast<A4*>(a13.getA1_3()) == 0);
1337      assert(dynamic_cast<A4*>(a13.getA1_4()) == a13.getA4());
1338      assert(dynamic_cast<A4*>(a13.getA1_6()) == a13.getA4());
1339      assert(dynamic_cast<A4*>(a13.getA1_9()) == a13.getA4());
1340      assert(dynamic_cast<A4*>(a13.getA2()) == a13.getA4());
1341      assert(dynamic_cast<A4*>(a13.getA3()) == a13.getA4());
1342  
1343      assert(dynamic_cast<A5*>(a13.getA1_3()) == 0);
1344      assert(dynamic_cast<A5*>(a13.getA1_4()) == a13.getA5());
1345      assert(dynamic_cast<A5*>(a13.getA1_6()) == a13.getA5());
1346      assert(dynamic_cast<A5*>(a13.getA1_9()) == a13.getA5());
1347      assert(dynamic_cast<A5*>(a13.getA2()) == a13.getA5());
1348      assert(dynamic_cast<A5*>(a13.getA3()) == a13.getA5());
1349      assert(dynamic_cast<A5*>(a13.getA4()) == a13.getA5());
1350  
1351      assert(dynamic_cast<A6*>(a13.getA1_3()) == 0);
1352      assert(dynamic_cast<A6*>(a13.getA1_4()) == a13.getA6());
1353      assert(dynamic_cast<A6*>(a13.getA1_6()) == a13.getA6());
1354      assert(dynamic_cast<A6*>(a13.getA1_9()) == a13.getA6());
1355      assert(dynamic_cast<A6*>(a13.getA2()) == a13.getA6());
1356      assert(dynamic_cast<A6*>(a13.getA3()) == a13.getA6());
1357      assert(dynamic_cast<A6*>(a13.getA4()) == a13.getA6());
1358      assert(dynamic_cast<A6*>(a13.getA5()) == a13.getA6());
1359  
1360      assert(dynamic_cast<A7*>(a13.getA1_3()) == 0);
1361      assert(dynamic_cast<A7*>(a13.getA1_4()) == a13.getA7());
1362      assert(dynamic_cast<A7*>(a13.getA1_6()) == a13.getA7());
1363      assert(dynamic_cast<A7*>(a13.getA1_9()) == a13.getA7());
1364      assert(dynamic_cast<A7*>(a13.getA2()) == a13.getA7());
1365      assert(dynamic_cast<A7*>(a13.getA3()) == a13.getA7());
1366      assert(dynamic_cast<A7*>(a13.getA4()) == a13.getA7());
1367      assert(dynamic_cast<A7*>(a13.getA5()) == a13.getA7());
1368      assert(dynamic_cast<A7*>(a13.getA6()) == a13.getA7());
1369  
1370      assert(dynamic_cast<A8*>(a13.getA1_3()) == 0);
1371      assert(dynamic_cast<A8*>(a13.getA1_4()) == a13.getA8());
1372      assert(dynamic_cast<A8*>(a13.getA1_6()) == a13.getA8());
1373      assert(dynamic_cast<A8*>(a13.getA1_9()) == a13.getA8());
1374      assert(dynamic_cast<A8*>(a13.getA2()) == a13.getA8());
1375      assert(dynamic_cast<A8*>(a13.getA3()) == a13.getA8());
1376      assert(dynamic_cast<A8*>(a13.getA4()) == a13.getA8());
1377      assert(dynamic_cast<A8*>(a13.getA5()) == a13.getA8());
1378      assert(dynamic_cast<A8*>(a13.getA6()) == a13.getA8());
1379      assert(dynamic_cast<A8*>(a13.getA7()) == a13.getA8());
1380  
1381      assert(dynamic_cast<A9*>(a13.getA1_3()) == 0);
1382      assert(dynamic_cast<A9*>(a13.getA1_4()) == a13.getA9());
1383      assert(dynamic_cast<A9*>(a13.getA1_6()) == a13.getA9());
1384      assert(dynamic_cast<A9*>(a13.getA1_9()) == a13.getA9());
1385      assert(dynamic_cast<A9*>(a13.getA2()) == a13.getA9());
1386      assert(dynamic_cast<A9*>(a13.getA3()) == a13.getA9());
1387      assert(dynamic_cast<A9*>(a13.getA4()) == a13.getA9());
1388      assert(dynamic_cast<A9*>(a13.getA5()) == a13.getA9());
1389      assert(dynamic_cast<A9*>(a13.getA6()) == a13.getA9());
1390      assert(dynamic_cast<A9*>(a13.getA7()) == a13.getA9());
1391      assert(dynamic_cast<A9*>(a13.getA8()) == a13.getA9());
1392  
1393      assert(dynamic_cast<A10*>(a13.getA1_3()) == 0);
1394      assert(dynamic_cast<A10*>(a13.getA1_4()) == a13.getA10());
1395      assert(dynamic_cast<A10*>(a13.getA1_6()) == a13.getA10());
1396      assert(dynamic_cast<A10*>(a13.getA1_9()) == a13.getA10());
1397      assert(dynamic_cast<A10*>(a13.getA2()) == a13.getA10());
1398      assert(dynamic_cast<A10*>(a13.getA3()) == a13.getA10());
1399      assert(dynamic_cast<A10*>(a13.getA4()) == a13.getA10());
1400      assert(dynamic_cast<A10*>(a13.getA5()) == a13.getA10());
1401      assert(dynamic_cast<A10*>(a13.getA6()) == a13.getA10());
1402      assert(dynamic_cast<A10*>(a13.getA7()) == a13.getA10());
1403      assert(dynamic_cast<A10*>(a13.getA8()) == a13.getA10());
1404      assert(dynamic_cast<A10*>(a13.getA9()) == a13.getA10());
1405  
1406      assert(dynamic_cast<A11*>(a13.getA1_3()) == 0);
1407      assert(dynamic_cast<A11*>(a13.getA1_4()) == a13.getA11());
1408      assert(dynamic_cast<A11*>(a13.getA1_6()) == a13.getA11());
1409      assert(dynamic_cast<A11*>(a13.getA1_9()) == a13.getA11());
1410      assert(dynamic_cast<A11*>(a13.getA2()) == a13.getA11());
1411      assert(dynamic_cast<A11*>(a13.getA3()) == a13.getA11());
1412      assert(dynamic_cast<A11*>(a13.getA4()) == a13.getA11());
1413      assert(dynamic_cast<A11*>(a13.getA5()) == a13.getA11());
1414      assert(dynamic_cast<A11*>(a13.getA6()) == a13.getA11());
1415      assert(dynamic_cast<A11*>(a13.getA7()) == a13.getA11());
1416      assert(dynamic_cast<A11*>(a13.getA8()) == a13.getA11());
1417      assert(dynamic_cast<A11*>(a13.getA9()) == a13.getA11());
1418      assert(dynamic_cast<A11*>(a13.getA10()) == a13.getA11());
1419  
1420      assert(dynamic_cast<A12*>(a13.getA1_3()) == 0);
1421      assert(dynamic_cast<A12*>(a13.getA1_4()) == a13.getA12());
1422      assert(dynamic_cast<A12*>(a13.getA1_6()) == a13.getA12());
1423      assert(dynamic_cast<A12*>(a13.getA1_9()) == a13.getA12());
1424      assert(dynamic_cast<A12*>(a13.getA2()) == a13.getA12());
1425      assert(dynamic_cast<A12*>(a13.getA3()) == a13.getA12());
1426      assert(dynamic_cast<A12*>(a13.getA4()) == a13.getA12());
1427      assert(dynamic_cast<A12*>(a13.getA5()) == a13.getA12());
1428      assert(dynamic_cast<A12*>(a13.getA6()) == a13.getA12());
1429      assert(dynamic_cast<A12*>(a13.getA7()) == a13.getA12());
1430      assert(dynamic_cast<A12*>(a13.getA8()) == a13.getA12());
1431      assert(dynamic_cast<A12*>(a13.getA9()) == a13.getA12());
1432      assert(dynamic_cast<A12*>(a13.getA10()) == a13.getA12());
1433      assert(dynamic_cast<A12*>(a13.getA11()) == a13.getA12());
1434  
1435      assert(dynamic_cast<A13*>(a13.getA1_3()) == 0);
1436      assert(dynamic_cast<A13*>(a13.getA1_4()) == a13.getA13());
1437      assert(dynamic_cast<A13*>(a13.getA1_6()) == a13.getA13());
1438      assert(dynamic_cast<A13*>(a13.getA1_9()) == a13.getA13());
1439      assert(dynamic_cast<A13*>(a13.getA2()) == a13.getA13());
1440      assert(dynamic_cast<A13*>(a13.getA3()) == a13.getA13());
1441      assert(dynamic_cast<A13*>(a13.getA4()) == a13.getA13());
1442      assert(dynamic_cast<A13*>(a13.getA5()) == a13.getA13());
1443      assert(dynamic_cast<A13*>(a13.getA6()) == a13.getA13());
1444      assert(dynamic_cast<A13*>(a13.getA7()) == a13.getA13());
1445      assert(dynamic_cast<A13*>(a13.getA8()) == a13.getA13());
1446      assert(dynamic_cast<A13*>(a13.getA9()) == a13.getA13());
1447      assert(dynamic_cast<A13*>(a13.getA10()) == a13.getA13());
1448      assert(dynamic_cast<A13*>(a13.getA11()) == a13.getA13());
1449      assert(dynamic_cast<A13*>(a13.getA12()) == a13.getA13());
1450  }
1451  
1452  }  // t2
1453  
1454  namespace t3
1455  {
1456  
1457  struct A1
1458  {
1459      char _[43981];
1460      virtual ~A1() {}
1461  
1462      A1* getA1() {return this;}
1463  };
1464  
1465  struct A2
1466  {
1467      char _[34981];
1468      virtual ~A2() {}
1469  
1470      A2* getA2() {return this;}
1471  };
1472  
1473  struct A3
1474      : public A1,
1475        protected virtual A2
1476  {
1477      char _[93481];
1478      virtual ~A3() {}
1479  
1480      A1* getA1_3() {return A1::getA1();}
1481      A2* getA2() {return A2::getA2();}
1482      A3* getA3() {return this;}
1483  };
1484  
1485  struct A4
1486      : public virtual A2,
1487        public A1
1488  {
1489      char _[13489];
1490      virtual ~A4() {}
1491  
1492      A1* getA1_4() {return A1::getA1();}
1493      A2* getA2() {return A2::getA2();}
1494      A4* getA4() {return this;}
1495  };
1496  
1497  struct A5
1498      : public A3,
1499        public A4
1500  {
1501      char _[13489];
1502      virtual ~A5() {}
1503  
1504      A1* getA1_3() {return A3::getA1();}
1505      A1* getA1_4() {return A4::getA1();}
1506      A2* getA2() {return A3::getA2();}
1507      A3* getA3() {return A3::getA3();}
1508      A4* getA4() {return A4::getA4();}
1509      A5* getA5() {return this;}
1510  };
1511  
1512  struct A6
1513      : public A1
1514  {
1515      char _[81349];
1516      virtual ~A6() {}
1517  
1518      A1* getA1_6() {return A1::getA1();}
1519      A6* getA6() {return this;}
1520  };
1521  
1522  struct A7
1523      : public A5,
1524        public A6
1525  {
1526      char _[34819];
1527      virtual ~A7() {}
1528  
1529      A1* getA1_3() {return A5::getA1_3();}
1530      A1* getA1_4() {return A5::getA1_4();}
1531      A1* getA1_6() {return A6::getA1_6();}
1532      A2* getA2() {return A5::getA2();}
1533      A3* getA3() {return A5::getA3();}
1534      A4* getA4() {return A5::getA4();}
1535      A5* getA5() {return A5::getA5();}
1536      A6* getA6() {return A6::getA6();}
1537      A7* getA7() {return this;}
1538  };
1539  
1540  struct A8
1541      : public A7
1542  {
1543      char _[3489];
1544      virtual ~A8() {}
1545  
1546      A1* getA1_3() {return A7::getA1_3();}
1547      A1* getA1_4() {return A7::getA1_4();}
1548      A1* getA1_6() {return A7::getA1_6();}
1549      A2* getA2() {return A7::getA2();}
1550      A3* getA3() {return A7::getA3();}
1551      A4* getA4() {return A7::getA4();}
1552      A5* getA5() {return A7::getA5();}
1553      A6* getA6() {return A7::getA6();}
1554      A7* getA7() {return A7::getA7();}
1555      A8* getA8() {return this;}
1556  };
1557  
1558  struct A9
1559      : public A1
1560  {
1561      char _[3481];
1562      virtual ~A9() {}
1563  
1564      A1* getA1_9() {return A1::getA1();}
1565      A9* getA9() {return this;}
1566  };
1567  
1568  struct A10
1569      : public virtual A8
1570  {
1571      char _[4831];
1572      virtual ~A10() {}
1573  
1574      A1* getA1_3() {return A8::getA1_3();}
1575      A1* getA1_4() {return A8::getA1_4();}
1576      A1* getA1_6() {return A8::getA1_6();}
1577      A2* getA2() {return A8::getA2();}
1578      A3* getA3() {return A8::getA3();}
1579      A4* getA4() {return A8::getA4();}
1580      A5* getA5() {return A8::getA5();}
1581      A6* getA6() {return A8::getA6();}
1582      A7* getA7() {return A8::getA7();}
1583      A8* getA8() {return A8::getA8();}
1584      A10* getA10() {return this;}
1585  };
1586  
1587  struct A11
1588      : public virtual A8,
1589        public A9
1590  {
1591      char _[6483];
1592      virtual ~A11() {}
1593  
1594      A1* getA1_3() {return A8::getA1_3();}
1595      A1* getA1_4() {return A8::getA1_4();}
1596      A1* getA1_6() {return A8::getA1_6();}
1597      A1* getA1_9() {return A9::getA1_9();}
1598      A2* getA2() {return A8::getA2();}
1599      A3* getA3() {return A8::getA3();}
1600      A4* getA4() {return A8::getA4();}
1601      A5* getA5() {return A8::getA5();}
1602      A6* getA6() {return A8::getA6();}
1603      A7* getA7() {return A8::getA7();}
1604      A8* getA8() {return A8::getA8();}
1605      A9* getA9() {return A9::getA9();}
1606      A11* getA11() {return this;}
1607  };
1608  
1609  struct A12
1610      : public A10,
1611        public A11
1612  {
1613      char _[2283];
1614      virtual ~A12() {}
1615  
1616      A1* getA1_3() {return A10::getA1_3();}
1617      A1* getA1_4() {return A10::getA1_4();}
1618      A1* getA1_6() {return A10::getA1_6();}
1619      A1* getA1_9() {return A11::getA1_9();}
1620      A2* getA2() {return A10::getA2();}
1621      A3* getA3() {return A10::getA3();}
1622      A4* getA4() {return A10::getA4();}
1623      A5* getA5() {return A10::getA5();}
1624      A6* getA6() {return A10::getA6();}
1625      A7* getA7() {return A10::getA7();}
1626      A8* getA8() {return A10::getA8();}
1627      A9* getA9() {return A11::getA9();}
1628      A10* getA10() {return A10::getA10();}
1629      A11* getA11() {return A11::getA11();}
1630      A12* getA12() {return this;}
1631  };
1632  
1633  struct A13
1634      : public A12
1635  {
1636      char _[1283];
1637      virtual ~A13() {}
1638  
1639      A1* getA1_3() {return A12::getA1_3();}
1640      A1* getA1_4() {return A12::getA1_4();}
1641      A1* getA1_6() {return A12::getA1_6();}
1642      A1* getA1_9() {return A12::getA1_9();}
1643      A2* getA2() {return A12::getA2();}
1644      A3* getA3() {return A12::getA3();}
1645      A4* getA4() {return A12::getA4();}
1646      A5* getA5() {return A12::getA5();}
1647      A6* getA6() {return A12::getA6();}
1648      A7* getA7() {return A12::getA7();}
1649      A8* getA8() {return A12::getA8();}
1650      A9* getA9() {return A12::getA9();}
1651      A10* getA10() {return A12::getA10();}
1652      A11* getA11() {return A12::getA11();}
1653      A12* getA12() {return A12::getA12();}
1654      A13* getA13() {return this;}
1655  };
1656  
1657  A3 a3;
1658  A4 a4;
1659  A5 a5;
1660  A6 a6;
1661  A7 a7;
1662  A8 a8;
1663  A9 a9;
1664  A10 a10;
1665  A11 a11;
1666  A12 a12;
1667  A13 a13;
1668  
1669  void test()
1670  {
1671      assert(dynamic_cast<A3*>(a3.getA1_3()) == a3.getA3());
1672      assert(dynamic_cast<A3*>(a3.getA2()) == 0);
1673  
1674      assert(dynamic_cast<A3*>(a4.getA1_4()) == 0);
1675      assert(dynamic_cast<A3*>(a4.getA2()) == 0);
1676      assert(dynamic_cast<A4*>(a4.getA1_4()) == a4.getA4());
1677      assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4());
1678  
1679      assert(dynamic_cast<A3*>(a5.getA1_3()) == a5.getA3());
1680      assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3());
1681  
1682      assert(dynamic_cast<A4*>(a5.getA1_3()) == a5.getA4());
1683      assert(dynamic_cast<A4*>(a5.getA1_4()) == a5.getA4());
1684      assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
1685      assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
1686  
1687      assert(dynamic_cast<A5*>(a5.getA1_3()) == a5.getA5());
1688      assert(dynamic_cast<A5*>(a5.getA1_4()) == a5.getA5());
1689      assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
1690      assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
1691      assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
1692      assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5());
1693  
1694      assert(dynamic_cast<A3*>(a6.getA1_6()) == 0);
1695  
1696      assert(dynamic_cast<A4*>(a6.getA1_6()) == 0);
1697  
1698      assert(dynamic_cast<A5*>(a6.getA1_6()) == 0);
1699  
1700      assert(dynamic_cast<A6*>(a6.getA1_6()) == a6.getA6());
1701  
1702      assert(dynamic_cast<A3*>(a7.getA1_3()) == a7.getA3());
1703      assert(dynamic_cast<A3*>(a7.getA1_4()) == a7.getA3());
1704      assert(dynamic_cast<A3*>(a7.getA2()) == a7.getA3());
1705  
1706      assert(dynamic_cast<A4*>(a7.getA1_3()) == a7.getA4());
1707      assert(dynamic_cast<A4*>(a7.getA1_4()) == a7.getA4());
1708      assert(dynamic_cast<A4*>(a7.getA2()) == a7.getA4());
1709      assert(dynamic_cast<A4*>(a7.getA3()) == a7.getA4());
1710  
1711      assert(dynamic_cast<A5*>(a7.getA1_3()) == a7.getA5());
1712      assert(dynamic_cast<A5*>(a7.getA1_4()) == a7.getA5());
1713      assert(dynamic_cast<A5*>(a7.getA2()) == a7.getA5());
1714      assert(dynamic_cast<A5*>(a7.getA3()) == a7.getA5());
1715      assert(dynamic_cast<A5*>(a7.getA4()) == a7.getA5());
1716  
1717      assert(dynamic_cast<A6*>(a7.getA1_3()) == a7.getA6());
1718      assert(dynamic_cast<A6*>(a7.getA1_4()) == a7.getA6());
1719      assert(dynamic_cast<A6*>(a7.getA1_6()) == a7.getA6());
1720      assert(dynamic_cast<A6*>(a7.getA2()) == a7.getA6());
1721      assert(dynamic_cast<A6*>(a7.getA3()) == a7.getA6());
1722      assert(dynamic_cast<A6*>(a7.getA4()) == a7.getA6());
1723      assert(dynamic_cast<A6*>(a7.getA5()) == a7.getA6());
1724  
1725      assert(dynamic_cast<A7*>(a7.getA1_3()) == a7.getA7());
1726      assert(dynamic_cast<A7*>(a7.getA1_4()) == a7.getA7());
1727      assert(dynamic_cast<A7*>(a7.getA1_6()) == a7.getA7());
1728      assert(dynamic_cast<A7*>(a7.getA2()) == a7.getA7());
1729      assert(dynamic_cast<A7*>(a7.getA3()) == a7.getA7());
1730      assert(dynamic_cast<A7*>(a7.getA4()) == a7.getA7());
1731      assert(dynamic_cast<A7*>(a7.getA5()) == a7.getA7());
1732      assert(dynamic_cast<A7*>(a7.getA6()) == a7.getA7());
1733  
1734      assert(dynamic_cast<A3*>(a8.getA1_3()) == a8.getA3());
1735      assert(dynamic_cast<A3*>(a8.getA1_4()) == a8.getA3());
1736      assert(dynamic_cast<A3*>(a8.getA2()) == a8.getA3());
1737  
1738      assert(dynamic_cast<A4*>(a8.getA1_3()) == a8.getA4());
1739      assert(dynamic_cast<A4*>(a8.getA1_4()) == a8.getA4());
1740      assert(dynamic_cast<A4*>(a8.getA2()) == a8.getA4());
1741      assert(dynamic_cast<A4*>(a8.getA3()) == a8.getA4());
1742  
1743      assert(dynamic_cast<A5*>(a8.getA1_3()) == a8.getA5());
1744      assert(dynamic_cast<A5*>(a8.getA1_4()) == a8.getA5());
1745      assert(dynamic_cast<A5*>(a8.getA2()) == a8.getA5());
1746      assert(dynamic_cast<A5*>(a8.getA3()) == a8.getA5());
1747      assert(dynamic_cast<A5*>(a8.getA4()) == a8.getA5());
1748  
1749      assert(dynamic_cast<A6*>(a8.getA1_3()) == a8.getA6());
1750      assert(dynamic_cast<A6*>(a8.getA1_4()) == a8.getA6());
1751      assert(dynamic_cast<A6*>(a8.getA1_6()) == a8.getA6());
1752      assert(dynamic_cast<A6*>(a8.getA2()) == a8.getA6());
1753      assert(dynamic_cast<A6*>(a8.getA3()) == a8.getA6());
1754      assert(dynamic_cast<A6*>(a8.getA4()) == a8.getA6());
1755      assert(dynamic_cast<A6*>(a8.getA5()) == a8.getA6());
1756  
1757      assert(dynamic_cast<A7*>(a8.getA1_3()) == a8.getA7());
1758      assert(dynamic_cast<A7*>(a8.getA1_4()) == a8.getA7());
1759      assert(dynamic_cast<A7*>(a8.getA1_6()) == a8.getA7());
1760      assert(dynamic_cast<A7*>(a8.getA2()) == a8.getA7());
1761      assert(dynamic_cast<A7*>(a8.getA3()) == a8.getA7());
1762      assert(dynamic_cast<A7*>(a8.getA4()) == a8.getA7());
1763      assert(dynamic_cast<A7*>(a8.getA5()) == a8.getA7());
1764      assert(dynamic_cast<A7*>(a8.getA6()) == a8.getA7());
1765  
1766      assert(dynamic_cast<A8*>(a8.getA1_3()) == a8.getA8());
1767      assert(dynamic_cast<A8*>(a8.getA1_4()) == a8.getA8());
1768      assert(dynamic_cast<A8*>(a8.getA1_6()) == a8.getA8());
1769      assert(dynamic_cast<A8*>(a8.getA2()) == a8.getA8());
1770      assert(dynamic_cast<A8*>(a8.getA3()) == a8.getA8());
1771      assert(dynamic_cast<A8*>(a8.getA4()) == a8.getA8());
1772      assert(dynamic_cast<A8*>(a8.getA5()) == a8.getA8());
1773      assert(dynamic_cast<A8*>(a8.getA6()) == a8.getA8());
1774      assert(dynamic_cast<A8*>(a8.getA7()) == a8.getA8());
1775  
1776      assert(dynamic_cast<A3*>(a9.getA1_9()) == 0);
1777  
1778      assert(dynamic_cast<A4*>(a9.getA1_9()) == 0);
1779  
1780      assert(dynamic_cast<A5*>(a9.getA1_9()) == 0);
1781  
1782      assert(dynamic_cast<A6*>(a9.getA1_9()) == 0);
1783  
1784      assert(dynamic_cast<A7*>(a9.getA1_9()) == 0);
1785  
1786      assert(dynamic_cast<A8*>(a9.getA1_9()) == 0);
1787  
1788      assert(dynamic_cast<A9*>(a9.getA1_9()) == a9.getA9());
1789  
1790      assert(dynamic_cast<A3*>(a10.getA1_3()) == a10.getA3());
1791      assert(dynamic_cast<A3*>(a10.getA1_4()) == a10.getA3());
1792      assert(dynamic_cast<A3*>(a10.getA1_6()) == a10.getA3());
1793      assert(dynamic_cast<A3*>(a10.getA2()) == a10.getA3());
1794  
1795      assert(dynamic_cast<A4*>(a10.getA1_3()) == a10.getA4());
1796      assert(dynamic_cast<A4*>(a10.getA1_4()) == a10.getA4());
1797      assert(dynamic_cast<A4*>(a10.getA1_6()) == a10.getA4());
1798      assert(dynamic_cast<A4*>(a10.getA2()) == a10.getA4());
1799      assert(dynamic_cast<A4*>(a10.getA3()) == a10.getA4());
1800  
1801      assert(dynamic_cast<A5*>(a10.getA1_3()) == a10.getA5());
1802      assert(dynamic_cast<A5*>(a10.getA1_4()) == a10.getA5());
1803      assert(dynamic_cast<A5*>(a10.getA1_6()) == a10.getA5());
1804      assert(dynamic_cast<A5*>(a10.getA2()) == a10.getA5());
1805      assert(dynamic_cast<A5*>(a10.getA3()) == a10.getA5());
1806      assert(dynamic_cast<A5*>(a10.getA4()) == a10.getA5());
1807  
1808      assert(dynamic_cast<A6*>(a10.getA1_3()) == a10.getA6());
1809      assert(dynamic_cast<A6*>(a10.getA1_4()) == a10.getA6());
1810      assert(dynamic_cast<A6*>(a10.getA1_6()) == a10.getA6());
1811      assert(dynamic_cast<A6*>(a10.getA2()) == a10.getA6());
1812      assert(dynamic_cast<A6*>(a10.getA3()) == a10.getA6());
1813      assert(dynamic_cast<A6*>(a10.getA4()) == a10.getA6());
1814      assert(dynamic_cast<A6*>(a10.getA5()) == a10.getA6());
1815  
1816      assert(dynamic_cast<A7*>(a10.getA1_3()) == a10.getA7());
1817      assert(dynamic_cast<A7*>(a10.getA1_4()) == a10.getA7());
1818      assert(dynamic_cast<A7*>(a10.getA1_6()) == a10.getA7());
1819      assert(dynamic_cast<A7*>(a10.getA2()) == a10.getA7());
1820      assert(dynamic_cast<A7*>(a10.getA3()) == a10.getA7());
1821      assert(dynamic_cast<A7*>(a10.getA4()) == a10.getA7());
1822      assert(dynamic_cast<A7*>(a10.getA5()) == a10.getA7());
1823      assert(dynamic_cast<A7*>(a10.getA6()) == a10.getA7());
1824  
1825      assert(dynamic_cast<A8*>(a10.getA1_3()) == a10.getA8());
1826      assert(dynamic_cast<A8*>(a10.getA1_4()) == a10.getA8());
1827      assert(dynamic_cast<A8*>(a10.getA1_6()) == a10.getA8());
1828      assert(dynamic_cast<A8*>(a10.getA2()) == a10.getA8());
1829      assert(dynamic_cast<A8*>(a10.getA3()) == a10.getA8());
1830      assert(dynamic_cast<A8*>(a10.getA4()) == a10.getA8());
1831      assert(dynamic_cast<A8*>(a10.getA5()) == a10.getA8());
1832      assert(dynamic_cast<A8*>(a10.getA6()) == a10.getA8());
1833      assert(dynamic_cast<A8*>(a10.getA7()) == a10.getA8());
1834  
1835      assert(dynamic_cast<A9*>(a10.getA1_3()) == 0);
1836      assert(dynamic_cast<A9*>(a10.getA1_4()) == 0);
1837      assert(dynamic_cast<A9*>(a10.getA1_6()) == 0);
1838      assert(dynamic_cast<A9*>(a10.getA2()) == 0);
1839      assert(dynamic_cast<A9*>(a10.getA3()) == 0);
1840      assert(dynamic_cast<A9*>(a10.getA4()) == 0);
1841      assert(dynamic_cast<A9*>(a10.getA5()) == 0);
1842      assert(dynamic_cast<A9*>(a10.getA6()) == 0);
1843      assert(dynamic_cast<A9*>(a10.getA7()) == 0);
1844      assert(dynamic_cast<A9*>(a10.getA8()) == 0);
1845  
1846      assert(dynamic_cast<A10*>(a10.getA1_3()) == a10.getA10());
1847      assert(dynamic_cast<A10*>(a10.getA1_4()) == a10.getA10());
1848      assert(dynamic_cast<A10*>(a10.getA1_6()) == a10.getA10());
1849      assert(dynamic_cast<A10*>(a10.getA2()) == a10.getA10());
1850      assert(dynamic_cast<A10*>(a10.getA3()) == a10.getA10());
1851      assert(dynamic_cast<A10*>(a10.getA4()) == a10.getA10());
1852      assert(dynamic_cast<A10*>(a10.getA5()) == a10.getA10());
1853      assert(dynamic_cast<A10*>(a10.getA6()) == a10.getA10());
1854      assert(dynamic_cast<A10*>(a10.getA7()) == a10.getA10());
1855      assert(dynamic_cast<A10*>(a10.getA8()) == a10.getA10());
1856  
1857      assert(dynamic_cast<A3*>(a11.getA1_3()) == a11.getA3());
1858      assert(dynamic_cast<A3*>(a11.getA1_4()) == a11.getA3());
1859      assert(dynamic_cast<A3*>(a11.getA1_6()) == a11.getA3());
1860      assert(dynamic_cast<A3*>(a11.getA1_9()) == a11.getA3());
1861      assert(dynamic_cast<A3*>(a11.getA2()) == a11.getA3());
1862  
1863      assert(dynamic_cast<A4*>(a11.getA1_3()) == a11.getA4());
1864      assert(dynamic_cast<A4*>(a11.getA1_4()) == a11.getA4());
1865      assert(dynamic_cast<A4*>(a11.getA1_6()) == a11.getA4());
1866      assert(dynamic_cast<A4*>(a11.getA1_9()) == a11.getA4());
1867      assert(dynamic_cast<A4*>(a11.getA2()) == a11.getA4());
1868      assert(dynamic_cast<A4*>(a11.getA3()) == a11.getA4());
1869  
1870      assert(dynamic_cast<A5*>(a11.getA1_3()) == a11.getA5());
1871      assert(dynamic_cast<A5*>(a11.getA1_4()) == a11.getA5());
1872      assert(dynamic_cast<A5*>(a11.getA1_6()) == a11.getA5());
1873      assert(dynamic_cast<A5*>(a11.getA1_9()) == a11.getA5());
1874      assert(dynamic_cast<A5*>(a11.getA2()) == a11.getA5());
1875      assert(dynamic_cast<A5*>(a11.getA3()) == a11.getA5());
1876      assert(dynamic_cast<A5*>(a11.getA4()) == a11.getA5());
1877  
1878      assert(dynamic_cast<A6*>(a11.getA1_3()) == a11.getA6());
1879      assert(dynamic_cast<A6*>(a11.getA1_4()) == a11.getA6());
1880      assert(dynamic_cast<A6*>(a11.getA1_6()) == a11.getA6());
1881      assert(dynamic_cast<A6*>(a11.getA1_9()) == a11.getA6());
1882      assert(dynamic_cast<A6*>(a11.getA2()) == a11.getA6());
1883      assert(dynamic_cast<A6*>(a11.getA3()) == a11.getA6());
1884      assert(dynamic_cast<A6*>(a11.getA4()) == a11.getA6());
1885      assert(dynamic_cast<A6*>(a11.getA5()) == a11.getA6());
1886  
1887      assert(dynamic_cast<A7*>(a11.getA1_3()) == a11.getA7());
1888      assert(dynamic_cast<A7*>(a11.getA1_4()) == a11.getA7());
1889      assert(dynamic_cast<A7*>(a11.getA1_6()) == a11.getA7());
1890      assert(dynamic_cast<A7*>(a11.getA1_9()) == a11.getA7());
1891      assert(dynamic_cast<A7*>(a11.getA2()) == a11.getA7());
1892      assert(dynamic_cast<A7*>(a11.getA3()) == a11.getA7());
1893      assert(dynamic_cast<A7*>(a11.getA4()) == a11.getA7());
1894      assert(dynamic_cast<A7*>(a11.getA5()) == a11.getA7());
1895      assert(dynamic_cast<A7*>(a11.getA6()) == a11.getA7());
1896  
1897      assert(dynamic_cast<A8*>(a11.getA1_3()) == a11.getA8());
1898      assert(dynamic_cast<A8*>(a11.getA1_4()) == a11.getA8());
1899      assert(dynamic_cast<A8*>(a11.getA1_6()) == a11.getA8());
1900      assert(dynamic_cast<A8*>(a11.getA1_9()) == a11.getA8());
1901      assert(dynamic_cast<A8*>(a11.getA2()) == a11.getA8());
1902      assert(dynamic_cast<A8*>(a11.getA3()) == a11.getA8());
1903      assert(dynamic_cast<A8*>(a11.getA4()) == a11.getA8());
1904      assert(dynamic_cast<A8*>(a11.getA5()) == a11.getA8());
1905      assert(dynamic_cast<A8*>(a11.getA6()) == a11.getA8());
1906      assert(dynamic_cast<A8*>(a11.getA7()) == a11.getA8());
1907  
1908      assert(dynamic_cast<A9*>(a11.getA1_3()) == a11.getA9());
1909      assert(dynamic_cast<A9*>(a11.getA1_4()) == a11.getA9());
1910      assert(dynamic_cast<A9*>(a11.getA1_6()) == a11.getA9());
1911      assert(dynamic_cast<A9*>(a11.getA1_9()) == a11.getA9());
1912      assert(dynamic_cast<A9*>(a11.getA2()) == a11.getA9());
1913      assert(dynamic_cast<A9*>(a11.getA3()) == a11.getA9());
1914      assert(dynamic_cast<A9*>(a11.getA4()) == a11.getA9());
1915      assert(dynamic_cast<A9*>(a11.getA5()) == a11.getA9());
1916      assert(dynamic_cast<A9*>(a11.getA6()) == a11.getA9());
1917      assert(dynamic_cast<A9*>(a11.getA7()) == a11.getA9());
1918      assert(dynamic_cast<A9*>(a11.getA8()) == a11.getA9());
1919  
1920      assert(dynamic_cast<A10*>(a11.getA1_3()) == 0);
1921      assert(dynamic_cast<A10*>(a11.getA1_4()) == 0);
1922      assert(dynamic_cast<A10*>(a11.getA1_6()) == 0);
1923      assert(dynamic_cast<A10*>(a11.getA1_9()) == 0);
1924      assert(dynamic_cast<A10*>(a11.getA2()) == 0);
1925      assert(dynamic_cast<A10*>(a11.getA3()) == 0);
1926      assert(dynamic_cast<A10*>(a11.getA4()) == 0);
1927      assert(dynamic_cast<A10*>(a11.getA5()) == 0);
1928      assert(dynamic_cast<A10*>(a11.getA6()) == 0);
1929      assert(dynamic_cast<A10*>(a11.getA7()) == 0);
1930      assert(dynamic_cast<A10*>(a11.getA8()) == 0);
1931      assert(dynamic_cast<A10*>(a11.getA9()) == 0);
1932  
1933      assert(dynamic_cast<A11*>(a11.getA1_3()) == a11.getA11());
1934      assert(dynamic_cast<A11*>(a11.getA1_4()) == a11.getA11());
1935      assert(dynamic_cast<A11*>(a11.getA1_6()) == a11.getA11());
1936      assert(dynamic_cast<A11*>(a11.getA1_9()) == a11.getA11());
1937      assert(dynamic_cast<A11*>(a11.getA2()) == a11.getA11());
1938      assert(dynamic_cast<A11*>(a11.getA3()) == a11.getA11());
1939      assert(dynamic_cast<A11*>(a11.getA4()) == a11.getA11());
1940      assert(dynamic_cast<A11*>(a11.getA5()) == a11.getA11());
1941      assert(dynamic_cast<A11*>(a11.getA6()) == a11.getA11());
1942      assert(dynamic_cast<A11*>(a11.getA7()) == a11.getA11());
1943      assert(dynamic_cast<A11*>(a11.getA8()) == a11.getA11());
1944      assert(dynamic_cast<A11*>(a11.getA9()) == a11.getA11());
1945  
1946      assert(dynamic_cast<A3*>(a12.getA1_3()) == a12.getA3());
1947      assert(dynamic_cast<A3*>(a12.getA1_4()) == a12.getA3());
1948      assert(dynamic_cast<A3*>(a12.getA1_6()) == a12.getA3());
1949      assert(dynamic_cast<A3*>(a12.getA1_9()) == a12.getA3());
1950      assert(dynamic_cast<A3*>(a12.getA2()) == a12.getA3());
1951  
1952      assert(dynamic_cast<A4*>(a12.getA1_3()) == a12.getA4());
1953      assert(dynamic_cast<A4*>(a12.getA1_4()) == a12.getA4());
1954      assert(dynamic_cast<A4*>(a12.getA1_6()) == a12.getA4());
1955      assert(dynamic_cast<A4*>(a12.getA1_9()) == a12.getA4());
1956      assert(dynamic_cast<A4*>(a12.getA2()) == a12.getA4());
1957      assert(dynamic_cast<A4*>(a12.getA3()) == a12.getA4());
1958  
1959      assert(dynamic_cast<A5*>(a12.getA1_3()) == a12.getA5());
1960      assert(dynamic_cast<A5*>(a12.getA1_4()) == a12.getA5());
1961      assert(dynamic_cast<A5*>(a12.getA1_6()) == a12.getA5());
1962      assert(dynamic_cast<A5*>(a12.getA1_9()) == a12.getA5());
1963      assert(dynamic_cast<A5*>(a12.getA2()) == a12.getA5());
1964      assert(dynamic_cast<A5*>(a12.getA3()) == a12.getA5());
1965      assert(dynamic_cast<A5*>(a12.getA4()) == a12.getA5());
1966  
1967      assert(dynamic_cast<A6*>(a12.getA1_3()) == a12.getA6());
1968      assert(dynamic_cast<A6*>(a12.getA1_4()) == a12.getA6());
1969      assert(dynamic_cast<A6*>(a12.getA1_6()) == a12.getA6());
1970      assert(dynamic_cast<A6*>(a12.getA1_9()) == a12.getA6());
1971      assert(dynamic_cast<A6*>(a12.getA2()) == a12.getA6());
1972      assert(dynamic_cast<A6*>(a12.getA3()) == a12.getA6());
1973      assert(dynamic_cast<A6*>(a12.getA4()) == a12.getA6());
1974      assert(dynamic_cast<A6*>(a12.getA5()) == a12.getA6());
1975  
1976      assert(dynamic_cast<A7*>(a12.getA1_3()) == a12.getA7());
1977      assert(dynamic_cast<A7*>(a12.getA1_4()) == a12.getA7());
1978      assert(dynamic_cast<A7*>(a12.getA1_6()) == a12.getA7());
1979      assert(dynamic_cast<A7*>(a12.getA1_9()) == a12.getA7());
1980      assert(dynamic_cast<A7*>(a12.getA2()) == a12.getA7());
1981      assert(dynamic_cast<A7*>(a12.getA3()) == a12.getA7());
1982      assert(dynamic_cast<A7*>(a12.getA4()) == a12.getA7());
1983      assert(dynamic_cast<A7*>(a12.getA5()) == a12.getA7());
1984      assert(dynamic_cast<A7*>(a12.getA6()) == a12.getA7());
1985  
1986      assert(dynamic_cast<A8*>(a12.getA1_3()) == a12.getA8());
1987      assert(dynamic_cast<A8*>(a12.getA1_4()) == a12.getA8());
1988      assert(dynamic_cast<A8*>(a12.getA1_6()) == a12.getA8());
1989      assert(dynamic_cast<A8*>(a12.getA1_9()) == a12.getA8());
1990      assert(dynamic_cast<A8*>(a12.getA2()) == a12.getA8());
1991      assert(dynamic_cast<A8*>(a12.getA3()) == a12.getA8());
1992      assert(dynamic_cast<A8*>(a12.getA4()) == a12.getA8());
1993      assert(dynamic_cast<A8*>(a12.getA5()) == a12.getA8());
1994      assert(dynamic_cast<A8*>(a12.getA6()) == a12.getA8());
1995      assert(dynamic_cast<A8*>(a12.getA7()) == a12.getA8());
1996  
1997      assert(dynamic_cast<A9*>(a12.getA1_3()) == a12.getA9());
1998      assert(dynamic_cast<A9*>(a12.getA1_4()) == a12.getA9());
1999      assert(dynamic_cast<A9*>(a12.getA1_6()) == a12.getA9());
2000      assert(dynamic_cast<A9*>(a12.getA1_9()) == a12.getA9());
2001      assert(dynamic_cast<A9*>(a12.getA2()) == a12.getA9());
2002      assert(dynamic_cast<A9*>(a12.getA3()) == a12.getA9());
2003      assert(dynamic_cast<A9*>(a12.getA4()) == a12.getA9());
2004      assert(dynamic_cast<A9*>(a12.getA5()) == a12.getA9());
2005      assert(dynamic_cast<A9*>(a12.getA6()) == a12.getA9());
2006      assert(dynamic_cast<A9*>(a12.getA7()) == a12.getA9());
2007      assert(dynamic_cast<A9*>(a12.getA8()) == a12.getA9());
2008  
2009      assert(dynamic_cast<A10*>(a12.getA1_3()) == a12.getA10());
2010      assert(dynamic_cast<A10*>(a12.getA1_4()) == a12.getA10());
2011      assert(dynamic_cast<A10*>(a12.getA1_6()) == a12.getA10());
2012      assert(dynamic_cast<A10*>(a12.getA1_9()) == a12.getA10());
2013      assert(dynamic_cast<A10*>(a12.getA2()) == a12.getA10());
2014      assert(dynamic_cast<A10*>(a12.getA3()) == a12.getA10());
2015      assert(dynamic_cast<A10*>(a12.getA4()) == a12.getA10());
2016      assert(dynamic_cast<A10*>(a12.getA5()) == a12.getA10());
2017      assert(dynamic_cast<A10*>(a12.getA6()) == a12.getA10());
2018      assert(dynamic_cast<A10*>(a12.getA7()) == a12.getA10());
2019      assert(dynamic_cast<A10*>(a12.getA8()) == a12.getA10());
2020      assert(dynamic_cast<A10*>(a12.getA9()) == a12.getA10());
2021  
2022      assert(dynamic_cast<A11*>(a12.getA1_3()) == a12.getA11());
2023      assert(dynamic_cast<A11*>(a12.getA1_4()) == a12.getA11());
2024      assert(dynamic_cast<A11*>(a12.getA1_6()) == a12.getA11());
2025      assert(dynamic_cast<A11*>(a12.getA1_9()) == a12.getA11());
2026      assert(dynamic_cast<A11*>(a12.getA2()) == a12.getA11());
2027      assert(dynamic_cast<A11*>(a12.getA3()) == a12.getA11());
2028      assert(dynamic_cast<A11*>(a12.getA4()) == a12.getA11());
2029      assert(dynamic_cast<A11*>(a12.getA5()) == a12.getA11());
2030      assert(dynamic_cast<A11*>(a12.getA6()) == a12.getA11());
2031      assert(dynamic_cast<A11*>(a12.getA7()) == a12.getA11());
2032      assert(dynamic_cast<A11*>(a12.getA8()) == a12.getA11());
2033      assert(dynamic_cast<A11*>(a12.getA9()) == a12.getA11());
2034      assert(dynamic_cast<A11*>(a12.getA10()) == a12.getA11());
2035  
2036      assert(dynamic_cast<A12*>(a12.getA1_3()) == a12.getA12());
2037      assert(dynamic_cast<A12*>(a12.getA1_4()) == a12.getA12());
2038      assert(dynamic_cast<A12*>(a12.getA1_6()) == a12.getA12());
2039      assert(dynamic_cast<A12*>(a12.getA1_9()) == a12.getA12());
2040      assert(dynamic_cast<A12*>(a12.getA2()) == a12.getA12());
2041      assert(dynamic_cast<A12*>(a12.getA3()) == a12.getA12());
2042      assert(dynamic_cast<A12*>(a12.getA4()) == a12.getA12());
2043      assert(dynamic_cast<A12*>(a12.getA5()) == a12.getA12());
2044      assert(dynamic_cast<A12*>(a12.getA6()) == a12.getA12());
2045      assert(dynamic_cast<A12*>(a12.getA7()) == a12.getA12());
2046      assert(dynamic_cast<A12*>(a12.getA8()) == a12.getA12());
2047      assert(dynamic_cast<A12*>(a12.getA9()) == a12.getA12());
2048      assert(dynamic_cast<A12*>(a12.getA10()) == a12.getA12());
2049      assert(dynamic_cast<A12*>(a12.getA11()) == a12.getA12());
2050  
2051      assert(dynamic_cast<A3*>(a13.getA1_3()) == a13.getA3());
2052      assert(dynamic_cast<A3*>(a13.getA1_4()) == a13.getA3());
2053      assert(dynamic_cast<A3*>(a13.getA1_6()) == a13.getA3());
2054      assert(dynamic_cast<A3*>(a13.getA1_9()) == a13.getA3());
2055      assert(dynamic_cast<A3*>(a13.getA2()) == a13.getA3());
2056  
2057      assert(dynamic_cast<A4*>(a13.getA1_3()) == a13.getA4());
2058      assert(dynamic_cast<A4*>(a13.getA1_4()) == a13.getA4());
2059      assert(dynamic_cast<A4*>(a13.getA1_6()) == a13.getA4());
2060      assert(dynamic_cast<A4*>(a13.getA1_9()) == a13.getA4());
2061      assert(dynamic_cast<A4*>(a13.getA2()) == a13.getA4());
2062      assert(dynamic_cast<A4*>(a13.getA3()) == a13.getA4());
2063  
2064      assert(dynamic_cast<A5*>(a13.getA1_3()) == a13.getA5());
2065      assert(dynamic_cast<A5*>(a13.getA1_4()) == a13.getA5());
2066      assert(dynamic_cast<A5*>(a13.getA1_6()) == a13.getA5());
2067      assert(dynamic_cast<A5*>(a13.getA1_9()) == a13.getA5());
2068      assert(dynamic_cast<A5*>(a13.getA2()) == a13.getA5());
2069      assert(dynamic_cast<A5*>(a13.getA3()) == a13.getA5());
2070      assert(dynamic_cast<A5*>(a13.getA4()) == a13.getA5());
2071  
2072      assert(dynamic_cast<A6*>(a13.getA1_3()) == a13.getA6());
2073      assert(dynamic_cast<A6*>(a13.getA1_4()) == a13.getA6());
2074      assert(dynamic_cast<A6*>(a13.getA1_6()) == a13.getA6());
2075      assert(dynamic_cast<A6*>(a13.getA1_9()) == a13.getA6());
2076      assert(dynamic_cast<A6*>(a13.getA2()) == a13.getA6());
2077      assert(dynamic_cast<A6*>(a13.getA3()) == a13.getA6());
2078      assert(dynamic_cast<A6*>(a13.getA4()) == a13.getA6());
2079      assert(dynamic_cast<A6*>(a13.getA5()) == a13.getA6());
2080  
2081      assert(dynamic_cast<A7*>(a13.getA1_3()) == a13.getA7());
2082      assert(dynamic_cast<A7*>(a13.getA1_4()) == a13.getA7());
2083      assert(dynamic_cast<A7*>(a13.getA1_6()) == a13.getA7());
2084      assert(dynamic_cast<A7*>(a13.getA1_9()) == a13.getA7());
2085      assert(dynamic_cast<A7*>(a13.getA2()) == a13.getA7());
2086      assert(dynamic_cast<A7*>(a13.getA3()) == a13.getA7());
2087      assert(dynamic_cast<A7*>(a13.getA4()) == a13.getA7());
2088      assert(dynamic_cast<A7*>(a13.getA5()) == a13.getA7());
2089      assert(dynamic_cast<A7*>(a13.getA6()) == a13.getA7());
2090  
2091      assert(dynamic_cast<A8*>(a13.getA1_3()) == a13.getA8());
2092      assert(dynamic_cast<A8*>(a13.getA1_4()) == a13.getA8());
2093      assert(dynamic_cast<A8*>(a13.getA1_6()) == a13.getA8());
2094      assert(dynamic_cast<A8*>(a13.getA1_9()) == a13.getA8());
2095      assert(dynamic_cast<A8*>(a13.getA2()) == a13.getA8());
2096      assert(dynamic_cast<A8*>(a13.getA3()) == a13.getA8());
2097      assert(dynamic_cast<A8*>(a13.getA4()) == a13.getA8());
2098      assert(dynamic_cast<A8*>(a13.getA5()) == a13.getA8());
2099      assert(dynamic_cast<A8*>(a13.getA6()) == a13.getA8());
2100      assert(dynamic_cast<A8*>(a13.getA7()) == a13.getA8());
2101  
2102      assert(dynamic_cast<A9*>(a13.getA1_3()) == a13.getA9());
2103      assert(dynamic_cast<A9*>(a13.getA1_4()) == a13.getA9());
2104      assert(dynamic_cast<A9*>(a13.getA1_6()) == a13.getA9());
2105      assert(dynamic_cast<A9*>(a13.getA1_9()) == a13.getA9());
2106      assert(dynamic_cast<A9*>(a13.getA2()) == a13.getA9());
2107      assert(dynamic_cast<A9*>(a13.getA3()) == a13.getA9());
2108      assert(dynamic_cast<A9*>(a13.getA4()) == a13.getA9());
2109      assert(dynamic_cast<A9*>(a13.getA5()) == a13.getA9());
2110      assert(dynamic_cast<A9*>(a13.getA6()) == a13.getA9());
2111      assert(dynamic_cast<A9*>(a13.getA7()) == a13.getA9());
2112      assert(dynamic_cast<A9*>(a13.getA8()) == a13.getA9());
2113  
2114      assert(dynamic_cast<A10*>(a13.getA1_3()) == a13.getA10());
2115      assert(dynamic_cast<A10*>(a13.getA1_4()) == a13.getA10());
2116      assert(dynamic_cast<A10*>(a13.getA1_6()) == a13.getA10());
2117      assert(dynamic_cast<A10*>(a13.getA1_9()) == a13.getA10());
2118      assert(dynamic_cast<A10*>(a13.getA2()) == a13.getA10());
2119      assert(dynamic_cast<A10*>(a13.getA3()) == a13.getA10());
2120      assert(dynamic_cast<A10*>(a13.getA4()) == a13.getA10());
2121      assert(dynamic_cast<A10*>(a13.getA5()) == a13.getA10());
2122      assert(dynamic_cast<A10*>(a13.getA6()) == a13.getA10());
2123      assert(dynamic_cast<A10*>(a13.getA7()) == a13.getA10());
2124      assert(dynamic_cast<A10*>(a13.getA8()) == a13.getA10());
2125      assert(dynamic_cast<A10*>(a13.getA9()) == a13.getA10());
2126  
2127      assert(dynamic_cast<A11*>(a13.getA1_3()) == a13.getA11());
2128      assert(dynamic_cast<A11*>(a13.getA1_4()) == a13.getA11());
2129      assert(dynamic_cast<A11*>(a13.getA1_6()) == a13.getA11());
2130      assert(dynamic_cast<A11*>(a13.getA1_9()) == a13.getA11());
2131      assert(dynamic_cast<A11*>(a13.getA2()) == a13.getA11());
2132      assert(dynamic_cast<A11*>(a13.getA3()) == a13.getA11());
2133      assert(dynamic_cast<A11*>(a13.getA4()) == a13.getA11());
2134      assert(dynamic_cast<A11*>(a13.getA5()) == a13.getA11());
2135      assert(dynamic_cast<A11*>(a13.getA6()) == a13.getA11());
2136      assert(dynamic_cast<A11*>(a13.getA7()) == a13.getA11());
2137      assert(dynamic_cast<A11*>(a13.getA8()) == a13.getA11());
2138      assert(dynamic_cast<A11*>(a13.getA9()) == a13.getA11());
2139      assert(dynamic_cast<A11*>(a13.getA10()) == a13.getA11());
2140  
2141      assert(dynamic_cast<A12*>(a13.getA1_3()) == a13.getA12());
2142      assert(dynamic_cast<A12*>(a13.getA1_4()) == a13.getA12());
2143      assert(dynamic_cast<A12*>(a13.getA1_6()) == a13.getA12());
2144      assert(dynamic_cast<A12*>(a13.getA1_9()) == a13.getA12());
2145      assert(dynamic_cast<A12*>(a13.getA2()) == a13.getA12());
2146      assert(dynamic_cast<A12*>(a13.getA3()) == a13.getA12());
2147      assert(dynamic_cast<A12*>(a13.getA4()) == a13.getA12());
2148      assert(dynamic_cast<A12*>(a13.getA5()) == a13.getA12());
2149      assert(dynamic_cast<A12*>(a13.getA6()) == a13.getA12());
2150      assert(dynamic_cast<A12*>(a13.getA7()) == a13.getA12());
2151      assert(dynamic_cast<A12*>(a13.getA8()) == a13.getA12());
2152      assert(dynamic_cast<A12*>(a13.getA9()) == a13.getA12());
2153      assert(dynamic_cast<A12*>(a13.getA10()) == a13.getA12());
2154      assert(dynamic_cast<A12*>(a13.getA11()) == a13.getA12());
2155  
2156      assert(dynamic_cast<A13*>(a13.getA1_3()) == a13.getA13());
2157      assert(dynamic_cast<A13*>(a13.getA1_4()) == a13.getA13());
2158      assert(dynamic_cast<A13*>(a13.getA1_6()) == a13.getA13());
2159      assert(dynamic_cast<A13*>(a13.getA1_9()) == a13.getA13());
2160      assert(dynamic_cast<A13*>(a13.getA2()) == a13.getA13());
2161      assert(dynamic_cast<A13*>(a13.getA3()) == a13.getA13());
2162      assert(dynamic_cast<A13*>(a13.getA4()) == a13.getA13());
2163      assert(dynamic_cast<A13*>(a13.getA5()) == a13.getA13());
2164      assert(dynamic_cast<A13*>(a13.getA6()) == a13.getA13());
2165      assert(dynamic_cast<A13*>(a13.getA7()) == a13.getA13());
2166      assert(dynamic_cast<A13*>(a13.getA8()) == a13.getA13());
2167      assert(dynamic_cast<A13*>(a13.getA9()) == a13.getA13());
2168      assert(dynamic_cast<A13*>(a13.getA10()) == a13.getA13());
2169      assert(dynamic_cast<A13*>(a13.getA11()) == a13.getA13());
2170      assert(dynamic_cast<A13*>(a13.getA12()) == a13.getA13());
2171  }
2172  
2173  }  // t3
2174  
2175  int main(int, char**)
2176  {
2177      timer t;
2178      t1::test();
2179      t2::test();
2180      t3::test();
2181  
2182      return 0;
2183  }