// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// Generated by
//
//   pkg/front_end/benchmarks/patterns/generate_datatypes.dart

import '../test_datatypes.dart';

abstract class Base256 {
  void dynamicDispatch(Counter counter);

  R accept<R, A>(Visitor256<R, A> visitor, A arg);
}

class Sub0 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch0(Counter counter) {
    counter.inc();
  }

  void visitorDispatch0(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub0(this, arg);
  }
}

class Sub1 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch1(Counter counter) {
    counter.inc();
  }

  void visitorDispatch1(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub1(this, arg);
  }
}

class Sub2 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch2(Counter counter) {
    counter.inc();
  }

  void visitorDispatch2(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub2(this, arg);
  }
}

class Sub3 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch3(Counter counter) {
    counter.inc();
  }

  void visitorDispatch3(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub3(this, arg);
  }
}

class Sub4 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch4(Counter counter) {
    counter.inc();
  }

  void visitorDispatch4(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub4(this, arg);
  }
}

class Sub5 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch5(Counter counter) {
    counter.inc();
  }

  void visitorDispatch5(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub5(this, arg);
  }
}

class Sub6 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch6(Counter counter) {
    counter.inc();
  }

  void visitorDispatch6(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub6(this, arg);
  }
}

class Sub7 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch7(Counter counter) {
    counter.inc();
  }

  void visitorDispatch7(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub7(this, arg);
  }
}

class Sub8 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch8(Counter counter) {
    counter.inc();
  }

  void visitorDispatch8(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub8(this, arg);
  }
}

class Sub9 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch9(Counter counter) {
    counter.inc();
  }

  void visitorDispatch9(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub9(this, arg);
  }
}

class Sub10 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch10(Counter counter) {
    counter.inc();
  }

  void visitorDispatch10(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub10(this, arg);
  }
}

class Sub11 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch11(Counter counter) {
    counter.inc();
  }

  void visitorDispatch11(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub11(this, arg);
  }
}

class Sub12 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch12(Counter counter) {
    counter.inc();
  }

  void visitorDispatch12(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub12(this, arg);
  }
}

class Sub13 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch13(Counter counter) {
    counter.inc();
  }

  void visitorDispatch13(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub13(this, arg);
  }
}

class Sub14 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch14(Counter counter) {
    counter.inc();
  }

  void visitorDispatch14(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub14(this, arg);
  }
}

class Sub15 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch15(Counter counter) {
    counter.inc();
  }

  void visitorDispatch15(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub15(this, arg);
  }
}

class Sub16 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch16(Counter counter) {
    counter.inc();
  }

  void visitorDispatch16(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub16(this, arg);
  }
}

class Sub17 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch17(Counter counter) {
    counter.inc();
  }

  void visitorDispatch17(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub17(this, arg);
  }
}

class Sub18 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch18(Counter counter) {
    counter.inc();
  }

  void visitorDispatch18(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub18(this, arg);
  }
}

class Sub19 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch19(Counter counter) {
    counter.inc();
  }

  void visitorDispatch19(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub19(this, arg);
  }
}

class Sub20 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch20(Counter counter) {
    counter.inc();
  }

  void visitorDispatch20(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub20(this, arg);
  }
}

class Sub21 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch21(Counter counter) {
    counter.inc();
  }

  void visitorDispatch21(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub21(this, arg);
  }
}

class Sub22 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch22(Counter counter) {
    counter.inc();
  }

  void visitorDispatch22(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub22(this, arg);
  }
}

class Sub23 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch23(Counter counter) {
    counter.inc();
  }

  void visitorDispatch23(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub23(this, arg);
  }
}

class Sub24 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch24(Counter counter) {
    counter.inc();
  }

  void visitorDispatch24(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub24(this, arg);
  }
}

class Sub25 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch25(Counter counter) {
    counter.inc();
  }

  void visitorDispatch25(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub25(this, arg);
  }
}

class Sub26 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch26(Counter counter) {
    counter.inc();
  }

  void visitorDispatch26(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub26(this, arg);
  }
}

class Sub27 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch27(Counter counter) {
    counter.inc();
  }

  void visitorDispatch27(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub27(this, arg);
  }
}

class Sub28 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch28(Counter counter) {
    counter.inc();
  }

  void visitorDispatch28(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub28(this, arg);
  }
}

class Sub29 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch29(Counter counter) {
    counter.inc();
  }

  void visitorDispatch29(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub29(this, arg);
  }
}

class Sub30 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch30(Counter counter) {
    counter.inc();
  }

  void visitorDispatch30(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub30(this, arg);
  }
}

class Sub31 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch31(Counter counter) {
    counter.inc();
  }

  void visitorDispatch31(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub31(this, arg);
  }
}

class Sub32 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch32(Counter counter) {
    counter.inc();
  }

  void visitorDispatch32(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub32(this, arg);
  }
}

class Sub33 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch33(Counter counter) {
    counter.inc();
  }

  void visitorDispatch33(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub33(this, arg);
  }
}

class Sub34 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch34(Counter counter) {
    counter.inc();
  }

  void visitorDispatch34(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub34(this, arg);
  }
}

class Sub35 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch35(Counter counter) {
    counter.inc();
  }

  void visitorDispatch35(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub35(this, arg);
  }
}

class Sub36 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch36(Counter counter) {
    counter.inc();
  }

  void visitorDispatch36(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub36(this, arg);
  }
}

class Sub37 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch37(Counter counter) {
    counter.inc();
  }

  void visitorDispatch37(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub37(this, arg);
  }
}

class Sub38 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch38(Counter counter) {
    counter.inc();
  }

  void visitorDispatch38(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub38(this, arg);
  }
}

class Sub39 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch39(Counter counter) {
    counter.inc();
  }

  void visitorDispatch39(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub39(this, arg);
  }
}

class Sub40 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch40(Counter counter) {
    counter.inc();
  }

  void visitorDispatch40(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub40(this, arg);
  }
}

class Sub41 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch41(Counter counter) {
    counter.inc();
  }

  void visitorDispatch41(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub41(this, arg);
  }
}

class Sub42 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch42(Counter counter) {
    counter.inc();
  }

  void visitorDispatch42(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub42(this, arg);
  }
}

class Sub43 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch43(Counter counter) {
    counter.inc();
  }

  void visitorDispatch43(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub43(this, arg);
  }
}

class Sub44 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch44(Counter counter) {
    counter.inc();
  }

  void visitorDispatch44(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub44(this, arg);
  }
}

class Sub45 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch45(Counter counter) {
    counter.inc();
  }

  void visitorDispatch45(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub45(this, arg);
  }
}

class Sub46 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch46(Counter counter) {
    counter.inc();
  }

  void visitorDispatch46(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub46(this, arg);
  }
}

class Sub47 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch47(Counter counter) {
    counter.inc();
  }

  void visitorDispatch47(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub47(this, arg);
  }
}

class Sub48 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch48(Counter counter) {
    counter.inc();
  }

  void visitorDispatch48(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub48(this, arg);
  }
}

class Sub49 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch49(Counter counter) {
    counter.inc();
  }

  void visitorDispatch49(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub49(this, arg);
  }
}

class Sub50 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch50(Counter counter) {
    counter.inc();
  }

  void visitorDispatch50(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub50(this, arg);
  }
}

class Sub51 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch51(Counter counter) {
    counter.inc();
  }

  void visitorDispatch51(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub51(this, arg);
  }
}

class Sub52 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch52(Counter counter) {
    counter.inc();
  }

  void visitorDispatch52(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub52(this, arg);
  }
}

class Sub53 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch53(Counter counter) {
    counter.inc();
  }

  void visitorDispatch53(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub53(this, arg);
  }
}

class Sub54 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch54(Counter counter) {
    counter.inc();
  }

  void visitorDispatch54(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub54(this, arg);
  }
}

class Sub55 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch55(Counter counter) {
    counter.inc();
  }

  void visitorDispatch55(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub55(this, arg);
  }
}

class Sub56 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch56(Counter counter) {
    counter.inc();
  }

  void visitorDispatch56(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub56(this, arg);
  }
}

class Sub57 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch57(Counter counter) {
    counter.inc();
  }

  void visitorDispatch57(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub57(this, arg);
  }
}

class Sub58 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch58(Counter counter) {
    counter.inc();
  }

  void visitorDispatch58(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub58(this, arg);
  }
}

class Sub59 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch59(Counter counter) {
    counter.inc();
  }

  void visitorDispatch59(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub59(this, arg);
  }
}

class Sub60 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch60(Counter counter) {
    counter.inc();
  }

  void visitorDispatch60(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub60(this, arg);
  }
}

class Sub61 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch61(Counter counter) {
    counter.inc();
  }

  void visitorDispatch61(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub61(this, arg);
  }
}

class Sub62 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch62(Counter counter) {
    counter.inc();
  }

  void visitorDispatch62(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub62(this, arg);
  }
}

class Sub63 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch63(Counter counter) {
    counter.inc();
  }

  void visitorDispatch63(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub63(this, arg);
  }
}

class Sub64 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch64(Counter counter) {
    counter.inc();
  }

  void visitorDispatch64(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub64(this, arg);
  }
}

class Sub65 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch65(Counter counter) {
    counter.inc();
  }

  void visitorDispatch65(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub65(this, arg);
  }
}

class Sub66 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch66(Counter counter) {
    counter.inc();
  }

  void visitorDispatch66(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub66(this, arg);
  }
}

class Sub67 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch67(Counter counter) {
    counter.inc();
  }

  void visitorDispatch67(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub67(this, arg);
  }
}

class Sub68 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch68(Counter counter) {
    counter.inc();
  }

  void visitorDispatch68(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub68(this, arg);
  }
}

class Sub69 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch69(Counter counter) {
    counter.inc();
  }

  void visitorDispatch69(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub69(this, arg);
  }
}

class Sub70 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch70(Counter counter) {
    counter.inc();
  }

  void visitorDispatch70(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub70(this, arg);
  }
}

class Sub71 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch71(Counter counter) {
    counter.inc();
  }

  void visitorDispatch71(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub71(this, arg);
  }
}

class Sub72 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch72(Counter counter) {
    counter.inc();
  }

  void visitorDispatch72(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub72(this, arg);
  }
}

class Sub73 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch73(Counter counter) {
    counter.inc();
  }

  void visitorDispatch73(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub73(this, arg);
  }
}

class Sub74 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch74(Counter counter) {
    counter.inc();
  }

  void visitorDispatch74(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub74(this, arg);
  }
}

class Sub75 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch75(Counter counter) {
    counter.inc();
  }

  void visitorDispatch75(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub75(this, arg);
  }
}

class Sub76 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch76(Counter counter) {
    counter.inc();
  }

  void visitorDispatch76(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub76(this, arg);
  }
}

class Sub77 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch77(Counter counter) {
    counter.inc();
  }

  void visitorDispatch77(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub77(this, arg);
  }
}

class Sub78 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch78(Counter counter) {
    counter.inc();
  }

  void visitorDispatch78(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub78(this, arg);
  }
}

class Sub79 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch79(Counter counter) {
    counter.inc();
  }

  void visitorDispatch79(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub79(this, arg);
  }
}

class Sub80 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch80(Counter counter) {
    counter.inc();
  }

  void visitorDispatch80(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub80(this, arg);
  }
}

class Sub81 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch81(Counter counter) {
    counter.inc();
  }

  void visitorDispatch81(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub81(this, arg);
  }
}

class Sub82 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch82(Counter counter) {
    counter.inc();
  }

  void visitorDispatch82(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub82(this, arg);
  }
}

class Sub83 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch83(Counter counter) {
    counter.inc();
  }

  void visitorDispatch83(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub83(this, arg);
  }
}

class Sub84 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch84(Counter counter) {
    counter.inc();
  }

  void visitorDispatch84(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub84(this, arg);
  }
}

class Sub85 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch85(Counter counter) {
    counter.inc();
  }

  void visitorDispatch85(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub85(this, arg);
  }
}

class Sub86 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch86(Counter counter) {
    counter.inc();
  }

  void visitorDispatch86(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub86(this, arg);
  }
}

class Sub87 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch87(Counter counter) {
    counter.inc();
  }

  void visitorDispatch87(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub87(this, arg);
  }
}

class Sub88 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch88(Counter counter) {
    counter.inc();
  }

  void visitorDispatch88(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub88(this, arg);
  }
}

class Sub89 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch89(Counter counter) {
    counter.inc();
  }

  void visitorDispatch89(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub89(this, arg);
  }
}

class Sub90 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch90(Counter counter) {
    counter.inc();
  }

  void visitorDispatch90(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub90(this, arg);
  }
}

class Sub91 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch91(Counter counter) {
    counter.inc();
  }

  void visitorDispatch91(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub91(this, arg);
  }
}

class Sub92 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch92(Counter counter) {
    counter.inc();
  }

  void visitorDispatch92(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub92(this, arg);
  }
}

