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

// If canonicalization uses deep structural hashing without memoizing, this
// will exhibit superlinear time.

class Box {
  final Object? content1;
  final Object? content2;
  const Box(this.content1, this.content2);
}

const box1_0 = Box(null, null);
const box1_1 = Box(box1_0, box1_0);
const box1_2 = Box(box1_1, box1_1);
const box1_3 = Box(box1_2, box1_2);
const box1_4 = Box(box1_3, box1_3);
const box1_5 = Box(box1_4, box1_4);
const box1_6 = Box(box1_5, box1_5);
const box1_7 = Box(box1_6, box1_6);
const box1_8 = Box(box1_7, box1_7);
const box1_9 = Box(box1_8, box1_8);
const box1_10 = Box(box1_9, box1_9);
const box1_11 = Box(box1_10, box1_10);
const box1_12 = Box(box1_11, box1_11);
const box1_13 = Box(box1_12, box1_12);
const box1_14 = Box(box1_13, box1_13);
const box1_15 = Box(box1_14, box1_14);
const box1_16 = Box(box1_15, box1_15);
const box1_17 = Box(box1_16, box1_16);
const box1_18 = Box(box1_17, box1_17);
const box1_19 = Box(box1_18, box1_18);
const box1_20 = Box(box1_19, box1_19);
const box1_21 = Box(box1_20, box1_20);
const box1_22 = Box(box1_21, box1_21);
const box1_23 = Box(box1_22, box1_22);
const box1_24 = Box(box1_23, box1_23);
const box1_25 = Box(box1_24, box1_24);
const box1_26 = Box(box1_25, box1_25);
const box1_27 = Box(box1_26, box1_26);
const box1_28 = Box(box1_27, box1_27);
const box1_29 = Box(box1_28, box1_28);
const box1_30 = Box(box1_29, box1_29);
const box1_31 = Box(box1_30, box1_30);
const box1_32 = Box(box1_31, box1_31);
const box1_33 = Box(box1_32, box1_32);
const box1_34 = Box(box1_33, box1_33);
const box1_35 = Box(box1_34, box1_34);
const box1_36 = Box(box1_35, box1_35);
const box1_37 = Box(box1_36, box1_36);
const box1_38 = Box(box1_37, box1_37);
const box1_39 = Box(box1_38, box1_38);
const box1_40 = Box(box1_39, box1_39);
const box1_41 = Box(box1_40, box1_40);
const box1_42 = Box(box1_41, box1_41);
const box1_43 = Box(box1_42, box1_42);
const box1_44 = Box(box1_43, box1_43);
const box1_45 = Box(box1_44, box1_44);
const box1_46 = Box(box1_45, box1_45);
const box1_47 = Box(box1_46, box1_46);
const box1_48 = Box(box1_47, box1_47);
const box1_49 = Box(box1_48, box1_48);
const box1_50 = Box(box1_49, box1_49);
const box1_51 = Box(box1_50, box1_50);
const box1_52 = Box(box1_51, box1_51);
const box1_53 = Box(box1_52, box1_52);
const box1_54 = Box(box1_53, box1_53);
const box1_55 = Box(box1_54, box1_54);
const box1_56 = Box(box1_55, box1_55);
const box1_57 = Box(box1_56, box1_56);
const box1_58 = Box(box1_57, box1_57);
const box1_59 = Box(box1_58, box1_58);
const box1_60 = Box(box1_59, box1_59);
const box1_61 = Box(box1_60, box1_60);
const box1_62 = Box(box1_61, box1_61);
const box1_63 = Box(box1_62, box1_62);
const box1_64 = Box(box1_63, box1_63);
const box1_65 = Box(box1_64, box1_64);
const box1_66 = Box(box1_65, box1_65);
const box1_67 = Box(box1_66, box1_66);
const box1_68 = Box(box1_67, box1_67);
const box1_69 = Box(box1_68, box1_68);
const box1_70 = Box(box1_69, box1_69);
const box1_71 = Box(box1_70, box1_70);
const box1_72 = Box(box1_71, box1_71);
const box1_73 = Box(box1_72, box1_72);
const box1_74 = Box(box1_73, box1_73);
const box1_75 = Box(box1_74, box1_74);
const box1_76 = Box(box1_75, box1_75);
const box1_77 = Box(box1_76, box1_76);
const box1_78 = Box(box1_77, box1_77);
const box1_79 = Box(box1_78, box1_78);
const box1_80 = Box(box1_79, box1_79);
const box1_81 = Box(box1_80, box1_80);
const box1_82 = Box(box1_81, box1_81);
const box1_83 = Box(box1_82, box1_82);
const box1_84 = Box(box1_83, box1_83);
const box1_85 = Box(box1_84, box1_84);
const box1_86 = Box(box1_85, box1_85);
const box1_87 = Box(box1_86, box1_86);
const box1_88 = Box(box1_87, box1_87);
const box1_89 = Box(box1_88, box1_88);
const box1_90 = Box(box1_89, box1_89);
const box1_91 = Box(box1_90, box1_90);
const box1_92 = Box(box1_91, box1_91);
const box1_93 = Box(box1_92, box1_92);
const box1_94 = Box(box1_93, box1_93);
const box1_95 = Box(box1_94, box1_94);
const box1_96 = Box(box1_95, box1_95);
const box1_97 = Box(box1_96, box1_96);
const box1_98 = Box(box1_97, box1_97);
const box1_99 = Box(box1_98, box1_98);

