public static void main(String[] args) throws Exception {
    System.out.println("** TestPolymorph");
    TLog.initializeLogger();

    TestPolymorph z = new TestPolymorph();
    z.f1(new A());
    z.f1(new B1());
    z.f1(new B2());
    z.f1(new C());
    z.f1(new D());

    z.f2(new B1());
    z.f2(new C());
    z.f2(new D());

    z.f3(new D());

    DLog.initialize(TLog.getDebugLogCopy(), TLog.getDebugEventLogCopy());
    DLog.DEBUG = true;
    DLog.printEncodedLog();
    f1DEC();
    f1DEC();
    f1DEC();
    f1DEC();
    f1DEC();

    f2DEC();
    f2DEC();
    f2DEC();

    f3DEC();

    DLog.tick();
    DLog.closeDecoder();
    DLog.printDebug();
  }