class Sub93 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch93(Counter counter) {
    counter.inc();
  }

  void visitorDispatch93(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub93(this, arg);
  }
}

class Sub94 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch94(Counter counter) {
    counter.inc();
  }

  void visitorDispatch94(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub94(this, arg);
  }
}

class Sub95 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch95(Counter counter) {
    counter.inc();
  }

  void visitorDispatch95(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub95(this, arg);
  }
}

class Sub96 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch96(Counter counter) {
    counter.inc();
  }

  void visitorDispatch96(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub96(this, arg);
  }
}

class Sub97 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch97(Counter counter) {
    counter.inc();
  }

  void visitorDispatch97(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub97(this, arg);
  }
}

class Sub98 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch98(Counter counter) {
    counter.inc();
  }

  void visitorDispatch98(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub98(this, arg);
  }
}

class Sub99 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch99(Counter counter) {
    counter.inc();
  }

  void visitorDispatch99(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub99(this, arg);
  }
}

class Sub100 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch100(Counter counter) {
    counter.inc();
  }

  void visitorDispatch100(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub100(this, arg);
  }
}

class Sub101 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch101(Counter counter) {
    counter.inc();
  }

  void visitorDispatch101(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub101(this, arg);
  }
}

class Sub102 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch102(Counter counter) {
    counter.inc();
  }

  void visitorDispatch102(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub102(this, arg);
  }
}

class Sub103 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch103(Counter counter) {
    counter.inc();
  }

  void visitorDispatch103(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub103(this, arg);
  }
}

class Sub104 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch104(Counter counter) {
    counter.inc();
  }

  void visitorDispatch104(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub104(this, arg);
  }
}

class Sub105 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch105(Counter counter) {
    counter.inc();
  }

  void visitorDispatch105(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub105(this, arg);
  }
}

class Sub106 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch106(Counter counter) {
    counter.inc();
  }

  void visitorDispatch106(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub106(this, arg);
  }
}

class Sub107 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch107(Counter counter) {
    counter.inc();
  }

  void visitorDispatch107(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub107(this, arg);
  }
}

class Sub108 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch108(Counter counter) {
    counter.inc();
  }

  void visitorDispatch108(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub108(this, arg);
  }
}

class Sub109 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch109(Counter counter) {
    counter.inc();
  }

  void visitorDispatch109(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub109(this, arg);
  }
}

class Sub110 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch110(Counter counter) {
    counter.inc();
  }

  void visitorDispatch110(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub110(this, arg);
  }
}

class Sub111 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch111(Counter counter) {
    counter.inc();
  }

  void visitorDispatch111(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub111(this, arg);
  }
}

class Sub112 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch112(Counter counter) {
    counter.inc();
  }

  void visitorDispatch112(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub112(this, arg);
  }
}

class Sub113 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch113(Counter counter) {
    counter.inc();
  }

  void visitorDispatch113(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub113(this, arg);
  }
}

class Sub114 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch114(Counter counter) {
    counter.inc();
  }

  void visitorDispatch114(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub114(this, arg);
  }
}

class Sub115 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch115(Counter counter) {
    counter.inc();
  }

  void visitorDispatch115(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub115(this, arg);
  }
}

class Sub116 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch116(Counter counter) {
    counter.inc();
  }

  void visitorDispatch116(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub116(this, arg);
  }
}

class Sub117 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch117(Counter counter) {
    counter.inc();
  }

  void visitorDispatch117(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub117(this, arg);
  }
}

class Sub118 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch118(Counter counter) {
    counter.inc();
  }

  void visitorDispatch118(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub118(this, arg);
  }
}

class Sub119 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch119(Counter counter) {
    counter.inc();
  }

  void visitorDispatch119(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub119(this, arg);
  }
}

class Sub120 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch120(Counter counter) {
    counter.inc();
  }

  void visitorDispatch120(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub120(this, arg);
  }
}

class Sub121 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch121(Counter counter) {
    counter.inc();
  }

  void visitorDispatch121(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub121(this, arg);
  }
}

class Sub122 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch122(Counter counter) {
    counter.inc();
  }

  void visitorDispatch122(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub122(this, arg);
  }
}

class Sub123 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch123(Counter counter) {
    counter.inc();
  }

  void visitorDispatch123(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub123(this, arg);
  }
}

class Sub124 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch124(Counter counter) {
    counter.inc();
  }

  void visitorDispatch124(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub124(this, arg);
  }
}

class Sub125 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch125(Counter counter) {
    counter.inc();
  }

  void visitorDispatch125(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub125(this, arg);
  }
}

class Sub126 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch126(Counter counter) {
    counter.inc();
  }

  void visitorDispatch126(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub126(this, arg);
  }
}

class Sub127 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch127(Counter counter) {
    counter.inc();
  }

  void visitorDispatch127(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub127(this, arg);
  }
}

class Sub128 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch128(Counter counter) {
    counter.inc();
  }

  void visitorDispatch128(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub128(this, arg);
  }
}

class Sub129 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch129(Counter counter) {
    counter.inc();
  }

  void visitorDispatch129(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub129(this, arg);
  }
}

class Sub130 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch130(Counter counter) {
    counter.inc();
  }

  void visitorDispatch130(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub130(this, arg);
  }
}

class Sub131 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch131(Counter counter) {
    counter.inc();
  }

  void visitorDispatch131(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub131(this, arg);
  }
}

class Sub132 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch132(Counter counter) {
    counter.inc();
  }

  void visitorDispatch132(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub132(this, arg);
  }
}

class Sub133 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch133(Counter counter) {
    counter.inc();
  }

  void visitorDispatch133(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub133(this, arg);
  }
}

class Sub134 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch134(Counter counter) {
    counter.inc();
  }

  void visitorDispatch134(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub134(this, arg);
  }
}

class Sub135 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch135(Counter counter) {
    counter.inc();
  }

  void visitorDispatch135(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub135(this, arg);
  }
}

class Sub136 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch136(Counter counter) {
    counter.inc();
  }

  void visitorDispatch136(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub136(this, arg);
  }
}

class Sub137 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch137(Counter counter) {
    counter.inc();
  }

  void visitorDispatch137(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub137(this, arg);
  }
}

class Sub138 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch138(Counter counter) {
    counter.inc();
  }

  void visitorDispatch138(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub138(this, arg);
  }
}

class Sub139 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch139(Counter counter) {
    counter.inc();
  }

  void visitorDispatch139(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub139(this, arg);
  }
}

class Sub140 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch140(Counter counter) {
    counter.inc();
  }

  void visitorDispatch140(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub140(this, arg);
  }
}

class Sub141 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch141(Counter counter) {
    counter.inc();
  }

  void visitorDispatch141(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub141(this, arg);
  }
}

class Sub142 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch142(Counter counter) {
    counter.inc();
  }

  void visitorDispatch142(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub142(this, arg);
  }
}

class Sub143 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch143(Counter counter) {
    counter.inc();
  }

  void visitorDispatch143(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub143(this, arg);
  }
}

class Sub144 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch144(Counter counter) {
    counter.inc();
  }

  void visitorDispatch144(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub144(this, arg);
  }
}

class Sub145 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch145(Counter counter) {
    counter.inc();
  }

  void visitorDispatch145(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub145(this, arg);
  }
}

class Sub146 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch146(Counter counter) {
    counter.inc();
  }

  void visitorDispatch146(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub146(this, arg);
  }
}

class Sub147 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch147(Counter counter) {
    counter.inc();
  }

  void visitorDispatch147(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub147(this, arg);
  }
}

class Sub148 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch148(Counter counter) {
    counter.inc();
  }

  void visitorDispatch148(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub148(this, arg);
  }
}

class Sub149 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch149(Counter counter) {
    counter.inc();
  }

  void visitorDispatch149(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub149(this, arg);
  }
}

class Sub150 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch150(Counter counter) {
    counter.inc();
  }

  void visitorDispatch150(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub150(this, arg);
  }
}

class Sub151 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch151(Counter counter) {
    counter.inc();
  }

  void visitorDispatch151(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub151(this, arg);
  }
}

class Sub152 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch152(Counter counter) {
    counter.inc();
  }

  void visitorDispatch152(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub152(this, arg);
  }
}

class Sub153 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch153(Counter counter) {
    counter.inc();
  }

  void visitorDispatch153(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub153(this, arg);
  }
}

class Sub154 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch154(Counter counter) {
    counter.inc();
  }

  void visitorDispatch154(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub154(this, arg);
  }
}

class Sub155 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch155(Counter counter) {
    counter.inc();
  }

  void visitorDispatch155(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub155(this, arg);
  }
}

class Sub156 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch156(Counter counter) {
    counter.inc();
  }

  void visitorDispatch156(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub156(this, arg);
  }
}

class Sub157 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch157(Counter counter) {
    counter.inc();
  }

  void visitorDispatch157(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub157(this, arg);
  }
}

class Sub158 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch158(Counter counter) {
    counter.inc();
  }

  void visitorDispatch158(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub158(this, arg);
  }
}

class Sub159 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch159(Counter counter) {
    counter.inc();
  }

  void visitorDispatch159(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub159(this, arg);
  }
}

class Sub160 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch160(Counter counter) {
    counter.inc();
  }

  void visitorDispatch160(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub160(this, arg);
  }
}

class Sub161 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch161(Counter counter) {
    counter.inc();
  }

  void visitorDispatch161(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub161(this, arg);
  }
}

class Sub162 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch162(Counter counter) {
    counter.inc();
  }

  void visitorDispatch162(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub162(this, arg);
  }
}

class Sub163 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch163(Counter counter) {
    counter.inc();
  }

  void visitorDispatch163(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub163(this, arg);
  }
}

class Sub164 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch164(Counter counter) {
    counter.inc();
  }

  void visitorDispatch164(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub164(this, arg);
  }
}

class Sub165 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch165(Counter counter) {
    counter.inc();
  }

  void visitorDispatch165(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub165(this, arg);
  }
}

class Sub166 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch166(Counter counter) {
    counter.inc();
  }

  void visitorDispatch166(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub166(this, arg);
  }
}

class Sub167 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch167(Counter counter) {
    counter.inc();
  }

  void visitorDispatch167(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub167(this, arg);
  }
}

class Sub168 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch168(Counter counter) {
    counter.inc();
  }

  void visitorDispatch168(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub168(this, arg);
  }
}

class Sub169 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch169(Counter counter) {
    counter.inc();
  }

  void visitorDispatch169(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub169(this, arg);
  }
}

class Sub170 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch170(Counter counter) {
    counter.inc();
  }

  void visitorDispatch170(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub170(this, arg);
  }
}

class Sub171 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch171(Counter counter) {
    counter.inc();
  }

  void visitorDispatch171(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub171(this, arg);
  }
}

class Sub172 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch172(Counter counter) {
    counter.inc();
  }

  void visitorDispatch172(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub172(this, arg);
  }
}

class Sub173 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch173(Counter counter) {
    counter.inc();
  }

  void visitorDispatch173(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub173(this, arg);
  }
}

class Sub174 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch174(Counter counter) {
    counter.inc();
  }

  void visitorDispatch174(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub174(this, arg);
  }
}

class Sub175 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch175(Counter counter) {
    counter.inc();
  }

  void visitorDispatch175(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub175(this, arg);
  }
}

class Sub176 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch176(Counter counter) {
    counter.inc();
  }

  void visitorDispatch176(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub176(this, arg);
  }
}

class Sub177 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch177(Counter counter) {
    counter.inc();
  }

  void visitorDispatch177(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub177(this, arg);
  }
}

class Sub178 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch178(Counter counter) {
    counter.inc();
  }

  void visitorDispatch178(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub178(this, arg);
  }
}

class Sub179 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch179(Counter counter) {
    counter.inc();
  }

  void visitorDispatch179(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub179(this, arg);
  }
}

class Sub180 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch180(Counter counter) {
    counter.inc();
  }

  void visitorDispatch180(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub180(this, arg);
  }
}

class Sub181 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch181(Counter counter) {
    counter.inc();
  }

  void visitorDispatch181(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub181(this, arg);
  }
}

class Sub182 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch182(Counter counter) {
    counter.inc();
  }

  void visitorDispatch182(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub182(this, arg);
  }
}

class Sub183 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch183(Counter counter) {
    counter.inc();
  }

  void visitorDispatch183(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub183(this, arg);
  }
}

class Sub184 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch184(Counter counter) {
    counter.inc();
  }

  void visitorDispatch184(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub184(this, arg);
  }
}

class Sub185 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch185(Counter counter) {
    counter.inc();
  }

  void visitorDispatch185(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub185(this, arg);
  }
}

class Sub186 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch186(Counter counter) {
    counter.inc();
  }

  void visitorDispatch186(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub186(this, arg);
  }
}

