// 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";

/*member: v:member_unit=2{b1, b2, b3, b4}*/
void v(Set<String> u, String name, int bit) {
  Expect.isTrue(u.add(name));
  Expect.equals(name[bit], '1');
}

@pragma('dart2js:noInline')
/*member: f_100_0:member_unit=1{b1, b2}*/
f_100_0(Set<String> u, int b) => v(u, '1000', b);
@pragma('dart2js:noInline')
/*member: f_100_1:member_unit=3{b1, b2, b4}*/
f_100_1(Set<String> u, int b) => v(u, '1001', b);
@pragma('dart2js:noInline')
/*member: f_101_0:member_unit=4{b1, b2, b3}*/
f_101_0(Set<String> u, int b) => v(u, '1010', b);
@pragma('dart2js:noInline')
/*member: f_101_1:member_unit=2{b1, b2, b3, b4}*/
f_101_1(Set<String> u, int b) => v(u, '1011', b);
@pragma('dart2js:noInline')
/*member: f_110_0:member_unit=1{b1, b2}*/
f_110_0(Set<String> u, int b) => v(u, '1100', b);
@pragma('dart2js:noInline')
/*member: f_110_1:member_unit=3{b1, b2, b4}*/
f_110_1(Set<String> u, int b) => v(u, '1101', b);
@pragma('dart2js:noInline')
/*member: f_111_0:member_unit=4{b1, b2, b3}*/
f_111_0(Set<String> u, int b) => v(u, '1110', b);
@pragma('dart2js:noInline')
/*member: f_111_1:member_unit=2{b1, b2, b3, b4}*/
f_111_1(Set<String> u, int b) => v(u, '1111', b);
@pragma('dart2js:noInline')
/*member: f_010_0:member_unit=1{b1, b2}*/
f_010_0(Set<String> u, int b) => v(u, '0100', b);
@pragma('dart2js:noInline')
/*member: f_010_1:member_unit=3{b1, b2, b4}*/
f_010_1(Set<String> u, int b) => v(u, '0101', b);
@pragma('dart2js:noInline')
/*member: f_011_0:member_unit=4{b1, b2, b3}*/
f_011_0(Set<String> u, int b) => v(u, '0110', b);
@pragma('dart2js:noInline')
/*member: f_011_1:member_unit=2{b1, b2, b3, b4}*/
f_011_1(Set<String> u, int b) => v(u, '0111', b);
@pragma('dart2js:noInline')
/*member: f_001_0:member_unit=5{b3}*/
f_001_0(Set<String> u, int b) => v(u, '0010', b);
@pragma('dart2js:noInline')
/*member: f_001_1:member_unit=6{b3, b4}*/
f_001_1(Set<String> u, int b) => v(u, '0011', b);
@pragma('dart2js:noInline')
/*member: f_000_1:member_unit=7{b4}*/
f_000_1(Set<String> u, int b) => v(u, '0001', b);
