// Copyright (c) 2021, 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.

// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
import "package:expect/expect.dart";

import 'libImport.dart';

@pragma('dart2js:noInline')
typeTest(dynamic t) {
  if (t is T_010_0) {
    return true;
  }
  if (t is T_010_1) {
    return true;
  }
  if (t is T_011_1) {
    return true;
  }
  if (t is T_110_0_type__1) {
    return true;
  }
  if (t is T_110_0_type__2) {
    return true;
  }
  if (t is T_110_0_type__3) {
    return true;
  }
  if (t is T_110_0_type__4) {
    return true;
  }
  if (t is T_110_0_type__5) {
    return true;
  }
  if (t is T_110_0_type__6) {
    return true;
  }
  if (t is T_110_0_type__7) {
    return true;
  }
  if (t is T_111_1_type__1) {
    return true;
  }
  if (t is T_111_1_type__2) {
    return true;
  }
  if (t is T_111_1_type__3) {
    return true;
  }
  if (t is T_111_1_type__4) {
    return true;
  }
  if (t is T_111_1_type__5) {
    return true;
  }
  if (t is T_111_1_type__6) {
    return true;
  }
  if (t is T_111_1_type__7) {
    return true;
  }
  if (t is T_111_1_type__8) {
    return true;
  }
  if (t is T_111_1_type__9) {
    return true;
  }
  if (t is T_010_1_type__1) {
    return true;
  }
  if (t is T_010_1_type__2) {
    return true;
  }
  if (t is T_010_1_type__3) {
    return true;
  }
  if (t is T_010_1_type__4) {
    return true;
  }
  if (t is T_011_1_type__1) {
    return true;
  }
  if (t is T_011_1_type__2) {
    return true;
  }
  if (t is T_011_1_type__3) {
    return true;
  }
  if (t is T_011_1_type__4) {
    return true;
  }
  if (t is T_011_1_type__5) {
    return true;
  }
  return false;
}