class Sub187 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch187(Counter counter) {
    counter.inc();
  }

  void visitorDispatch187(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub187(this, arg);
  }
}

class Sub188 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch188(Counter counter) {
    counter.inc();
  }

  void visitorDispatch188(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub188(this, arg);
  }
}

class Sub189 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch189(Counter counter) {
    counter.inc();
  }

  void visitorDispatch189(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub189(this, arg);
  }
}

class Sub190 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch190(Counter counter) {
    counter.inc();
  }

  void visitorDispatch190(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub190(this, arg);
  }
}

class Sub191 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch191(Counter counter) {
    counter.inc();
  }

  void visitorDispatch191(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub191(this, arg);
  }
}

class Sub192 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch192(Counter counter) {
    counter.inc();
  }

  void visitorDispatch192(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub192(this, arg);
  }
}

class Sub193 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch193(Counter counter) {
    counter.inc();
  }

  void visitorDispatch193(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub193(this, arg);
  }
}

class Sub194 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch194(Counter counter) {
    counter.inc();
  }

  void visitorDispatch194(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub194(this, arg);
  }
}

class Sub195 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch195(Counter counter) {
    counter.inc();
  }

  void visitorDispatch195(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub195(this, arg);
  }
}

class Sub196 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch196(Counter counter) {
    counter.inc();
  }

  void visitorDispatch196(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub196(this, arg);
  }
}

class Sub197 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch197(Counter counter) {
    counter.inc();
  }

  void visitorDispatch197(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub197(this, arg);
  }
}

class Sub198 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch198(Counter counter) {
    counter.inc();
  }

  void visitorDispatch198(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub198(this, arg);
  }
}

class Sub199 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch199(Counter counter) {
    counter.inc();
  }

  void visitorDispatch199(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub199(this, arg);
  }
}

class Sub200 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch200(Counter counter) {
    counter.inc();
  }

  void visitorDispatch200(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub200(this, arg);
  }
}

class Sub201 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch201(Counter counter) {
    counter.inc();
  }

  void visitorDispatch201(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub201(this, arg);
  }
}

class Sub202 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch202(Counter counter) {
    counter.inc();
  }

  void visitorDispatch202(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub202(this, arg);
  }
}

class Sub203 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch203(Counter counter) {
    counter.inc();
  }

  void visitorDispatch203(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub203(this, arg);
  }
}

class Sub204 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch204(Counter counter) {
    counter.inc();
  }

  void visitorDispatch204(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub204(this, arg);
  }
}

class Sub205 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch205(Counter counter) {
    counter.inc();
  }

  void visitorDispatch205(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub205(this, arg);
  }
}

class Sub206 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch206(Counter counter) {
    counter.inc();
  }

  void visitorDispatch206(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub206(this, arg);
  }
}

class Sub207 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch207(Counter counter) {
    counter.inc();
  }

  void visitorDispatch207(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub207(this, arg);
  }
}

class Sub208 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch208(Counter counter) {
    counter.inc();
  }

  void visitorDispatch208(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub208(this, arg);
  }
}

class Sub209 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch209(Counter counter) {
    counter.inc();
  }

  void visitorDispatch209(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub209(this, arg);
  }
}

class Sub210 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch210(Counter counter) {
    counter.inc();
  }

  void visitorDispatch210(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub210(this, arg);
  }
}

class Sub211 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch211(Counter counter) {
    counter.inc();
  }

  void visitorDispatch211(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub211(this, arg);
  }
}

class Sub212 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch212(Counter counter) {
    counter.inc();
  }

  void visitorDispatch212(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub212(this, arg);
  }
}

class Sub213 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch213(Counter counter) {
    counter.inc();
  }

  void visitorDispatch213(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub213(this, arg);
  }
}

class Sub214 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch214(Counter counter) {
    counter.inc();
  }

  void visitorDispatch214(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub214(this, arg);
  }
}

class Sub215 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch215(Counter counter) {
    counter.inc();
  }

  void visitorDispatch215(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub215(this, arg);
  }
}

class Sub216 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch216(Counter counter) {
    counter.inc();
  }

  void visitorDispatch216(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub216(this, arg);
  }
}

class Sub217 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch217(Counter counter) {
    counter.inc();
  }

  void visitorDispatch217(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub217(this, arg);
  }
}

class Sub218 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch218(Counter counter) {
    counter.inc();
  }

  void visitorDispatch218(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub218(this, arg);
  }
}

class Sub219 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch219(Counter counter) {
    counter.inc();
  }

  void visitorDispatch219(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub219(this, arg);
  }
}

class Sub220 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch220(Counter counter) {
    counter.inc();
  }

  void visitorDispatch220(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub220(this, arg);
  }
}

class Sub221 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch221(Counter counter) {
    counter.inc();
  }

  void visitorDispatch221(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub221(this, arg);
  }
}

class Sub222 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch222(Counter counter) {
    counter.inc();
  }

  void visitorDispatch222(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub222(this, arg);
  }
}

class Sub223 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch223(Counter counter) {
    counter.inc();
  }

  void visitorDispatch223(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub223(this, arg);
  }
}

class Sub224 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch224(Counter counter) {
    counter.inc();
  }

  void visitorDispatch224(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub224(this, arg);
  }
}

class Sub225 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch225(Counter counter) {
    counter.inc();
  }

  void visitorDispatch225(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub225(this, arg);
  }
}

class Sub226 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch226(Counter counter) {
    counter.inc();
  }

  void visitorDispatch226(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub226(this, arg);
  }
}

class Sub227 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch227(Counter counter) {
    counter.inc();
  }

  void visitorDispatch227(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub227(this, arg);
  }
}

class Sub228 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch228(Counter counter) {
    counter.inc();
  }

  void visitorDispatch228(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub228(this, arg);
  }
}

class Sub229 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch229(Counter counter) {
    counter.inc();
  }

  void visitorDispatch229(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub229(this, arg);
  }
}

class Sub230 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch230(Counter counter) {
    counter.inc();
  }

  void visitorDispatch230(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub230(this, arg);
  }
}

class Sub231 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch231(Counter counter) {
    counter.inc();
  }

  void visitorDispatch231(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub231(this, arg);
  }
}

class Sub232 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch232(Counter counter) {
    counter.inc();
  }

  void visitorDispatch232(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub232(this, arg);
  }
}

class Sub233 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch233(Counter counter) {
    counter.inc();
  }

  void visitorDispatch233(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub233(this, arg);
  }
}

class Sub234 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch234(Counter counter) {
    counter.inc();
  }

  void visitorDispatch234(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub234(this, arg);
  }
}

class Sub235 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch235(Counter counter) {
    counter.inc();
  }

  void visitorDispatch235(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub235(this, arg);
  }
}

class Sub236 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch236(Counter counter) {
    counter.inc();
  }

  void visitorDispatch236(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub236(this, arg);
  }
}

class Sub237 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch237(Counter counter) {
    counter.inc();
  }

  void visitorDispatch237(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub237(this, arg);
  }
}

class Sub238 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch238(Counter counter) {
    counter.inc();
  }

  void visitorDispatch238(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub238(this, arg);
  }
}

class Sub239 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch239(Counter counter) {
    counter.inc();
  }

  void visitorDispatch239(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub239(this, arg);
  }
}

class Sub240 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch240(Counter counter) {
    counter.inc();
  }

  void visitorDispatch240(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub240(this, arg);
  }
}

class Sub241 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch241(Counter counter) {
    counter.inc();
  }

  void visitorDispatch241(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub241(this, arg);
  }
}

class Sub242 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch242(Counter counter) {
    counter.inc();
  }

  void visitorDispatch242(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub242(this, arg);
  }
}

class Sub243 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch243(Counter counter) {
    counter.inc();
  }

  void visitorDispatch243(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub243(this, arg);
  }
}

class Sub244 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch244(Counter counter) {
    counter.inc();
  }

  void visitorDispatch244(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub244(this, arg);
  }
}

class Sub245 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch245(Counter counter) {
    counter.inc();
  }

  void visitorDispatch245(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub245(this, arg);
  }
}

class Sub246 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch246(Counter counter) {
    counter.inc();
  }

  void visitorDispatch246(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub246(this, arg);
  }
}

class Sub247 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch247(Counter counter) {
    counter.inc();
  }

  void visitorDispatch247(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub247(this, arg);
  }
}

class Sub248 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch248(Counter counter) {
    counter.inc();
  }

  void visitorDispatch248(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub248(this, arg);
  }
}

class Sub249 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch249(Counter counter) {
    counter.inc();
  }

  void visitorDispatch249(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub249(this, arg);
  }
}

class Sub250 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch250(Counter counter) {
    counter.inc();
  }

  void visitorDispatch250(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub250(this, arg);
  }
}

class Sub251 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch251(Counter counter) {
    counter.inc();
  }

  void visitorDispatch251(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub251(this, arg);
  }
}

class Sub252 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch252(Counter counter) {
    counter.inc();
  }

  void visitorDispatch252(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub252(this, arg);
  }
}

class Sub253 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch253(Counter counter) {
    counter.inc();
  }

  void visitorDispatch253(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub253(this, arg);
  }
}

class Sub254 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch254(Counter counter) {
    counter.inc();
  }

  void visitorDispatch254(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub254(this, arg);
  }
}

class Sub255 extends Base256 {
  @override
  void dynamicDispatch(Counter counter) {
    counter.inc();
  }

  void ifThenElseDispatch255(Counter counter) {
    counter.inc();
  }

  void visitorDispatch255(Counter counter) {
    counter.inc();
  }

  @override
  R accept<R, A>(Visitor256<R, A> visitor, A arg) {
    return visitor.visitSub255(this, arg);
  }
}

List<Base256> createData256() {
  return [
    Sub0(),
    Sub1(),
    Sub2(),
    Sub3(),
    Sub4(),
    Sub5(),
    Sub6(),
    Sub7(),
    Sub8(),
    Sub9(),
    Sub10(),
    Sub11(),
    Sub12(),
    Sub13(),
    Sub14(),
    Sub15(),
    Sub16(),
    Sub17(),
    Sub18(),
    Sub19(),
    Sub20(),
    Sub21(),
    Sub22(),
    Sub23(),
    Sub24(),
    Sub25(),
    Sub26(),
    Sub27(),
    Sub28(),
    Sub29(),
    Sub30(),
    Sub31(),
    Sub32(),
    Sub33(),
    Sub34(),
    Sub35(),
    Sub36(),
    Sub37(),
    Sub38(),
    Sub39(),
    Sub40(),
    Sub41(),
    Sub42(),
    Sub43(),
    Sub44(),
    Sub45(),
    Sub46(),
    Sub47(),
    Sub48(),
    Sub49(),
    Sub50(),
    Sub51(),
    Sub52(),
    Sub53(),
    Sub54(),
    Sub55(),
    Sub56(),
    Sub57(),
    Sub58(),
    Sub59(),
    Sub60(),
    Sub61(),
    Sub62(),
    Sub63(),
    Sub64(),
    Sub65(),
    Sub66(),
    Sub67(),
    Sub68(),
    Sub69(),
    Sub70(),
    Sub71(),
    Sub72(),
    Sub73(),
    Sub74(),
    Sub75(),
    Sub76(),
    Sub77(),
    Sub78(),
    Sub79(),
    Sub80(),
    Sub81(),
    Sub82(),
    Sub83(),
    Sub84(),
    Sub85(),
    Sub86(),
    Sub87(),
    Sub88(),
    Sub89(),
    Sub90(),
    Sub91(),
    Sub92(),
    Sub93(),
    Sub94(),
    Sub95(),
    Sub96(),
    Sub97(),
    Sub98(),
    Sub99(),
    Sub100(),
    Sub101(),
    Sub102(),
    Sub103(),
    Sub104(),
    Sub105(),
    Sub106(),
    Sub107(),
    Sub108(),
    Sub109(),
    Sub110(),
    Sub111(),
    Sub112(),
    Sub113(),
    Sub114(),
    Sub115(),
    Sub116(),
    Sub117(),
    Sub118(),
    Sub119(),
    Sub120(),
    Sub121(),
    Sub122(),
    Sub123(),
    Sub124(),
    Sub125(),
    Sub126(),
    Sub127(),
    Sub128(),
    Sub129(),
    Sub130(),
    Sub131(),
    Sub132(),
    Sub133(),
    Sub134(),
    Sub135(),
    Sub136(),
    Sub137(),
    Sub138(),
    Sub139(),
    Sub140(),
    Sub141(),
    Sub142(),
    Sub143(),
    Sub144(),
    Sub145(),
    Sub146(),
    Sub147(),
    Sub148(),
    Sub149(),
    Sub150(),
    Sub151(),
    Sub152(),
    Sub153(),
    Sub154(),
    Sub155(),
    Sub156(),
    Sub157(),
    Sub158(),
    Sub159(),
    Sub160(),
    Sub161(),
    Sub162(),
    Sub163(),
    Sub164(),
    Sub165(),
    Sub166(),
    Sub167(),
    Sub168(),
    Sub169(),
    Sub170(),
    Sub171(),
    Sub172(),
    Sub173(),
    Sub174(),
    Sub175(),
    Sub176(),
    Sub177(),
    Sub178(),
    Sub179(),
    Sub180(),
    Sub181(),
    Sub182(),
    Sub183(),
    Sub184(),
    Sub185(),
    Sub186(),
    Sub187(),
    Sub188(),
    Sub189(),
    Sub190(),
    Sub191(),
    Sub192(),
    Sub193(),
    Sub194(),
    Sub195(),
    Sub196(),
    Sub197(),
    Sub198(),
    Sub199(),
    Sub200(),
    Sub201(),
    Sub202(),
    Sub203(),
    Sub204(),
    Sub205(),
    Sub206(),
    Sub207(),
    Sub208(),
    Sub209(),
    Sub210(),
    Sub211(),
    Sub212(),
    Sub213(),
    Sub214(),
    Sub215(),
    Sub216(),
    Sub217(),
    Sub218(),
    Sub219(),
    Sub220(),
    Sub221(),
    Sub222(),
    Sub223(),
    Sub224(),
    Sub225(),
    Sub226(),
    Sub227(),
    Sub228(),
    Sub229(),
    Sub230(),
    Sub231(),
    Sub232(),
    Sub233(),
    Sub234(),
    Sub235(),
    Sub236(),
    Sub237(),
    Sub238(),
    Sub239(),
    Sub240(),
    Sub241(),
    Sub242(),
    Sub243(),
    Sub244(),
    Sub245(),
    Sub246(),
    Sub247(),
    Sub248(),
    Sub249(),
    Sub250(),
    Sub251(),
    Sub252(),
    Sub253(),
    Sub254(),
    Sub255(),
  ];
}

