library;
import self as self;
import "dart:core" as core;

typedef R6 = (core::int, core::int, core::int, core::int, core::int, core::int);
typedef R6as3of2 = ((core::int, core::int), (core::int, core::int), (core::int, core::int));
static method shuffle6a((core::int, core::int, core::int, core::int, core::int, core::int) r) → (core::int, core::int, core::int, core::int, core::int, core::int) {
  hoisted has-declared-initializer core::int a;
  hoisted has-declared-initializer core::int b;
  hoisted has-declared-initializer core::int c;
  hoisted has-declared-initializer core::int d;
  hoisted has-declared-initializer core::int e;
  hoisted has-declared-initializer core::int f;
  {
    final synthesized(core::int, core::int, core::int, core::int, core::int, core::int) #0#0 = r;
    a = #0#0.$1{core::int};
    b = #0#0.$2{core::int};
    c = #0#0.$3{core::int};
    d = #0#0.$4{core::int};
    e = #0#0.$5{core::int};
    f = #0#0.$6{core::int};
  }
  {
    final synthesized(core::int, core::int, core::int, core::int, core::int, core::int) #1#0 = (a, b, c, d, e, f);
    b = #1#0.$1{core::int};
    d = #1#0.$2{core::int};
    f = #1#0.$3{core::int};
    a = #1#0.$4{core::int};
    c = #1#0.$5{core::int};
    e = #1#0.$6{core::int};
  }
  {
    final synthesized(core::int, core::int, core::int, core::int, core::int, core::int) #2#0 = (a, b, c, d, e, f);
    b = #2#0.$1{core::int};
    d = #2#0.$2{core::int};
    f = #2#0.$3{core::int};
    a = #2#0.$4{core::int};
    c = #2#0.$5{core::int};
    e = #2#0.$6{core::int};
  }
  {
    final synthesized(core::int, core::int, core::int, core::int, core::int, core::int) #3#0 = (a, b, c, d, e, f);
    b = #3#0.$1{core::int};
    d = #3#0.$2{core::int};
    f = #3#0.$3{core::int};
    a = #3#0.$4{core::int};
    c = #3#0.$5{core::int};
    e = #3#0.$6{core::int};
  }
  return (a, b, c, d, e, f);
}
static method shuffle6b(((core::int, core::int), (core::int, core::int), (core::int, core::int)) r) → ((core::int, core::int), (core::int, core::int), (core::int, core::int)) {
  hoisted has-declared-initializer core::int a;
  hoisted has-declared-initializer core::int b;
  hoisted has-declared-initializer core::int c;
  hoisted has-declared-initializer core::int d;
  hoisted has-declared-initializer core::int e;
  hoisted has-declared-initializer core::int f;
  {
    final synthesized((core::int, core::int), (core::int, core::int), (core::int, core::int)) #0#0 = r;
    synthesized(core::int, core::int) #0#1;
    synthesized core::bool #0#1#isSet = false;
    synthesized(core::int, core::int) #0#4;
    synthesized core::bool #0#4#isSet = false;
    synthesized(core::int, core::int) #0#7;
    synthesized core::bool #0#7#isSet = false;
    a = (#0#1#isSet ?{(core::int, core::int)} #0#1{(core::int, core::int)} : let final core::bool #t1 = #0#1#isSet = true in #0#1 = #0#0.$1{(core::int, core::int)}).$1{core::int};
    b = (#0#1#isSet ?{(core::int, core::int)} #0#1{(core::int, core::int)} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.$1{(core::int, core::int)}).$2{core::int};
    c = (#0#4#isSet ?{(core::int, core::int)} #0#4{(core::int, core::int)} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0.$2{(core::int, core::int)}).$1{core::int};
    d = (#0#4#isSet ?{(core::int, core::int)} #0#4{(core::int, core::int)} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0.$2{(core::int, core::int)}).$2{core::int};
    e = (#0#7#isSet ?{(core::int, core::int)} #0#7{(core::int, core::int)} : let final core::bool #t5 = #0#7#isSet = true in #0#7 = #0#0.$3{(core::int, core::int)}).$1{core::int};
    f = (#0#7#isSet ?{(core::int, core::int)} #0#7{(core::int, core::int)} : let final core::bool #t6 = #0#7#isSet = true in #0#7 = #0#0.$3{(core::int, core::int)}).$2{core::int};
  }
  {
    final synthesized((core::int, core::int), (core::int, core::int), (core::int, core::int)) #1#0 = ((a, b), (c, d), (e, f));
    synthesized(core::int, core::int) #1#1;
    synthesized core::bool #1#1#isSet = false;
    synthesized(core::int, core::int) #1#4;
    synthesized core::bool #1#4#isSet = false;
    synthesized(core::int, core::int) #1#7;
    synthesized core::bool #1#7#isSet = false;
    b = (#1#1#isSet ?{(core::int, core::int)} #1#1{(core::int, core::int)} : let final core::bool #t7 = #1#1#isSet = true in #1#1 = #1#0.$1{(core::int, core::int)}).$1{core::int};
    d = (#1#1#isSet ?{(core::int, core::int)} #1#1{(core::int, core::int)} : let final core::bool #t8 = #1#1#isSet = true in #1#1 = #1#0.$1{(core::int, core::int)}).$2{core::int};
    f = (#1#4#isSet ?{(core::int, core::int)} #1#4{(core::int, core::int)} : let final core::bool #t9 = #1#4#isSet = true in #1#4 = #1#0.$2{(core::int, core::int)}).$1{core::int};
    a = (#1#4#isSet ?{(core::int, core::int)} #1#4{(core::int, core::int)} : let final core::bool #t10 = #1#4#isSet = true in #1#4 = #1#0.$2{(core::int, core::int)}).$2{core::int};
    c = (#1#7#isSet ?{(core::int, core::int)} #1#7{(core::int, core::int)} : let final core::bool #t11 = #1#7#isSet = true in #1#7 = #1#0.$3{(core::int, core::int)}).$1{core::int};
    e = (#1#7#isSet ?{(core::int, core::int)} #1#7{(core::int, core::int)} : let final core::bool #t12 = #1#7#isSet = true in #1#7 = #1#0.$3{(core::int, core::int)}).$2{core::int};
  }
  {
    final synthesized((core::int, core::int), (core::int, core::int), (core::int, core::int)) #2#0 = ((a, b), (c, d), (e, f));
    synthesized(core::int, core::int) #2#1;
    synthesized core::bool #2#1#isSet = false;
    synthesized(core::int, core::int) #2#4;
    synthesized core::bool #2#4#isSet = false;
    synthesized(core::int, core::int) #2#7;
    synthesized core::bool #2#7#isSet = false;
    b = (#2#1#isSet ?{(core::int, core::int)} #2#1{(core::int, core::int)} : let final core::bool #t13 = #2#1#isSet = true in #2#1 = #2#0.$1{(core::int, core::int)}).$1{core::int};
    d = (#2#1#isSet ?{(core::int, core::int)} #2#1{(core::int, core::int)} : let final core::bool #t14 = #2#1#isSet = true in #2#1 = #2#0.$1{(core::int, core::int)}).$2{core::int};
    f = (#2#4#isSet ?{(core::int, core::int)} #2#4{(core::int, core::int)} : let final core::bool #t15 = #2#4#isSet = true in #2#4 = #2#0.$2{(core::int, core::int)}).$1{core::int};
    a = (#2#4#isSet ?{(core::int, core::int)} #2#4{(core::int, core::int)} : let final core::bool #t16 = #2#4#isSet = true in #2#4 = #2#0.$2{(core::int, core::int)}).$2{core::int};
    c = (#2#7#isSet ?{(core::int, core::int)} #2#7{(core::int, core::int)} : let final core::bool #t17 = #2#7#isSet = true in #2#7 = #2#0.$3{(core::int, core::int)}).$1{core::int};
    e = (#2#7#isSet ?{(core::int, core::int)} #2#7{(core::int, core::int)} : let final core::bool #t18 = #2#7#isSet = true in #2#7 = #2#0.$3{(core::int, core::int)}).$2{core::int};
  }
  {
    final synthesized((core::int, core::int), (core::int, core::int), (core::int, core::int)) #3#0 = ((a, b), (c, d), (e, f));
    synthesized(core::int, core::int) #3#1;
    synthesized core::bool #3#1#isSet = false;
    synthesized(core::int, core::int) #3#4;
    synthesized core::bool #3#4#isSet = false;
    synthesized(core::int, core::int) #3#7;
    synthesized core::bool #3#7#isSet = false;
    b = (#3#1#isSet ?{(core::int, core::int)} #3#1{(core::int, core::int)} : let final core::bool #t19 = #3#1#isSet = true in #3#1 = #3#0.$1{(core::int, core::int)}).$1{core::int};
    d = (#3#1#isSet ?{(core::int, core::int)} #3#1{(core::int, core::int)} : let final core::bool #t20 = #3#1#isSet = true in #3#1 = #3#0.$1{(core::int, core::int)}).$2{core::int};
    f = (#3#4#isSet ?{(core::int, core::int)} #3#4{(core::int, core::int)} : let final core::bool #t21 = #3#4#isSet = true in #3#4 = #3#0.$2{(core::int, core::int)}).$1{core::int};
    a = (#3#4#isSet ?{(core::int, core::int)} #3#4{(core::int, core::int)} : let final core::bool #t22 = #3#4#isSet = true in #3#4 = #3#0.$2{(core::int, core::int)}).$2{core::int};
    c = (#3#7#isSet ?{(core::int, core::int)} #3#7{(core::int, core::int)} : let final core::bool #t23 = #3#7#isSet = true in #3#7 = #3#0.$3{(core::int, core::int)}).$1{core::int};
    e = (#3#7#isSet ?{(core::int, core::int)} #3#7{(core::int, core::int)} : let final core::bool #t24 = #3#7#isSet = true in #3#7 = #3#0.$3{(core::int, core::int)}).$2{core::int};
  }
  return ((a, b), (c, d), (e, f));
}
static method main() → dynamic {
  core::print(#C1((1, 2, 3, 4, 5, 6)){((core::int, core::int, core::int, core::int, core::int, core::int)) → (core::int, core::int, core::int, core::int, core::int, core::int)});
  core::print(#C2(((1, 2), (3, 4), (5, 6))){(((core::int, core::int), (core::int, core::int), (core::int, core::int))) → ((core::int, core::int), (core::int, core::int), (core::int, core::int))});
  core::print(#C3(1, 2, 3, 4){(core::int, core::int, core::int, core::int) → dynamic});
  core::print(#C3(4, 3, 2, 1){(core::int, core::int, core::int, core::int) → dynamic});
}
static method sort4(core::int a0, core::int a1, core::int a2, core::int a3) → dynamic {
  if(a2.{core::num::<}(a0){(core::num) → core::bool}) {
    final synthesized(core::int, core::int) #0#0 = (a2, a0);
    a0 = #0#0.$1{core::int};
    a2 = #0#0.$2{core::int};
  }
  if(a3.{core::num::<}(a1){(core::num) → core::bool}) {
    final synthesized(core::int, core::int) #1#0 = (a3, a1);
    a1 = #1#0.$1{core::int};
    a3 = #1#0.$2{core::int};
  }
  if(a1.{core::num::<}(a0){(core::num) → core::bool}) {
    final synthesized(core::int, core::int) #2#0 = (a1, a0);
    a0 = #2#0.$1{core::int};
    a1 = #2#0.$2{core::int};
  }
  if(a3.{core::num::<}(a2){(core::num) → core::bool}) {
    final synthesized(core::int, core::int) #3#0 = (a3, a2);
    a2 = #3#0.$1{core::int};
    a3 = #3#0.$2{core::int};
  }
  if(a2.{core::num::<}(a1){(core::num) → core::bool}) {
    final synthesized(core::int, core::int) #4#0 = (a2, a1);
    a1 = #4#0.$1{core::int};
    a2 = #4#0.$2{core::int};
  }
  return core::_GrowableList::_literal4<core::int>(a0, a1, a2, a3);
}

constants  {
  #C1 = static-tearoff self::shuffle6a
  #C2 = static-tearoff self::shuffle6b
  #C3 = static-tearoff self::sort4
}

Extra constant evaluation status:
Evaluated: RecordLiteral @ org-dartlang-testcase:///issue52960b.dart:25:21 -> RecordConstant(const (1, 2, 3, 4, 5, 6))
Evaluated: RecordLiteral @ org-dartlang-testcase:///issue52960b.dart:26:21 -> RecordConstant(const (const (1, 2), const (3, 4), const (5, 6)))
Extra constant evaluation: evaluated: 457, effectively constant: 2