@pragma('dart2js:noInline')
g_010_0() {
  // C_*1*_*;
  Expect.isFalse(typeTest(C_010_0()));
  Expect.isFalse(typeTest(C_010_1()));
  Expect.isFalse(typeTest(C_011_1()));
  Expect.isFalse(typeTest(C_110_0_class_1()));
  Expect.isFalse(typeTest(C_110_0_class_2()));
  Expect.isFalse(typeTest(C_110_0_class_3()));
  Expect.isFalse(typeTest(C_110_0_class_4()));
  Expect.isFalse(typeTest(C_110_0_class_5()));
  Expect.isFalse(typeTest(C_110_0_class_6()));
  Expect.isFalse(typeTest(C_110_0_class_7()));
  Expect.isFalse(typeTest(C_111_1_class_1()));
  Expect.isFalse(typeTest(C_111_1_class_2()));
  Expect.isFalse(typeTest(C_111_1_class_3()));
  Expect.isFalse(typeTest(C_111_1_class_4()));
  Expect.isFalse(typeTest(C_111_1_class_5()));
  Expect.isFalse(typeTest(C_111_1_class_6()));
  Expect.isFalse(typeTest(C_111_1_class_7()));
  Expect.isFalse(typeTest(C_111_1_class_8()));
  Expect.isFalse(typeTest(C_111_1_class_9()));
  Expect.isFalse(typeTest(C_010_1_class_1()));
  Expect.isFalse(typeTest(C_010_1_class_2()));
  Expect.isFalse(typeTest(C_010_1_class_3()));
  Expect.isFalse(typeTest(C_010_1_class_4()));
  Expect.isFalse(typeTest(C_011_1_class_1()));
  Expect.isFalse(typeTest(C_011_1_class_2()));
  Expect.isFalse(typeTest(C_011_1_class_3()));
  Expect.isFalse(typeTest(C_011_1_class_4()));
  Expect.isFalse(typeTest(C_011_1_class_5()));

  Expect.isTrue(closureC_010_0(C_010_0())(C_010_0()));
  Expect.isTrue(closureC_010_1(C_010_1())(C_010_1()));
  Expect.isTrue(closureC_011_1(C_011_1())(C_011_1()));
  Expect.isTrue(closureC_110_0_class_1(C_110_0_class_1())(C_110_0_class_1()));
  Expect.isTrue(closureC_110_0_class_2(C_110_0_class_2())(C_110_0_class_2()));
  Expect.isTrue(closureC_110_0_class_3(C_110_0_class_3())(C_110_0_class_3()));
  Expect.isTrue(closureC_110_0_class_4(C_110_0_class_4())(C_110_0_class_4()));
  Expect.isTrue(closureC_110_0_class_5(C_110_0_class_5())(C_110_0_class_5()));
  Expect.isTrue(closureC_110_0_class_6(C_110_0_class_6())(C_110_0_class_6()));
  Expect.isTrue(closureC_110_0_class_7(C_110_0_class_7())(C_110_0_class_7()));
  Expect.isTrue(closureC_111_1_class_1(C_111_1_class_1())(C_111_1_class_1()));
  Expect.isTrue(closureC_111_1_class_2(C_111_1_class_2())(C_111_1_class_2()));
  Expect.isTrue(closureC_111_1_class_3(C_111_1_class_3())(C_111_1_class_3()));
  Expect.isTrue(closureC_111_1_class_4(C_111_1_class_4())(C_111_1_class_4()));
  Expect.isTrue(closureC_111_1_class_5(C_111_1_class_5())(C_111_1_class_5()));
  Expect.isTrue(closureC_111_1_class_6(C_111_1_class_6())(C_111_1_class_6()));
  Expect.isTrue(closureC_111_1_class_7(C_111_1_class_7())(C_111_1_class_7()));
  Expect.isTrue(closureC_111_1_class_8(C_111_1_class_8())(C_111_1_class_8()));
  Expect.isTrue(closureC_111_1_class_9(C_111_1_class_9())(C_111_1_class_9()));
  Expect.isTrue(closureC_010_1_class_1(C_010_1_class_1())(C_010_1_class_1()));
  Expect.isTrue(closureC_010_1_class_2(C_010_1_class_2())(C_010_1_class_2()));
  Expect.isTrue(closureC_010_1_class_3(C_010_1_class_3())(C_010_1_class_3()));
  Expect.isTrue(closureC_010_1_class_4(C_010_1_class_4())(C_010_1_class_4()));
  Expect.isTrue(closureC_011_1_class_1(C_011_1_class_1())(C_011_1_class_1()));
  Expect.isTrue(closureC_011_1_class_2(C_011_1_class_2())(C_011_1_class_2()));
  Expect.isTrue(closureC_011_1_class_3(C_011_1_class_3())(C_011_1_class_3()));
  Expect.isTrue(closureC_011_1_class_4(C_011_1_class_4())(C_011_1_class_4()));
  Expect.isTrue(closureC_011_1_class_5(C_011_1_class_5())(C_011_1_class_5()));

  Expect.equals(
      closureC_010_0(C_010_0()).runtimeType.toString(), '(C_010_0) => bool');
  Expect.equals(
      closureC_010_1(C_010_1()).runtimeType.toString(), '(C_010_1) => bool');
  Expect.equals(
      closureC_011_1(C_011_1()).runtimeType.toString(), '(C_011_1) => bool');
  Expect.equals(
      closureC_110_0_class_1(C_110_0_class_1()).runtimeType.toString(),
      '(C_110_0_class_1) => bool');
  Expect.equals(
      closureC_110_0_class_2(C_110_0_class_2()).runtimeType.toString(),
      '(C_110_0_class_2) => bool');
  Expect.equals(
      closureC_110_0_class_3(C_110_0_class_3()).runtimeType.toString(),
      '(C_110_0_class_3) => bool');
  Expect.equals(
      closureC_110_0_class_4(C_110_0_class_4()).runtimeType.toString(),
      '(C_110_0_class_4) => bool');
  Expect.equals(
      closureC_110_0_class_5(C_110_0_class_5()).runtimeType.toString(),
      '(C_110_0_class_5) => bool');
  Expect.equals(
      closureC_110_0_class_6(C_110_0_class_6()).runtimeType.toString(),
      '(C_110_0_class_6) => bool');
  Expect.equals(
      closureC_110_0_class_7(C_110_0_class_7()).runtimeType.toString(),
      '(C_110_0_class_7) => bool');
  Expect.equals(
      closureC_111_1_class_1(C_111_1_class_1()).runtimeType.toString(),
      '(C_111_1_class_1) => bool');
  Expect.equals(
      closureC_111_1_class_2(C_111_1_class_2()).runtimeType.toString(),
      '(C_111_1_class_2) => bool');
  Expect.equals(
      closureC_111_1_class_3(C_111_1_class_3()).runtimeType.toString(),
      '(C_111_1_class_3) => bool');
  Expect.equals(
      closureC_111_1_class_4(C_111_1_class_4()).runtimeType.toString(),
      '(C_111_1_class_4) => bool');
  Expect.equals(
      closureC_111_1_class_5(C_111_1_class_5()).runtimeType.toString(),
      '(C_111_1_class_5) => bool');
  Expect.equals(
      closureC_111_1_class_6(C_111_1_class_6()).runtimeType.toString(),
      '(C_111_1_class_6) => bool');
  Expect.equals(
      closureC_111_1_class_7(C_111_1_class_7()).runtimeType.toString(),
      '(C_111_1_class_7) => bool');
  Expect.equals(
      closureC_111_1_class_8(C_111_1_class_8()).runtimeType.toString(),
      '(C_111_1_class_8) => bool');
  Expect.equals(
      closureC_111_1_class_9(C_111_1_class_9()).runtimeType.toString(),
      '(C_111_1_class_9) => bool');
  Expect.equals(
      closureC_010_1_class_1(C_010_1_class_1()).runtimeType.toString(),
      '(C_010_1_class_1) => bool');
  Expect.equals(
      closureC_010_1_class_2(C_010_1_class_2()).runtimeType.toString(),
      '(C_010_1_class_2) => bool');
  Expect.equals(
      closureC_010_1_class_3(C_010_1_class_3()).runtimeType.toString(),
      '(C_010_1_class_3) => bool');
  Expect.equals(
      closureC_010_1_class_4(C_010_1_class_4()).runtimeType.toString(),
      '(C_010_1_class_4) => bool');
  Expect.equals(
      closureC_011_1_class_1(C_011_1_class_1()).runtimeType.toString(),
      '(C_011_1_class_1) => bool');
  Expect.equals(
      closureC_011_1_class_2(C_011_1_class_2()).runtimeType.toString(),
      '(C_011_1_class_2) => bool');
  Expect.equals(
      closureC_011_1_class_3(C_011_1_class_3()).runtimeType.toString(),
      '(C_011_1_class_3) => bool');
  Expect.equals(
      closureC_011_1_class_4(C_011_1_class_4()).runtimeType.toString(),
      '(C_011_1_class_4) => bool');
  Expect.equals(
      closureC_011_1_class_5(C_011_1_class_5()).runtimeType.toString(),
      '(C_011_1_class_5) => bool');

  Set<String> uniques = {};

  // f_*1*_*;
  f_010_0(uniques, 1);
  f_010_1(uniques, 1);
  f_011_1(uniques, 1);
  f_110_0(uniques, 1);
  f_111_1(uniques, 1);
  Expect.equals(5, uniques.length);
}