void incByDynamicDispatch256(Base256 base, Counter counter) {
  base.dynamicDispatch(counter);
}

void incByIfThenElseDispatch256(Base256 base, Counter counter) {
  if (base is Sub0) {
    base.ifThenElseDispatch0(counter);
  } else if (base is Sub1) {
    base.ifThenElseDispatch1(counter);
  } else if (base is Sub2) {
    base.ifThenElseDispatch2(counter);
  } else if (base is Sub3) {
    base.ifThenElseDispatch3(counter);
  } else if (base is Sub4) {
    base.ifThenElseDispatch4(counter);
  } else if (base is Sub5) {
    base.ifThenElseDispatch5(counter);
  } else if (base is Sub6) {
    base.ifThenElseDispatch6(counter);
  } else if (base is Sub7) {
    base.ifThenElseDispatch7(counter);
  } else if (base is Sub8) {
    base.ifThenElseDispatch8(counter);
  } else if (base is Sub9) {
    base.ifThenElseDispatch9(counter);
  } else if (base is Sub10) {
    base.ifThenElseDispatch10(counter);
  } else if (base is Sub11) {
    base.ifThenElseDispatch11(counter);
  } else if (base is Sub12) {
    base.ifThenElseDispatch12(counter);
  } else if (base is Sub13) {
    base.ifThenElseDispatch13(counter);
  } else if (base is Sub14) {
    base.ifThenElseDispatch14(counter);
  } else if (base is Sub15) {
    base.ifThenElseDispatch15(counter);
  } else if (base is Sub16) {
    base.ifThenElseDispatch16(counter);
  } else if (base is Sub17) {
    base.ifThenElseDispatch17(counter);
  } else if (base is Sub18) {
    base.ifThenElseDispatch18(counter);
  } else if (base is Sub19) {
    base.ifThenElseDispatch19(counter);
  } else if (base is Sub20) {
    base.ifThenElseDispatch20(counter);
  } else if (base is Sub21) {
    base.ifThenElseDispatch21(counter);
  } else if (base is Sub22) {
    base.ifThenElseDispatch22(counter);
  } else if (base is Sub23) {
    base.ifThenElseDispatch23(counter);
  } else if (base is Sub24) {
    base.ifThenElseDispatch24(counter);
  } else if (base is Sub25) {
    base.ifThenElseDispatch25(counter);
  } else if (base is Sub26) {
    base.ifThenElseDispatch26(counter);
  } else if (base is Sub27) {
    base.ifThenElseDispatch27(counter);
  } else if (base is Sub28) {
    base.ifThenElseDispatch28(counter);
  } else if (base is Sub29) {
    base.ifThenElseDispatch29(counter);
  } else if (base is Sub30) {
    base.ifThenElseDispatch30(counter);
  } else if (base is Sub31) {
    base.ifThenElseDispatch31(counter);
  } else if (base is Sub32) {
    base.ifThenElseDispatch32(counter);
  } else if (base is Sub33) {
    base.ifThenElseDispatch33(counter);
  } else if (base is Sub34) {
    base.ifThenElseDispatch34(counter);
  } else if (base is Sub35) {
    base.ifThenElseDispatch35(counter);
  } else if (base is Sub36) {
    base.ifThenElseDispatch36(counter);
  } else if (base is Sub37) {
    base.ifThenElseDispatch37(counter);
  } else if (base is Sub38) {
    base.ifThenElseDispatch38(counter);
  } else if (base is Sub39) {
    base.ifThenElseDispatch39(counter);
  } else if (base is Sub40) {
    base.ifThenElseDispatch40(counter);
  } else if (base is Sub41) {
    base.ifThenElseDispatch41(counter);
  } else if (base is Sub42) {
    base.ifThenElseDispatch42(counter);
  } else if (base is Sub43) {
    base.ifThenElseDispatch43(counter);
  } else if (base is Sub44) {
    base.ifThenElseDispatch44(counter);
  } else if (base is Sub45) {
    base.ifThenElseDispatch45(counter);
  } else if (base is Sub46) {
    base.ifThenElseDispatch46(counter);
  } else if (base is Sub47) {
    base.ifThenElseDispatch47(counter);
  } else if (base is Sub48) {
    base.ifThenElseDispatch48(counter);
  } else if (base is Sub49) {
    base.ifThenElseDispatch49(counter);
  } else if (base is Sub50) {
    base.ifThenElseDispatch50(counter);
  } else if (base is Sub51) {
    base.ifThenElseDispatch51(counter);
  } else if (base is Sub52) {
    base.ifThenElseDispatch52(counter);
  } else if (base is Sub53) {
    base.ifThenElseDispatch53(counter);
  } else if (base is Sub54) {
    base.ifThenElseDispatch54(counter);
  } else if (base is Sub55) {
    base.ifThenElseDispatch55(counter);
  } else if (base is Sub56) {
    base.ifThenElseDispatch56(counter);
  } else if (base is Sub57) {
    base.ifThenElseDispatch57(counter);
  } else if (base is Sub58) {
    base.ifThenElseDispatch58(counter);
  } else if (base is Sub59) {
    base.ifThenElseDispatch59(counter);
  } else if (base is Sub60) {
    base.ifThenElseDispatch60(counter);
  } else if (base is Sub61) {
    base.ifThenElseDispatch61(counter);
  } else if (base is Sub62) {
    base.ifThenElseDispatch62(counter);
  } else if (base is Sub63) {
    base.ifThenElseDispatch63(counter);
  } else if (base is Sub64) {
    base.ifThenElseDispatch64(counter);
  } else if (base is Sub65) {
    base.ifThenElseDispatch65(counter);
  } else if (base is Sub66) {
    base.ifThenElseDispatch66(counter);
  } else if (base is Sub67) {
    base.ifThenElseDispatch67(counter);
  } else if (base is Sub68) {
    base.ifThenElseDispatch68(counter);
  } else if (base is Sub69) {
    base.ifThenElseDispatch69(counter);
  } else if (base is Sub70) {
    base.ifThenElseDispatch70(counter);
  } else if (base is Sub71) {
    base.ifThenElseDispatch71(counter);
  } else if (base is Sub72) {
    base.ifThenElseDispatch72(counter);
  } else if (base is Sub73) {
    base.ifThenElseDispatch73(counter);
  } else if (base is Sub74) {
    base.ifThenElseDispatch74(counter);
  } else if (base is Sub75) {
    base.ifThenElseDispatch75(counter);
  } else if (base is Sub76) {
    base.ifThenElseDispatch76(counter);
  } else if (base is Sub77) {
    base.ifThenElseDispatch77(counter);
  } else if (base is Sub78) {
    base.ifThenElseDispatch78(counter);
  } else if (base is Sub79) {
    base.ifThenElseDispatch79(counter);
  } else if (base is Sub80) {
    base.ifThenElseDispatch80(counter);
  } else if (base is Sub81) {
    base.ifThenElseDispatch81(counter);
  } else if (base is Sub82) {
    base.ifThenElseDispatch82(counter);
  } else if (base is Sub83) {
    base.ifThenElseDispatch83(counter);
  } else if (base is Sub84) {
    base.ifThenElseDispatch84(counter);
  } else if (base is Sub85) {
    base.ifThenElseDispatch85(counter);
  } else if (base is Sub86) {
    base.ifThenElseDispatch86(counter);
  } else if (base is Sub87) {
    base.ifThenElseDispatch87(counter);
  } else if (base is Sub88) {
    base.ifThenElseDispatch88(counter);
  } else if (base is Sub89) {
    base.ifThenElseDispatch89(counter);
  } else if (base is Sub90) {
    base.ifThenElseDispatch90(counter);
  } else if (base is Sub91) {
    base.ifThenElseDispatch91(counter);
  } else if (base is Sub92) {
    base.ifThenElseDispatch92(counter);
  } else if (base is Sub93) {
    base.ifThenElseDispatch93(counter);
  } else if (base is Sub94) {
    base.ifThenElseDispatch94(counter);
  } else if (base is Sub95) {
    base.ifThenElseDispatch95(counter);
  } else if (base is Sub96) {
    base.ifThenElseDispatch96(counter);
  } else if (base is Sub97) {
    base.ifThenElseDispatch97(counter);
  } else if (base is Sub98) {
    base.ifThenElseDispatch98(counter);
  } else if (base is Sub99) {
    base.ifThenElseDispatch99(counter);
  } else if (base is Sub100) {
    base.ifThenElseDispatch100(counter);
  } else if (base is Sub101) {
    base.ifThenElseDispatch101(counter);
  } else if (base is Sub102) {
    base.ifThenElseDispatch102(counter);
  } else if (base is Sub103) {
    base.ifThenElseDispatch103(counter);
  } else if (base is Sub104) {
    base.ifThenElseDispatch104(counter);
  } else if (base is Sub105) {
    base.ifThenElseDispatch105(counter);
  } else if (base is Sub106) {
    base.ifThenElseDispatch106(counter);
  } else if (base is Sub107) {
    base.ifThenElseDispatch107(counter);
  } else if (base is Sub108) {
    base.ifThenElseDispatch108(counter);
  } else if (base is Sub109) {
    base.ifThenElseDispatch109(counter);
  } else if (base is Sub110) {
    base.ifThenElseDispatch110(counter);
  } else if (base is Sub111) {
    base.ifThenElseDispatch111(counter);
  } else if (base is Sub112) {
    base.ifThenElseDispatch112(counter);
  } else if (base is Sub113) {
    base.ifThenElseDispatch113(counter);
  } else if (base is Sub114) {
    base.ifThenElseDispatch114(counter);
  } else if (base is Sub115) {
    base.ifThenElseDispatch115(counter);
  } else if (base is Sub116) {
    base.ifThenElseDispatch116(counter);
  } else if (base is Sub117) {
    base.ifThenElseDispatch117(counter);
  } else if (base is Sub118) {
    base.ifThenElseDispatch118(counter);
  } else if (base is Sub119) {
    base.ifThenElseDispatch119(counter);
  } else if (base is Sub120) {
    base.ifThenElseDispatch120(counter);
  } else if (base is Sub121) {
    base.ifThenElseDispatch121(counter);
  } else if (base is Sub122) {
    base.ifThenElseDispatch122(counter);
  } else if (base is Sub123) {
    base.ifThenElseDispatch123(counter);
  } else if (base is Sub124) {
    base.ifThenElseDispatch124(counter);
  } else if (base is Sub125) {
    base.ifThenElseDispatch125(counter);
  } else if (base is Sub126) {
    base.ifThenElseDispatch126(counter);
  } else if (base is Sub127) {
    base.ifThenElseDispatch127(counter);
  } else if (base is Sub128) {
    base.ifThenElseDispatch128(counter);
  } else if (base is Sub129) {
    base.ifThenElseDispatch129(counter);
  } else if (base is Sub130) {
    base.ifThenElseDispatch130(counter);
  } else if (base is Sub131) {
    base.ifThenElseDispatch131(counter);
  } else if (base is Sub132) {
    base.ifThenElseDispatch132(counter);
  } else if (base is Sub133) {
    base.ifThenElseDispatch133(counter);
  } else if (base is Sub134) {
    base.ifThenElseDispatch134(counter);
  } else if (base is Sub135) {
    base.ifThenElseDispatch135(counter);
  } else if (base is Sub136) {
    base.ifThenElseDispatch136(counter);
  } else if (base is Sub137) {
    base.ifThenElseDispatch137(counter);
  } else if (base is Sub138) {
    base.ifThenElseDispatch138(counter);
  } else if (base is Sub139) {
    base.ifThenElseDispatch139(counter);
  } else if (base is Sub140) {
    base.ifThenElseDispatch140(counter);
  } else if (base is Sub141) {
    base.ifThenElseDispatch141(counter);
  } else if (base is Sub142) {
    base.ifThenElseDispatch142(counter);
  } else if (base is Sub143) {
    base.ifThenElseDispatch143(counter);
  } else if (base is Sub144) {
    base.ifThenElseDispatch144(counter);
  } else if (base is Sub145) {
    base.ifThenElseDispatch145(counter);
  } else if (base is Sub146) {
    base.ifThenElseDispatch146(counter);
  } else if (base is Sub147) {
    base.ifThenElseDispatch147(counter);
  } else if (base is Sub148) {
    base.ifThenElseDispatch148(counter);
  } else if (base is Sub149) {
    base.ifThenElseDispatch149(counter);
  } else if (base is Sub150) {
    base.ifThenElseDispatch150(counter);
  } else if (base is Sub151) {
    base.ifThenElseDispatch151(counter);
  } else if (base is Sub152) {
    base.ifThenElseDispatch152(counter);
  } else if (base is Sub153) {
    base.ifThenElseDispatch153(counter);
  } else if (base is Sub154) {
    base.ifThenElseDispatch154(counter);
  } else if (base is Sub155) {
    base.ifThenElseDispatch155(counter);
  } else if (base is Sub156) {
    base.ifThenElseDispatch156(counter);
  } else if (base is Sub157) {
    base.ifThenElseDispatch157(counter);
  } else if (base is Sub158) {
    base.ifThenElseDispatch158(counter);
  } else if (base is Sub159) {
    base.ifThenElseDispatch159(counter);
  } else if (base is Sub160) {
    base.ifThenElseDispatch160(counter);
  } else if (base is Sub161) {
    base.ifThenElseDispatch161(counter);
  } else if (base is Sub162) {
    base.ifThenElseDispatch162(counter);
  } else if (base is Sub163) {
    base.ifThenElseDispatch163(counter);
  } else if (base is Sub164) {
    base.ifThenElseDispatch164(counter);
  } else if (base is Sub165) {
    base.ifThenElseDispatch165(counter);
  } else if (base is Sub166) {
    base.ifThenElseDispatch166(counter);
  } else if (base is Sub167) {
    base.ifThenElseDispatch167(counter);
  } else if (base is Sub168) {
    base.ifThenElseDispatch168(counter);
  } else if (base is Sub169) {
    base.ifThenElseDispatch169(counter);
  } else if (base is Sub170) {
    base.ifThenElseDispatch170(counter);
  } else if (base is Sub171) {
    base.ifThenElseDispatch171(counter);
  } else if (base is Sub172) {
    base.ifThenElseDispatch172(counter);
  } else if (base is Sub173) {
    base.ifThenElseDispatch173(counter);
  } else if (base is Sub174) {
    base.ifThenElseDispatch174(counter);
  } else if (base is Sub175) {
    base.ifThenElseDispatch175(counter);
  } else if (base is Sub176) {
    base.ifThenElseDispatch176(counter);
  } else if (base is Sub177) {
    base.ifThenElseDispatch177(counter);
  } else if (base is Sub178) {
    base.ifThenElseDispatch178(counter);
  } else if (base is Sub179) {
    base.ifThenElseDispatch179(counter);
  } else if (base is Sub180) {
    base.ifThenElseDispatch180(counter);
  } else if (base is Sub181) {
    base.ifThenElseDispatch181(counter);
  } else if (base is Sub182) {
    base.ifThenElseDispatch182(counter);
  } else if (base is Sub183) {
    base.ifThenElseDispatch183(counter);
  } else if (base is Sub184) {
    base.ifThenElseDispatch184(counter);
  } else if (base is Sub185) {
    base.ifThenElseDispatch185(counter);
  } else if (base is Sub186) {
    base.ifThenElseDispatch186(counter);
  } else if (base is Sub187) {
    base.ifThenElseDispatch187(counter);
  } else if (base is Sub188) {
    base.ifThenElseDispatch188(counter);
  } else if (base is Sub189) {
    base.ifThenElseDispatch189(counter);
  } else if (base is Sub190) {
    base.ifThenElseDispatch190(counter);
  } else if (base is Sub191) {
    base.ifThenElseDispatch191(counter);
  } else if (base is Sub192) {
    base.ifThenElseDispatch192(counter);
  } else if (base is Sub193) {
    base.ifThenElseDispatch193(counter);
  } else if (base is Sub194) {
    base.ifThenElseDispatch194(counter);
  } else if (base is Sub195) {
    base.ifThenElseDispatch195(counter);
  } else if (base is Sub196) {
    base.ifThenElseDispatch196(counter);
  } else if (base is Sub197) {
    base.ifThenElseDispatch197(counter);
  } else if (base is Sub198) {
    base.ifThenElseDispatch198(counter);
  } else if (base is Sub199) {
    base.ifThenElseDispatch199(counter);
  } else if (base is Sub200) {
    base.ifThenElseDispatch200(counter);
  } else if (base is Sub201) {
    base.ifThenElseDispatch201(counter);
  } else if (base is Sub202) {
    base.ifThenElseDispatch202(counter);
  } else if (base is Sub203) {
    base.ifThenElseDispatch203(counter);
  } else if (base is Sub204) {
    base.ifThenElseDispatch204(counter);
  } else if (base is Sub205) {
    base.ifThenElseDispatch205(counter);
  } else if (base is Sub206) {
    base.ifThenElseDispatch206(counter);
  } else if (base is Sub207) {
    base.ifThenElseDispatch207(counter);
  } else if (base is Sub208) {
    base.ifThenElseDispatch208(counter);
  } else if (base is Sub209) {
    base.ifThenElseDispatch209(counter);
  } else if (base is Sub210) {
    base.ifThenElseDispatch210(counter);
  } else if (base is Sub211) {
    base.ifThenElseDispatch211(counter);
  } else if (base is Sub212) {
    base.ifThenElseDispatch212(counter);
  } else if (base is Sub213) {
    base.ifThenElseDispatch213(counter);
  } else if (base is Sub214) {
    base.ifThenElseDispatch214(counter);
  } else if (base is Sub215) {
    base.ifThenElseDispatch215(counter);
  } else if (base is Sub216) {
    base.ifThenElseDispatch216(counter);
  } else if (base is Sub217) {
    base.ifThenElseDispatch217(counter);
  } else if (base is Sub218) {
    base.ifThenElseDispatch218(counter);
  } else if (base is Sub219) {
    base.ifThenElseDispatch219(counter);
  } else if (base is Sub220) {
    base.ifThenElseDispatch220(counter);
  } else if (base is Sub221) {
    base.ifThenElseDispatch221(counter);
  } else if (base is Sub222) {
    base.ifThenElseDispatch222(counter);
  } else if (base is Sub223) {
    base.ifThenElseDispatch223(counter);
  } else if (base is Sub224) {
    base.ifThenElseDispatch224(counter);
  } else if (base is Sub225) {
    base.ifThenElseDispatch225(counter);
  } else if (base is Sub226) {
    base.ifThenElseDispatch226(counter);
  } else if (base is Sub227) {
    base.ifThenElseDispatch227(counter);
  } else if (base is Sub228) {
    base.ifThenElseDispatch228(counter);
  } else if (base is Sub229) {
    base.ifThenElseDispatch229(counter);
  } else if (base is Sub230) {
    base.ifThenElseDispatch230(counter);
  } else if (base is Sub231) {
    base.ifThenElseDispatch231(counter);
  } else if (base is Sub232) {
    base.ifThenElseDispatch232(counter);
  } else if (base is Sub233) {
    base.ifThenElseDispatch233(counter);
  } else if (base is Sub234) {
    base.ifThenElseDispatch234(counter);
  } else if (base is Sub235) {
    base.ifThenElseDispatch235(counter);
  } else if (base is Sub236) {
    base.ifThenElseDispatch236(counter);
  } else if (base is Sub237) {
    base.ifThenElseDispatch237(counter);
  } else if (base is Sub238) {
    base.ifThenElseDispatch238(counter);
  } else if (base is Sub239) {
    base.ifThenElseDispatch239(counter);
  } else if (base is Sub240) {
    base.ifThenElseDispatch240(counter);
  } else if (base is Sub241) {
    base.ifThenElseDispatch241(counter);
  } else if (base is Sub242) {
    base.ifThenElseDispatch242(counter);
  } else if (base is Sub243) {
    base.ifThenElseDispatch243(counter);
  } else if (base is Sub244) {
    base.ifThenElseDispatch244(counter);
  } else if (base is Sub245) {
    base.ifThenElseDispatch245(counter);
  } else if (base is Sub246) {
    base.ifThenElseDispatch246(counter);
  } else if (base is Sub247) {
    base.ifThenElseDispatch247(counter);
  } else if (base is Sub248) {
    base.ifThenElseDispatch248(counter);
  } else if (base is Sub249) {
    base.ifThenElseDispatch249(counter);
  } else if (base is Sub250) {
    base.ifThenElseDispatch250(counter);
  } else if (base is Sub251) {
    base.ifThenElseDispatch251(counter);
  } else if (base is Sub252) {
    base.ifThenElseDispatch252(counter);
  } else if (base is Sub253) {
    base.ifThenElseDispatch253(counter);
  } else if (base is Sub254) {
    base.ifThenElseDispatch254(counter);
  } else if (base is Sub255) {
    base.ifThenElseDispatch255(counter);
  }
}