const box2_0 = Box(null, null);
const box2_1 = Box(box2_0, box2_0);
const box2_2 = Box(box2_1, box2_1);
const box2_3 = Box(box2_2, box2_2);
const box2_4 = Box(box2_3, box2_3);
const box2_5 = Box(box2_4, box2_4);
const box2_6 = Box(box2_5, box2_5);
const box2_7 = Box(box2_6, box2_6);
const box2_8 = Box(box2_7, box2_7);
const box2_9 = Box(box2_8, box2_8);
const box2_10 = Box(box2_9, box2_9);
const box2_11 = Box(box2_10, box2_10);
const box2_12 = Box(box2_11, box2_11);
const box2_13 = Box(box2_12, box2_12);
const box2_14 = Box(box2_13, box2_13);
const box2_15 = Box(box2_14, box2_14);
const box2_16 = Box(box2_15, box2_15);
const box2_17 = Box(box2_16, box2_16);
const box2_18 = Box(box2_17, box2_17);
const box2_19 = Box(box2_18, box2_18);
const box2_20 = Box(box2_19, box2_19);
const box2_21 = Box(box2_20, box2_20);
const box2_22 = Box(box2_21, box2_21);
const box2_23 = Box(box2_22, box2_22);
const box2_24 = Box(box2_23, box2_23);
const box2_25 = Box(box2_24, box2_24);
const box2_26 = Box(box2_25, box2_25);
const box2_27 = Box(box2_26, box2_26);
const box2_28 = Box(box2_27, box2_27);
const box2_29 = Box(box2_28, box2_28);
const box2_30 = Box(box2_29, box2_29);
const box2_31 = Box(box2_30, box2_30);
const box2_32 = Box(box2_31, box2_31);
const box2_33 = Box(box2_32, box2_32);
const box2_34 = Box(box2_33, box2_33);
const box2_35 = Box(box2_34, box2_34);
const box2_36 = Box(box2_35, box2_35);
const box2_37 = Box(box2_36, box2_36);
const box2_38 = Box(box2_37, box2_37);
const box2_39 = Box(box2_38, box2_38);
const box2_40 = Box(box2_39, box2_39);
const box2_41 = Box(box2_40, box2_40);
const box2_42 = Box(box2_41, box2_41);
const box2_43 = Box(box2_42, box2_42);
const box2_44 = Box(box2_43, box2_43);
const box2_45 = Box(box2_44, box2_44);
const box2_46 = Box(box2_45, box2_45);
const box2_47 = Box(box2_46, box2_46);
const box2_48 = Box(box2_47, box2_47);
const box2_49 = Box(box2_48, box2_48);
const box2_50 = Box(box2_49, box2_49);
const box2_51 = Box(box2_50, box2_50);
const box2_52 = Box(box2_51, box2_51);
const box2_53 = Box(box2_52, box2_52);
const box2_54 = Box(box2_53, box2_53);
const box2_55 = Box(box2_54, box2_54);
const box2_56 = Box(box2_55, box2_55);
const box2_57 = Box(box2_56, box2_56);
const box2_58 = Box(box2_57, box2_57);
const box2_59 = Box(box2_58, box2_58);
const box2_60 = Box(box2_59, box2_59);
const box2_61 = Box(box2_60, box2_60);
const box2_62 = Box(box2_61, box2_61);
const box2_63 = Box(box2_62, box2_62);
const box2_64 = Box(box2_63, box2_63);
const box2_65 = Box(box2_64, box2_64);
const box2_66 = Box(box2_65, box2_65);
const box2_67 = Box(box2_66, box2_66);
const box2_68 = Box(box2_67, box2_67);
const box2_69 = Box(box2_68, box2_68);
const box2_70 = Box(box2_69, box2_69);
const box2_71 = Box(box2_70, box2_70);
const box2_72 = Box(box2_71, box2_71);
const box2_73 = Box(box2_72, box2_72);
const box2_74 = Box(box2_73, box2_73);
const box2_75 = Box(box2_74, box2_74);
const box2_76 = Box(box2_75, box2_75);
const box2_77 = Box(box2_76, box2_76);
const box2_78 = Box(box2_77, box2_77);
const box2_79 = Box(box2_78, box2_78);
const box2_80 = Box(box2_79, box2_79);
const box2_81 = Box(box2_80, box2_80);
const box2_82 = Box(box2_81, box2_81);
const box2_83 = Box(box2_82, box2_82);
const box2_84 = Box(box2_83, box2_83);
const box2_85 = Box(box2_84, box2_84);
const box2_86 = Box(box2_85, box2_85);
const box2_87 = Box(box2_86, box2_86);
const box2_88 = Box(box2_87, box2_87);
const box2_89 = Box(box2_88, box2_88);
const box2_90 = Box(box2_89, box2_89);
const box2_91 = Box(box2_90, box2_90);
const box2_92 = Box(box2_91, box2_91);
const box2_93 = Box(box2_92, box2_92);
const box2_94 = Box(box2_93, box2_93);
const box2_95 = Box(box2_94, box2_94);
const box2_96 = Box(box2_95, box2_95);
const box2_97 = Box(box2_96, box2_96);
const box2_98 = Box(box2_97, box2_97);
const box2_99 = Box(box2_98, box2_98);

confuse(x) {
  try { throw x; } catch (e) { return e; }
}

main() {
  if (!identical(confuse(box1_99), confuse(box2_99))) {
    throw new Exception("box1_99 !== box2_99");
  }
}