const Visitor256<void, Counter> visitor = CounterVisitor256();

void incByVisitorDispatch256(Base256 base, Counter counter) {
  base.accept(visitor, counter);
}

abstract class Visitor256<R, A> {
  R visitSub0(Sub0 sub, A arg);
  R visitSub1(Sub1 sub, A arg);
  R visitSub2(Sub2 sub, A arg);
  R visitSub3(Sub3 sub, A arg);
  R visitSub4(Sub4 sub, A arg);
  R visitSub5(Sub5 sub, A arg);
  R visitSub6(Sub6 sub, A arg);
  R visitSub7(Sub7 sub, A arg);
  R visitSub8(Sub8 sub, A arg);
  R visitSub9(Sub9 sub, A arg);
  R visitSub10(Sub10 sub, A arg);
  R visitSub11(Sub11 sub, A arg);
  R visitSub12(Sub12 sub, A arg);
  R visitSub13(Sub13 sub, A arg);
  R visitSub14(Sub14 sub, A arg);
  R visitSub15(Sub15 sub, A arg);
  R visitSub16(Sub16 sub, A arg);
  R visitSub17(Sub17 sub, A arg);
  R visitSub18(Sub18 sub, A arg);
  R visitSub19(Sub19 sub, A arg);
  R visitSub20(Sub20 sub, A arg);
  R visitSub21(Sub21 sub, A arg);
  R visitSub22(Sub22 sub, A arg);
  R visitSub23(Sub23 sub, A arg);
  R visitSub24(Sub24 sub, A arg);
  R visitSub25(Sub25 sub, A arg);
  R visitSub26(Sub26 sub, A arg);
  R visitSub27(Sub27 sub, A arg);
  R visitSub28(Sub28 sub, A arg);
  R visitSub29(Sub29 sub, A arg);
  R visitSub30(Sub30 sub, A arg);
  R visitSub31(Sub31 sub, A arg);
  R visitSub32(Sub32 sub, A arg);
  R visitSub33(Sub33 sub, A arg);
  R visitSub34(Sub34 sub, A arg);
  R visitSub35(Sub35 sub, A arg);
  R visitSub36(Sub36 sub, A arg);
  R visitSub37(Sub37 sub, A arg);
  R visitSub38(Sub38 sub, A arg);
  R visitSub39(Sub39 sub, A arg);
  R visitSub40(Sub40 sub, A arg);
  R visitSub41(Sub41 sub, A arg);
  R visitSub42(Sub42 sub, A arg);
  R visitSub43(Sub43 sub, A arg);
  R visitSub44(Sub44 sub, A arg);
  R visitSub45(Sub45 sub, A arg);
  R visitSub46(Sub46 sub, A arg);
  R visitSub47(Sub47 sub, A arg);
  R visitSub48(Sub48 sub, A arg);
  R visitSub49(Sub49 sub, A arg);
  R visitSub50(Sub50 sub, A arg);
  R visitSub51(Sub51 sub, A arg);
  R visitSub52(Sub52 sub, A arg);
  R visitSub53(Sub53 sub, A arg);
  R visitSub54(Sub54 sub, A arg);
  R visitSub55(Sub55 sub, A arg);
  R visitSub56(Sub56 sub, A arg);
  R visitSub57(Sub57 sub, A arg);
  R visitSub58(Sub58 sub, A arg);
  R visitSub59(Sub59 sub, A arg);
  R visitSub60(Sub60 sub, A arg);
  R visitSub61(Sub61 sub, A arg);
  R visitSub62(Sub62 sub, A arg);
  R visitSub63(Sub63 sub, A arg);
  R visitSub64(Sub64 sub, A arg);
  R visitSub65(Sub65 sub, A arg);
  R visitSub66(Sub66 sub, A arg);
  R visitSub67(Sub67 sub, A arg);
  R visitSub68(Sub68 sub, A arg);
  R visitSub69(Sub69 sub, A arg);
  R visitSub70(Sub70 sub, A arg);
  R visitSub71(Sub71 sub, A arg);
  R visitSub72(Sub72 sub, A arg);
  R visitSub73(Sub73 sub, A arg);
  R visitSub74(Sub74 sub, A arg);
  R visitSub75(Sub75 sub, A arg);
  R visitSub76(Sub76 sub, A arg);
  R visitSub77(Sub77 sub, A arg);
  R visitSub78(Sub78 sub, A arg);
  R visitSub79(Sub79 sub, A arg);
  R visitSub80(Sub80 sub, A arg);
  R visitSub81(Sub81 sub, A arg);
  R visitSub82(Sub82 sub, A arg);
  R visitSub83(Sub83 sub, A arg);
  R visitSub84(Sub84 sub, A arg);
  R visitSub85(Sub85 sub, A arg);
  R visitSub86(Sub86 sub, A arg);
  R visitSub87(Sub87 sub, A arg);
  R visitSub88(Sub88 sub, A arg);
  R visitSub89(Sub89 sub, A arg);
  R visitSub90(Sub90 sub, A arg);
  R visitSub91(Sub91 sub, A arg);
  R visitSub92(Sub92 sub, A arg);
  R visitSub93(Sub93 sub, A arg);
  R visitSub94(Sub94 sub, A arg);
  R visitSub95(Sub95 sub, A arg);
  R visitSub96(Sub96 sub, A arg);
  R visitSub97(Sub97 sub, A arg);
  R visitSub98(Sub98 sub, A arg);
  R visitSub99(Sub99 sub, A arg);
  R visitSub100(Sub100 sub, A arg);
  R visitSub101(Sub101 sub, A arg);
  R visitSub102(Sub102 sub, A arg);
  R visitSub103(Sub103 sub, A arg);
  R visitSub104(Sub104 sub, A arg);
  R visitSub105(Sub105 sub, A arg);
  R visitSub106(Sub106 sub, A arg);
  R visitSub107(Sub107 sub, A arg);
  R visitSub108(Sub108 sub, A arg);
  R visitSub109(Sub109 sub, A arg);
  R visitSub110(Sub110 sub, A arg);
  R visitSub111(Sub111 sub, A arg);
  R visitSub112(Sub112 sub, A arg);
  R visitSub113(Sub113 sub, A arg);
  R visitSub114(Sub114 sub, A arg);
  R visitSub115(Sub115 sub, A arg);
  R visitSub116(Sub116 sub, A arg);
  R visitSub117(Sub117 sub, A arg);
  R visitSub118(Sub118 sub, A arg);
  R visitSub119(Sub119 sub, A arg);
  R visitSub120(Sub120 sub, A arg);
  R visitSub121(Sub121 sub, A arg);
  R visitSub122(Sub122 sub, A arg);
  R visitSub123(Sub123 sub, A arg);
  R visitSub124(Sub124 sub, A arg);
  R visitSub125(Sub125 sub, A arg);
  R visitSub126(Sub126 sub, A arg);
  R visitSub127(Sub127 sub, A arg);
  R visitSub128(Sub128 sub, A arg);
  R visitSub129(Sub129 sub, A arg);
  R visitSub130(Sub130 sub, A arg);
  R visitSub131(Sub131 sub, A arg);
  R visitSub132(Sub132 sub, A arg);
  R visitSub133(Sub133 sub, A arg);
  R visitSub134(Sub134 sub, A arg);
  R visitSub135(Sub135 sub, A arg);
  R visitSub136(Sub136 sub, A arg);
  R visitSub137(Sub137 sub, A arg);
  R visitSub138(Sub138 sub, A arg);
  R visitSub139(Sub139 sub, A arg);
  R visitSub140(Sub140 sub, A arg);
  R visitSub141(Sub141 sub, A arg);
  R visitSub142(Sub142 sub, A arg);
  R visitSub143(Sub143 sub, A arg);
  R visitSub144(Sub144 sub, A arg);
  R visitSub145(Sub145 sub, A arg);
  R visitSub146(Sub146 sub, A arg);
  R visitSub147(Sub147 sub, A arg);
  R visitSub148(Sub148 sub, A arg);
  R visitSub149(Sub149 sub, A arg);
  R visitSub150(Sub150 sub, A arg);
  R visitSub151(Sub151 sub, A arg);
  R visitSub152(Sub152 sub, A arg);
  R visitSub153(Sub153 sub, A arg);
  R visitSub154(Sub154 sub, A arg);
  R visitSub155(Sub155 sub, A arg);
  R visitSub156(Sub156 sub, A arg);
  R visitSub157(Sub157 sub, A arg);
  R visitSub158(Sub158 sub, A arg);
  R visitSub159(Sub159 sub, A arg);
  R visitSub160(Sub160 sub, A arg);
  R visitSub161(Sub161 sub, A arg);
  R visitSub162(Sub162 sub, A arg);
  R visitSub163(Sub163 sub, A arg);
  R visitSub164(Sub164 sub, A arg);
  R visitSub165(Sub165 sub, A arg);
  R visitSub166(Sub166 sub, A arg);
  R visitSub167(Sub167 sub, A arg);
  R visitSub168(Sub168 sub, A arg);
  R visitSub169(Sub169 sub, A arg);
  R visitSub170(Sub170 sub, A arg);
  R visitSub171(Sub171 sub, A arg);
  R visitSub172(Sub172 sub, A arg);
  R visitSub173(Sub173 sub, A arg);
  R visitSub174(Sub174 sub, A arg);
  R visitSub175(Sub175 sub, A arg);
  R visitSub176(Sub176 sub, A arg);
  R visitSub177(Sub177 sub, A arg);
  R visitSub178(Sub178 sub, A arg);
  R visitSub179(Sub179 sub, A arg);
  R visitSub180(Sub180 sub, A arg);
  R visitSub181(Sub181 sub, A arg);
  R visitSub182(Sub182 sub, A arg);
  R visitSub183(Sub183 sub, A arg);
  R visitSub184(Sub184 sub, A arg);
  R visitSub185(Sub185 sub, A arg);
  R visitSub186(Sub186 sub, A arg);
  R visitSub187(Sub187 sub, A arg);
  R visitSub188(Sub188 sub, A arg);
  R visitSub189(Sub189 sub, A arg);
  R visitSub190(Sub190 sub, A arg);
  R visitSub191(Sub191 sub, A arg);
  R visitSub192(Sub192 sub, A arg);
  R visitSub193(Sub193 sub, A arg);
  R visitSub194(Sub194 sub, A arg);
  R visitSub195(Sub195 sub, A arg);
  R visitSub196(Sub196 sub, A arg);
  R visitSub197(Sub197 sub, A arg);
  R visitSub198(Sub198 sub, A arg);
  R visitSub199(Sub199 sub, A arg);
  R visitSub200(Sub200 sub, A arg);
  R visitSub201(Sub201 sub, A arg);
  R visitSub202(Sub202 sub, A arg);
  R visitSub203(Sub203 sub, A arg);
  R visitSub204(Sub204 sub, A arg);
  R visitSub205(Sub205 sub, A arg);
  R visitSub206(Sub206 sub, A arg);
  R visitSub207(Sub207 sub, A arg);
  R visitSub208(Sub208 sub, A arg);
  R visitSub209(Sub209 sub, A arg);
  R visitSub210(Sub210 sub, A arg);
  R visitSub211(Sub211 sub, A arg);
  R visitSub212(Sub212 sub, A arg);
  R visitSub213(Sub213 sub, A arg);
  R visitSub214(Sub214 sub, A arg);
  R visitSub215(Sub215 sub, A arg);
  R visitSub216(Sub216 sub, A arg);
  R visitSub217(Sub217 sub, A arg);
  R visitSub218(Sub218 sub, A arg);
  R visitSub219(Sub219 sub, A arg);
  R visitSub220(Sub220 sub, A arg);
  R visitSub221(Sub221 sub, A arg);
  R visitSub222(Sub222 sub, A arg);
  R visitSub223(Sub223 sub, A arg);
  R visitSub224(Sub224 sub, A arg);
  R visitSub225(Sub225 sub, A arg);
  R visitSub226(Sub226 sub, A arg);
  R visitSub227(Sub227 sub, A arg);
  R visitSub228(Sub228 sub, A arg);
  R visitSub229(Sub229 sub, A arg);
  R visitSub230(Sub230 sub, A arg);
  R visitSub231(Sub231 sub, A arg);
  R visitSub232(Sub232 sub, A arg);
  R visitSub233(Sub233 sub, A arg);
  R visitSub234(Sub234 sub, A arg);
  R visitSub235(Sub235 sub, A arg);
  R visitSub236(Sub236 sub, A arg);
  R visitSub237(Sub237 sub, A arg);
  R visitSub238(Sub238 sub, A arg);
  R visitSub239(Sub239 sub, A arg);
  R visitSub240(Sub240 sub, A arg);
  R visitSub241(Sub241 sub, A arg);
  R visitSub242(Sub242 sub, A arg);
  R visitSub243(Sub243 sub, A arg);
  R visitSub244(Sub244 sub, A arg);
  R visitSub245(Sub245 sub, A arg);
  R visitSub246(Sub246 sub, A arg);
  R visitSub247(Sub247 sub, A arg);
  R visitSub248(Sub248 sub, A arg);
  R visitSub249(Sub249 sub, A arg);
  R visitSub250(Sub250 sub, A arg);
  R visitSub251(Sub251 sub, A arg);
  R visitSub252(Sub252 sub, A arg);
  R visitSub253(Sub253 sub, A arg);
  R visitSub254(Sub254 sub, A arg);
  R visitSub255(Sub255 sub, A arg);
}

class CounterVisitor256 implements Visitor256<void, Counter> {
  const CounterVisitor256();

  @override
  void visitSub0(Sub0 sub, Counter counter) {
    sub.visitorDispatch0(counter);
  }

  @override
  void visitSub1(Sub1 sub, Counter counter) {
    sub.visitorDispatch1(counter);
  }

  @override
  void visitSub2(Sub2 sub, Counter counter) {
    sub.visitorDispatch2(counter);
  }

  @override
  void visitSub3(Sub3 sub, Counter counter) {
    sub.visitorDispatch3(counter);
  }

  @override
  void visitSub4(Sub4 sub, Counter counter) {
    sub.visitorDispatch4(counter);
  }

  @override
  void visitSub5(Sub5 sub, Counter counter) {
    sub.visitorDispatch5(counter);
  }

  @override
  void visitSub6(Sub6 sub, Counter counter) {
    sub.visitorDispatch6(counter);
  }

  @override
  void visitSub7(Sub7 sub, Counter counter) {
    sub.visitorDispatch7(counter);
  }

  @override
  void visitSub8(Sub8 sub, Counter counter) {
    sub.visitorDispatch8(counter);
  }

  @override
  void visitSub9(Sub9 sub, Counter counter) {
    sub.visitorDispatch9(counter);
  }

  @override
  void visitSub10(Sub10 sub, Counter counter) {
    sub.visitorDispatch10(counter);
  }

  @override
  void visitSub11(Sub11 sub, Counter counter) {
    sub.visitorDispatch11(counter);
  }

  @override
  void visitSub12(Sub12 sub, Counter counter) {
    sub.visitorDispatch12(counter);
  }

  @override
  void visitSub13(Sub13 sub, Counter counter) {
    sub.visitorDispatch13(counter);
  }

  @override
  void visitSub14(Sub14 sub, Counter counter) {
    sub.visitorDispatch14(counter);
  }

  @override
  void visitSub15(Sub15 sub, Counter counter) {
    sub.visitorDispatch15(counter);
  }

  @override
  void visitSub16(Sub16 sub, Counter counter) {
    sub.visitorDispatch16(counter);
  }

  @override
  void visitSub17(Sub17 sub, Counter counter) {
    sub.visitorDispatch17(counter);
  }

  @override
  void visitSub18(Sub18 sub, Counter counter) {
    sub.visitorDispatch18(counter);
  }

  @override
  void visitSub19(Sub19 sub, Counter counter) {
    sub.visitorDispatch19(counter);
  }

  @override
  void visitSub20(Sub20 sub, Counter counter) {
    sub.visitorDispatch20(counter);
  }

  @override
  void visitSub21(Sub21 sub, Counter counter) {
    sub.visitorDispatch21(counter);
  }

  @override
  void visitSub22(Sub22 sub, Counter counter) {
    sub.visitorDispatch22(counter);
  }

  @override
  void visitSub23(Sub23 sub, Counter counter) {
    sub.visitorDispatch23(counter);
  }

  @override
  void visitSub24(Sub24 sub, Counter counter) {
    sub.visitorDispatch24(counter);
  }

  @override
  void visitSub25(Sub25 sub, Counter counter) {
    sub.visitorDispatch25(counter);
  }

  @override
  void visitSub26(Sub26 sub, Counter counter) {
    sub.visitorDispatch26(counter);
  }

  @override
  void visitSub27(Sub27 sub, Counter counter) {
    sub.visitorDispatch27(counter);
  }

  @override
  void visitSub28(Sub28 sub, Counter counter) {
    sub.visitorDispatch28(counter);
  }

  @override
  void visitSub29(Sub29 sub, Counter counter) {
    sub.visitorDispatch29(counter);
  }

  @override
  void visitSub30(Sub30 sub, Counter counter) {
    sub.visitorDispatch30(counter);
  }

  @override
  void visitSub31(Sub31 sub, Counter counter) {
    sub.visitorDispatch31(counter);
  }

  @override
  void visitSub32(Sub32 sub, Counter counter) {
    sub.visitorDispatch32(counter);
  }

  @override
  void visitSub33(Sub33 sub, Counter counter) {
    sub.visitorDispatch33(counter);
  }

  @override
  void visitSub34(Sub34 sub, Counter counter) {
    sub.visitorDispatch34(counter);
  }

  @override
  void visitSub35(Sub35 sub, Counter counter) {
    sub.visitorDispatch35(counter);
  }

  @override
  void visitSub36(Sub36 sub, Counter counter) {
    sub.visitorDispatch36(counter);
  }

  @override
  void visitSub37(Sub37 sub, Counter counter) {
    sub.visitorDispatch37(counter);
  }

  @override
  void visitSub38(Sub38 sub, Counter counter) {
    sub.visitorDispatch38(counter);
  }

  @override
  void visitSub39(Sub39 sub, Counter counter) {
    sub.visitorDispatch39(counter);
  }

  @override
  void visitSub40(Sub40 sub, Counter counter) {
    sub.visitorDispatch40(counter);
  }

  @override
  void visitSub41(Sub41 sub, Counter counter) {
    sub.visitorDispatch41(counter);
  }

  @override
  void visitSub42(Sub42 sub, Counter counter) {
    sub.visitorDispatch42(counter);
  }

  @override
  void visitSub43(Sub43 sub, Counter counter) {
    sub.visitorDispatch43(counter);
  }

  @override
  void visitSub44(Sub44 sub, Counter counter) {
    sub.visitorDispatch44(counter);
  }

  @override
  void visitSub45(Sub45 sub, Counter counter) {
    sub.visitorDispatch45(counter);
  }

  @override
  void visitSub46(Sub46 sub, Counter counter) {
    sub.visitorDispatch46(counter);
  }

  @override
  void visitSub47(Sub47 sub, Counter counter) {
    sub.visitorDispatch47(counter);
  }

  @override
  void visitSub48(Sub48 sub, Counter counter) {
    sub.visitorDispatch48(counter);
  }

  @override
  void visitSub49(Sub49 sub, Counter counter) {
    sub.visitorDispatch49(counter);
  }

  @override
  void visitSub50(Sub50 sub, Counter counter) {
    sub.visitorDispatch50(counter);
  }

  @override
  void visitSub51(Sub51 sub, Counter counter) {
    sub.visitorDispatch51(counter);
  }

  @override
  void visitSub52(Sub52 sub, Counter counter) {
    sub.visitorDispatch52(counter);
  }

  @override
  void visitSub53(Sub53 sub, Counter counter) {
    sub.visitorDispatch53(counter);
  }

  @override
  void visitSub54(Sub54 sub, Counter counter) {
    sub.visitorDispatch54(counter);
  }

  @override
  void visitSub55(Sub55 sub, Counter counter) {
    sub.visitorDispatch55(counter);
  }

  @override
  void visitSub56(Sub56 sub, Counter counter) {
    sub.visitorDispatch56(counter);
  }

  @override
  void visitSub57(Sub57 sub, Counter counter) {
    sub.visitorDispatch57(counter);
  }

  @override
  void visitSub58(Sub58 sub, Counter counter) {
    sub.visitorDispatch58(counter);
  }

  @override
  void visitSub59(Sub59 sub, Counter counter) {
    sub.visitorDispatch59(counter);
  }

  @override
  void visitSub60(Sub60 sub, Counter counter) {
    sub.visitorDispatch60(counter);
  }

  @override
  void visitSub61(Sub61 sub, Counter counter) {
    sub.visitorDispatch61(counter);
  }

  @override
  void visitSub62(Sub62 sub, Counter counter) {
    sub.visitorDispatch62(counter);
  }

  @override
  void visitSub63(Sub63 sub, Counter counter) {
    sub.visitorDispatch63(counter);
  }

  @override
  void visitSub64(Sub64 sub, Counter counter) {
    sub.visitorDispatch64(counter);
  }

  @override
  void visitSub65(Sub65 sub, Counter counter) {
    sub.visitorDispatch65(counter);
  }

  @override
  void visitSub66(Sub66 sub, Counter counter) {
    sub.visitorDispatch66(counter);
  }

  @override
  void visitSub67(Sub67 sub, Counter counter) {
    sub.visitorDispatch67(counter);
  }

  @override
  void visitSub68(Sub68 sub, Counter counter) {
    sub.visitorDispatch68(counter);
  }

  @override
  void visitSub69(Sub69 sub, Counter counter) {
    sub.visitorDispatch69(counter);
  }

  @override
  void visitSub70(Sub70 sub, Counter counter) {
    sub.visitorDispatch70(counter);
  }

  @override
  void visitSub71(Sub71 sub, Counter counter) {
    sub.visitorDispatch71(counter);
  }

  @override
  void visitSub72(Sub72 sub, Counter counter) {
    sub.visitorDispatch72(counter);
  }

  @override
  void visitSub73(Sub73 sub, Counter counter) {
    sub.visitorDispatch73(counter);
  }

  @override
  void visitSub74(Sub74 sub, Counter counter) {
    sub.visitorDispatch74(counter);
  }

  @override
  void visitSub75(Sub75 sub, Counter counter) {
    sub.visitorDispatch75(counter);
  }

  @override
  void visitSub76(Sub76 sub, Counter counter) {
    sub.visitorDispatch76(counter);
  }

  @override
  void visitSub77(Sub77 sub, Counter counter) {
    sub.visitorDispatch77(counter);
  }

  @override
  void visitSub78(Sub78 sub, Counter counter) {
    sub.visitorDispatch78(counter);
  }

  @override
  void visitSub79(Sub79 sub, Counter counter) {
    sub.visitorDispatch79(counter);
  }

  @override
  void visitSub80(Sub80 sub, Counter counter) {
    sub.visitorDispatch80(counter);
  }

  @override
  void visitSub81(Sub81 sub, Counter counter) {
    sub.visitorDispatch81(counter);
  }

  @override
  void visitSub82(Sub82 sub, Counter counter) {
    sub.visitorDispatch82(counter);
  }

  @override
  void visitSub83(Sub83 sub, Counter counter) {
    sub.visitorDispatch83(counter);
  }

  @override
  void visitSub84(Sub84 sub, Counter counter) {
    sub.visitorDispatch84(counter);
  }

  @override
  void visitSub85(Sub85 sub, Counter counter) {
    sub.visitorDispatch85(counter);
  }

  @override
  void visitSub86(Sub86 sub, Counter counter) {
    sub.visitorDispatch86(counter);
  }

  @override
  void visitSub87(Sub87 sub, Counter counter) {
    sub.visitorDispatch87(counter);
  }

  @override
  void visitSub88(Sub88 sub, Counter counter) {
    sub.visitorDispatch88(counter);
  }

  @override
  void visitSub89(Sub89 sub, Counter counter) {
    sub.visitorDispatch89(counter);
  }

  @override
  void visitSub90(Sub90 sub, Counter counter) {
    sub.visitorDispatch90(counter);
  }

  @override
  void visitSub91(Sub91 sub, Counter counter) {
    sub.visitorDispatch91(counter);
  }

  @override
  void visitSub92(Sub92 sub, Counter counter) {
    sub.visitorDispatch92(counter);
  }

  @override
  void visitSub93(Sub93 sub, Counter counter) {
    sub.visitorDispatch93(counter);
  }

  @override
  void visitSub94(Sub94 sub, Counter counter) {
    sub.visitorDispatch94(counter);
  }

  @override
  void visitSub95(Sub95 sub, Counter counter) {
    sub.visitorDispatch95(counter);
  }

  @override
  void visitSub96(Sub96 sub, Counter counter) {
    sub.visitorDispatch96(counter);
  }

  @override
  void visitSub97(Sub97 sub, Counter counter) {
    sub.visitorDispatch97(counter);
  }

  @override
  void visitSub98(Sub98 sub, Counter counter) {
    sub.visitorDispatch98(counter);
  }

  @override
  void visitSub99(Sub99 sub, Counter counter) {
    sub.visitorDispatch99(counter);
  }

  @override
  void visitSub100(Sub100 sub, Counter counter) {
    sub.visitorDispatch100(counter);
  }

  @override
  void visitSub101(Sub101 sub, Counter counter) {
    sub.visitorDispatch101(counter);
  }

  @override
  void visitSub102(Sub102 sub, Counter counter) {
    sub.visitorDispatch102(counter);
  }

  @override
  void visitSub103(Sub103 sub, Counter counter) {
    sub.visitorDispatch103(counter);
  }

  @override
  void visitSub104(Sub104 sub, Counter counter) {
    sub.visitorDispatch104(counter);
  }

  @override
  void visitSub105(Sub105 sub, Counter counter) {
    sub.visitorDispatch105(counter);
  }

  @override
  void visitSub106(Sub106 sub, Counter counter) {
    sub.visitorDispatch106(counter);
  }

  @override
  void visitSub107(Sub107 sub, Counter counter) {
    sub.visitorDispatch107(counter);
  }

  @override
  void visitSub108(Sub108 sub, Counter counter) {
    sub.visitorDispatch108(counter);
  }

  @override
  void visitSub109(Sub109 sub, Counter counter) {
    sub.visitorDispatch109(counter);
  }

  @override
  void visitSub110(Sub110 sub, Counter counter) {
    sub.visitorDispatch110(counter);
  }

  @override
  void visitSub111(Sub111 sub, Counter counter) {
    sub.visitorDispatch111(counter);
  }

  @override
  void visitSub112(Sub112 sub, Counter counter) {
    sub.visitorDispatch112(counter);
  }

  @override
  void visitSub113(Sub113 sub, Counter counter) {
    sub.visitorDispatch113(counter);
  }

  @override
  void visitSub114(Sub114 sub, Counter counter) {
    sub.visitorDispatch114(counter);
  }

  @override
  void visitSub115(Sub115 sub, Counter counter) {
    sub.visitorDispatch115(counter);
  }

  @override
  void visitSub116(Sub116 sub, Counter counter) {
    sub.visitorDispatch116(counter);
  }

  @override
  void visitSub117(Sub117 sub, Counter counter) {
    sub.visitorDispatch117(counter);
  }

  @override
  void visitSub118(Sub118 sub, Counter counter) {
    sub.visitorDispatch118(counter);
  }

  @override
  void visitSub119(Sub119 sub, Counter counter) {
    sub.visitorDispatch119(counter);
  }

  @override
  void visitSub120(Sub120 sub, Counter counter) {
    sub.visitorDispatch120(counter);
  }

  @override
  void visitSub121(Sub121 sub, Counter counter) {
    sub.visitorDispatch121(counter);
  }

  @override
  void visitSub122(Sub122 sub, Counter counter) {
    sub.visitorDispatch122(counter);
  }

  @override
  void visitSub123(Sub123 sub, Counter counter) {
    sub.visitorDispatch123(counter);
  }

  @override
  void visitSub124(Sub124 sub, Counter counter) {
    sub.visitorDispatch124(counter);
  }

  @override
  void visitSub125(Sub125 sub, Counter counter) {
    sub.visitorDispatch125(counter);
  }

  @override
  void visitSub126(Sub126 sub, Counter counter) {
    sub.visitorDispatch126(counter);
  }

  @override
  void visitSub127(Sub127 sub, Counter counter) {
    sub.visitorDispatch127(counter);
  }

  @override
  void visitSub128(Sub128 sub, Counter counter) {
    sub.visitorDispatch128(counter);
  }

  @override
  void visitSub129(Sub129 sub, Counter counter) {
    sub.visitorDispatch129(counter);
  }

  @override
  void visitSub130(Sub130 sub, Counter counter) {
    sub.visitorDispatch130(counter);
  }

  @override
  void visitSub131(Sub131 sub, Counter counter) {
    sub.visitorDispatch131(counter);
  }

  @override
  void visitSub132(Sub132 sub, Counter counter) {
    sub.visitorDispatch132(counter);
  }

  @override
  void visitSub133(Sub133 sub, Counter counter) {
    sub.visitorDispatch133(counter);
  }

  @override
  void visitSub134(Sub134 sub, Counter counter) {
    sub.visitorDispatch134(counter);
  }

  @override
  void visitSub135(Sub135 sub, Counter counter) {
    sub.visitorDispatch135(counter);
  }

  @override
  void visitSub136(Sub136 sub, Counter counter) {
    sub.visitorDispatch136(counter);
  }

  @override
  void visitSub137(Sub137 sub, Counter counter) {
    sub.visitorDispatch137(counter);
  }

  @override
  void visitSub138(Sub138 sub, Counter counter) {
    sub.visitorDispatch138(counter);
  }

  @override
  void visitSub139(Sub139 sub, Counter counter) {
    sub.visitorDispatch139(counter);
  }

  @override
  void visitSub140(Sub140 sub, Counter counter) {
    sub.visitorDispatch140(counter);
  }

  @override
  void visitSub141(Sub141 sub, Counter counter) {
    sub.visitorDispatch141(counter);
  }

  @override
  void visitSub142(Sub142 sub, Counter counter) {
    sub.visitorDispatch142(counter);
  }

  @override
  void visitSub143(Sub143 sub, Counter counter) {
    sub.visitorDispatch143(counter);
  }

  @override
  void visitSub144(Sub144 sub, Counter counter) {
    sub.visitorDispatch144(counter);
  }

  @override
  void visitSub145(Sub145 sub, Counter counter) {
    sub.visitorDispatch145(counter);
  }

  @override
  void visitSub146(Sub146 sub, Counter counter) {
    sub.visitorDispatch146(counter);
  }

  @override
  void visitSub147(Sub147 sub, Counter counter) {
    sub.visitorDispatch147(counter);
  }

  @override
  void visitSub148(Sub148 sub, Counter counter) {
    sub.visitorDispatch148(counter);
  }

  @override
  void visitSub149(Sub149 sub, Counter counter) {
    sub.visitorDispatch149(counter);
  }

  @override
  void visitSub150(Sub150 sub, Counter counter) {
    sub.visitorDispatch150(counter);
  }

  @override
  void visitSub151(Sub151 sub, Counter counter) {
    sub.visitorDispatch151(counter);
  }

  @override
  void visitSub152(Sub152 sub, Counter counter) {
    sub.visitorDispatch152(counter);
  }

  @override
  void visitSub153(Sub153 sub, Counter counter) {
    sub.visitorDispatch153(counter);
  }

  @override
  void visitSub154(Sub154 sub, Counter counter) {
    sub.visitorDispatch154(counter);
  }

  @override
  void visitSub155(Sub155 sub, Counter counter) {
    sub.visitorDispatch155(counter);
  }

  @override
  void visitSub156(Sub156 sub, Counter counter) {
    sub.visitorDispatch156(counter);
  }

  @override
  void visitSub157(Sub157 sub, Counter counter) {
    sub.visitorDispatch157(counter);
  }

  @override
  void visitSub158(Sub158 sub, Counter counter) {
    sub.visitorDispatch158(counter);
  }

  @override
  void visitSub159(Sub159 sub, Counter counter) {
    sub.visitorDispatch159(counter);
  }

  @override
  void visitSub160(Sub160 sub, Counter counter) {
    sub.visitorDispatch160(counter);
  }

  @override
  void visitSub161(Sub161 sub, Counter counter) {
    sub.visitorDispatch161(counter);
  }

  @override
  void visitSub162(Sub162 sub, Counter counter) {
    sub.visitorDispatch162(counter);
  }

  @override
  void visitSub163(Sub163 sub, Counter counter) {
    sub.visitorDispatch163(counter);
  }

  @override
  void visitSub164(Sub164 sub, Counter counter) {
    sub.visitorDispatch164(counter);
  }

  @override
  void visitSub165(Sub165 sub, Counter counter) {
    sub.visitorDispatch165(counter);
  }

  @override
  void visitSub166(Sub166 sub, Counter counter) {
    sub.visitorDispatch166(counter);
  }

  @override
  void visitSub167(Sub167 sub, Counter counter) {
    sub.visitorDispatch167(counter);
  }

  @override
  void visitSub168(Sub168 sub, Counter counter) {
    sub.visitorDispatch168(counter);
  }

  @override
  void visitSub169(Sub169 sub, Counter counter) {
    sub.visitorDispatch169(counter);
  }

  @override
  void visitSub170(Sub170 sub, Counter counter) {
    sub.visitorDispatch170(counter);
  }

  @override
  void visitSub171(Sub171 sub, Counter counter) {
    sub.visitorDispatch171(counter);
  }

  @override
  void visitSub172(Sub172 sub, Counter counter) {
    sub.visitorDispatch172(counter);
  }

  @override
  void visitSub173(Sub173 sub, Counter counter) {
    sub.visitorDispatch173(counter);
  }

  @override
  void visitSub174(Sub174 sub, Counter counter) {
    sub.visitorDispatch174(counter);
  }

  @override
  void visitSub175(Sub175 sub, Counter counter) {
    sub.visitorDispatch175(counter);
  }

  @override
  void visitSub176(Sub176 sub, Counter counter) {
    sub.visitorDispatch176(counter);
  }

  @override
  void visitSub177(Sub177 sub, Counter counter) {
    sub.visitorDispatch177(counter);
  }

  @override
  void visitSub178(Sub178 sub, Counter counter) {
    sub.visitorDispatch178(counter);
  }

  @override
  void visitSub179(Sub179 sub, Counter counter) {
    sub.visitorDispatch179(counter);
  }

  @override
  void visitSub180(Sub180 sub, Counter counter) {
    sub.visitorDispatch180(counter);
  }

  @override
  void visitSub181(Sub181 sub, Counter counter) {
    sub.visitorDispatch181(counter);
  }

  @override
  void visitSub182(Sub182 sub, Counter counter) {
    sub.visitorDispatch182(counter);
  }

  @override
  void visitSub183(Sub183 sub, Counter counter) {
    sub.visitorDispatch183(counter);
  }

  @override
  void visitSub184(Sub184 sub, Counter counter) {
    sub.visitorDispatch184(counter);
  }

  @override
  void visitSub185(Sub185 sub, Counter counter) {
    sub.visitorDispatch185(counter);
  }

  @override
  void visitSub186(Sub186 sub, Counter counter) {
    sub.visitorDispatch186(counter);
  }

  @override
  void visitSub187(Sub187 sub, Counter counter) {
    sub.visitorDispatch187(counter);
  }

  @override
  void visitSub188(Sub188 sub, Counter counter) {
    sub.visitorDispatch188(counter);
  }

  @override
  void visitSub189(Sub189 sub, Counter counter) {
    sub.visitorDispatch189(counter);
  }

  @override
  void visitSub190(Sub190 sub, Counter counter) {
    sub.visitorDispatch190(counter);
  }

  @override
  void visitSub191(Sub191 sub, Counter counter) {
    sub.visitorDispatch191(counter);
  }

  @override
  void visitSub192(Sub192 sub, Counter counter) {
    sub.visitorDispatch192(counter);
  }

  @override
  void visitSub193(Sub193 sub, Counter counter) {
    sub.visitorDispatch193(counter);
  }

  @override
  void visitSub194(Sub194 sub, Counter counter) {
    sub.visitorDispatch194(counter);
  }

  @override
  void visitSub195(Sub195 sub, Counter counter) {
    sub.visitorDispatch195(counter);
  }

  @override
  void visitSub196(Sub196 sub, Counter counter) {
    sub.visitorDispatch196(counter);
  }

  @override
  void visitSub197(Sub197 sub, Counter counter) {
    sub.visitorDispatch197(counter);
  }

  @override
  void visitSub198(Sub198 sub, Counter counter) {
    sub.visitorDispatch198(counter);
  }

  @override
  void visitSub199(Sub199 sub, Counter counter) {
    sub.visitorDispatch199(counter);
  }

  @override
  void visitSub200(Sub200 sub, Counter counter) {
    sub.visitorDispatch200(counter);
  }

  @override
  void visitSub201(Sub201 sub, Counter counter) {
    sub.visitorDispatch201(counter);
  }

  @override
  void visitSub202(Sub202 sub, Counter counter) {
    sub.visitorDispatch202(counter);
  }

  @override
  void visitSub203(Sub203 sub, Counter counter) {
    sub.visitorDispatch203(counter);
  }

  @override
  void visitSub204(Sub204 sub, Counter counter) {
    sub.visitorDispatch204(counter);
  }

  @override
  void visitSub205(Sub205 sub, Counter counter) {
    sub.visitorDispatch205(counter);
  }

  @override
  void visitSub206(Sub206 sub, Counter counter) {
    sub.visitorDispatch206(counter);
  }

  @override
  void visitSub207(Sub207 sub, Counter counter) {
    sub.visitorDispatch207(counter);
  }

  @override
  void visitSub208(Sub208 sub, Counter counter) {
    sub.visitorDispatch208(counter);
  }

  @override
  void visitSub209(Sub209 sub, Counter counter) {
    sub.visitorDispatch209(counter);
  }

  @override
  void visitSub210(Sub210 sub, Counter counter) {
    sub.visitorDispatch210(counter);
  }

  @override
  void visitSub211(Sub211 sub, Counter counter) {
    sub.visitorDispatch211(counter);
  }

  @override
  void visitSub212(Sub212 sub, Counter counter) {
    sub.visitorDispatch212(counter);
  }

  @override
  void visitSub213(Sub213 sub, Counter counter) {
    sub.visitorDispatch213(counter);
  }

  @override
  void visitSub214(Sub214 sub, Counter counter) {
    sub.visitorDispatch214(counter);
  }

  @override
  void visitSub215(Sub215 sub, Counter counter) {
    sub.visitorDispatch215(counter);
  }

  @override
  void visitSub216(Sub216 sub, Counter counter) {
    sub.visitorDispatch216(counter);
  }

  @override
  void visitSub217(Sub217 sub, Counter counter) {
    sub.visitorDispatch217(counter);
  }

  @override
  void visitSub218(Sub218 sub, Counter counter) {
    sub.visitorDispatch218(counter);
  }

  @override
  void visitSub219(Sub219 sub, Counter counter) {
    sub.visitorDispatch219(counter);
  }

  @override
  void visitSub220(Sub220 sub, Counter counter) {
    sub.visitorDispatch220(counter);
  }

  @override
  void visitSub221(Sub221 sub, Counter counter) {
    sub.visitorDispatch221(counter);
  }

  @override
  void visitSub222(Sub222 sub, Counter counter) {
    sub.visitorDispatch222(counter);
  }

  @override
  void visitSub223(Sub223 sub, Counter counter) {
    sub.visitorDispatch223(counter);
  }

  @override
  void visitSub224(Sub224 sub, Counter counter) {
    sub.visitorDispatch224(counter);
  }

  @override
  void visitSub225(Sub225 sub, Counter counter) {
    sub.visitorDispatch225(counter);
  }

  @override
  void visitSub226(Sub226 sub, Counter counter) {
    sub.visitorDispatch226(counter);
  }

  @override
  void visitSub227(Sub227 sub, Counter counter) {
    sub.visitorDispatch227(counter);
  }

  @override
  void visitSub228(Sub228 sub, Counter counter) {
    sub.visitorDispatch228(counter);
  }

  @override
  void visitSub229(Sub229 sub, Counter counter) {
    sub.visitorDispatch229(counter);
  }

  @override
  void visitSub230(Sub230 sub, Counter counter) {
    sub.visitorDispatch230(counter);
  }

  @override
  void visitSub231(Sub231 sub, Counter counter) {
    sub.visitorDispatch231(counter);
  }

  @override
  void visitSub232(Sub232 sub, Counter counter) {
    sub.visitorDispatch232(counter);
  }

  @override
  void visitSub233(Sub233 sub, Counter counter) {
    sub.visitorDispatch233(counter);
  }

  @override
  void visitSub234(Sub234 sub, Counter counter) {
    sub.visitorDispatch234(counter);
  }

  @override
  void visitSub235(Sub235 sub, Counter counter) {
    sub.visitorDispatch235(counter);
  }

  @override
  void visitSub236(Sub236 sub, Counter counter) {
    sub.visitorDispatch236(counter);
  }

  @override
  void visitSub237(Sub237 sub, Counter counter) {
    sub.visitorDispatch237(counter);
  }

  @override
  void visitSub238(Sub238 sub, Counter counter) {
    sub.visitorDispatch238(counter);
  }

  @override
  void visitSub239(Sub239 sub, Counter counter) {
    sub.visitorDispatch239(counter);
  }

  @override
  void visitSub240(Sub240 sub, Counter counter) {
    sub.visitorDispatch240(counter);
  }

  @override
  void visitSub241(Sub241 sub, Counter counter) {
    sub.visitorDispatch241(counter);
  }

  @override
  void visitSub242(Sub242 sub, Counter counter) {
    sub.visitorDispatch242(counter);
  }

  @override
  void visitSub243(Sub243 sub, Counter counter) {
    sub.visitorDispatch243(counter);
  }

  @override
  void visitSub244(Sub244 sub, Counter counter) {
    sub.visitorDispatch244(counter);
  }

  @override
  void visitSub245(Sub245 sub, Counter counter) {
    sub.visitorDispatch245(counter);
  }

  @override
  void visitSub246(Sub246 sub, Counter counter) {
    sub.visitorDispatch246(counter);
  }

  @override
  void visitSub247(Sub247 sub, Counter counter) {
    sub.visitorDispatch247(counter);
  }

  @override
  void visitSub248(Sub248 sub, Counter counter) {
    sub.visitorDispatch248(counter);
  }

  @override
  void visitSub249(Sub249 sub, Counter counter) {
    sub.visitorDispatch249(counter);
  }

  @override
  void visitSub250(Sub250 sub, Counter counter) {
    sub.visitorDispatch250(counter);
  }

  @override
  void visitSub251(Sub251 sub, Counter counter) {
    sub.visitorDispatch251(counter);
  }

  @override
  void visitSub252(Sub252 sub, Counter counter) {
    sub.visitorDispatch252(counter);
  }

  @override
  void visitSub253(Sub253 sub, Counter counter) {
    sub.visitorDispatch253(counter);
  }

  @override
  void visitSub254(Sub254 sub, Counter counter) {
    sub.visitorDispatch254(counter);
  }

  @override
  void visitSub255(Sub255 sub, Counter counter) {
    sub.visitorDispatch255(counter);
  }
}
