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

extension E<T extends core::Object? = dynamic> on core::Set<T%> {
  get property = self::E|get#property;
  set property = self::E|set#property;
  method method = self::E|method;
  method tearoff method = self::E|get#method;
  operator [] = self::E|[];
  operator []= = self::E|[]=;
}
static extension-member method E|get#property<T extends core::Object? = dynamic>(lowered final core::Set<self::E|get#property::T%> #this) → core::int
  return 0;
static extension-member method E|set#property<T extends core::Object? = dynamic>(lowered final core::Set<self::E|set#property::T%> #this, core::int value) → void {}
static extension-member method E|method<T extends core::Object? = dynamic>(lowered final core::Set<self::E|method::T%> #this) → core::int
  return 0;
static extension-member method E|get#method<T extends core::Object? = dynamic>(lowered final core::Set<self::E|get#method::T%> #this) → () → core::int
  return () → core::int => self::E|method<self::E|get#method::T%>(#this);
static extension-member method E|[]<T extends core::Object? = dynamic>(lowered final core::Set<self::E|[]::T%> #this, core::int index) → core::int
  return 0;
static extension-member method E|[]=<T extends core::Object? = dynamic>(lowered final core::Set<self::E|[]=::T%> #this, core::int index, core::int value) → void {}
static method main() → dynamic {
  self::E|get#property<dynamic>( block {
    final core::Set<dynamic> #t1 = col::LinkedHashSet::•<dynamic>();
  } =>#t1);
  self::E|set#property<dynamic>( block {
    final core::Set<dynamic> #t2 = col::LinkedHashSet::•<dynamic>();
  } =>#t2, 0);
  self::E|get#method<dynamic>( block {
    final core::Set<dynamic> #t3 = col::LinkedHashSet::•<dynamic>();
  } =>#t3);
  self::E|method<dynamic>( block {
    final core::Set<dynamic> #t4 = col::LinkedHashSet::•<dynamic>();
  } =>#t4);
  let final core::Set<dynamic> #t5 = block {
    final core::Set<dynamic> #t6 = col::LinkedHashSet::•<dynamic>();
  } =>#t6 in self::E|set#property<dynamic>(#t5, self::E|get#property<dynamic>(#t5).{core::num::+}(0){(core::num) → core::int});
  let final core::Set<dynamic> #t7 = block {
    final core::Set<dynamic> #t8 = col::LinkedHashSet::•<dynamic>();
  } =>#t8 in self::E|get#property<dynamic>(#t7) == null ?{core::int?} self::E|set#property<dynamic>(#t7, 0) : null;
  self::E|[]<dynamic>( block {
    final core::Set<dynamic> #t9 = col::LinkedHashSet::•<dynamic>();
  } =>#t9, 0);
  self::E|[]=<dynamic>( block {
    final core::Set<dynamic> #t10 = col::LinkedHashSet::•<dynamic>();
  } =>#t10, 0, 0);
  let final core::Set<dynamic> #t11 = block {
    final core::Set<dynamic> #t12 = col::LinkedHashSet::•<dynamic>();
  } =>#t12 in let final core::int #t13 = 0 in self::E|[]=<dynamic>(#t11, #t13, self::E|[]<dynamic>(#t11, #t13).{core::num::+}(0){(core::num) → core::int});
  let final core::Set<dynamic> #t14 = block {
    final core::Set<dynamic> #t15 = col::LinkedHashSet::•<dynamic>();
  } =>#t15 in let final core::int #t16 = 0 in self::E|[]<dynamic>(#t14, #t16) == null ?{core::int?} self::E|[]=<dynamic>(#t14, #t16, 0) : null;
  let final core::Set<dynamic> #t17 = block {
    final core::Set<dynamic> #t18 = col::LinkedHashSet::•<dynamic>();
  } =>#t18 in #t17 == null ?{core::int?} null : self::E|get#property<dynamic>(#t17);
  let final core::Set<dynamic> #t19 = block {
    final core::Set<dynamic> #t20 = col::LinkedHashSet::•<dynamic>();
  } =>#t20 in #t19 == null ?{core::int?} null : self::E|set#property<dynamic>(#t19, 0);
  let final core::Set<dynamic> #t21 = block {
    final core::Set<dynamic> #t22 = col::LinkedHashSet::•<dynamic>();
  } =>#t22 in #t21 == null ?{() →? core::int} null : self::E|get#method<dynamic>(#t21);
  let final core::Set<dynamic> #t23 = block {
    final core::Set<dynamic> #t24 = col::LinkedHashSet::•<dynamic>();
  } =>#t24 in #t23 == null ?{core::int?} null : self::E|method<dynamic>(#t23);
  let final core::Set<dynamic> #t25 = block {
    final core::Set<dynamic> #t26 = col::LinkedHashSet::•<dynamic>();
  } =>#t26 in #t25 == null ?{core::int?} null : self::E|set#property<dynamic>(#t25, self::E|get#property<dynamic>(#t25).{core::num::+}(0){(core::num) → core::int});
  let final core::Set<dynamic> #t27 = block {
    final core::Set<dynamic> #t28 = col::LinkedHashSet::•<dynamic>();
  } =>#t28 in #t27 == null ?{core::int?} null : self::E|get#property<dynamic>(#t27) == null ?{core::int?} self::E|set#property<dynamic>(#t27, 0) : null;
  let final core::Set<dynamic> #t29 = block {
    final core::Set<dynamic> #t30 = col::LinkedHashSet::•<dynamic>();
  } =>#t30 in #t29 == null ?{core::int?} null : self::E|[]<dynamic>(#t29, 0);
  let final core::Set<dynamic> #t31 = block {
    final core::Set<dynamic> #t32 = col::LinkedHashSet::•<dynamic>();
  } =>#t32 in #t31 == null ?{core::int?} null : self::E|[]=<dynamic>(#t31, 0, 0);
  let final core::Set<dynamic> #t33 = block {
    final core::Set<dynamic> #t34 = col::LinkedHashSet::•<dynamic>();
  } =>#t34 in #t33 == null ?{core::int?} null : let final core::int #t35 = 0 in self::E|[]=<dynamic>(#t33, #t35, self::E|[]<dynamic>(#t33, #t35).{core::num::+}(0){(core::num) → core::int});
  let final core::Set<dynamic> #t36 = block {
    final core::Set<dynamic> #t37 = col::LinkedHashSet::•<dynamic>();
  } =>#t37 in #t36 == null ?{core::int?} null : let final core::int #t38 = 0 in self::E|[]<dynamic>(#t36, #t38) == null ?{core::int?} self::E|[]=<dynamic>(#t36, #t38, 0) : null;
  self::E|get#property<core::int>( block {
    final core::Set<core::int> #t39 = col::LinkedHashSet::•<core::int>();
  } =>#t39);
  self::E|set#property<core::int>( block {
    final core::Set<core::int> #t40 = col::LinkedHashSet::•<core::int>();
  } =>#t40, 0);
  self::E|get#method<core::int>( block {
    final core::Set<core::int> #t41 = col::LinkedHashSet::•<core::int>();
  } =>#t41);
  self::E|method<core::int>( block {
    final core::Set<core::int> #t42 = col::LinkedHashSet::•<core::int>();
  } =>#t42);
  let final core::Set<core::int> #t43 = block {
    final core::Set<core::int> #t44 = col::LinkedHashSet::•<core::int>();
  } =>#t44 in self::E|set#property<core::int>(#t43, self::E|get#property<core::int>(#t43).{core::num::+}(0){(core::num) → core::int});
  let final core::Set<core::int> #t45 = block {
    final core::Set<core::int> #t46 = col::LinkedHashSet::•<core::int>();
  } =>#t46 in self::E|get#property<core::int>(#t45) == null ?{core::int?} self::E|set#property<core::int>(#t45, 0) : null;
  self::E|[]<core::int>( block {
    final core::Set<core::int> #t47 = col::LinkedHashSet::•<core::int>();
  } =>#t47, 0);
  self::E|[]=<core::int>( block {
    final core::Set<core::int> #t48 = col::LinkedHashSet::•<core::int>();
  } =>#t48, 0, 0);
  let final core::Set<core::int> #t49 = block {
    final core::Set<core::int> #t50 = col::LinkedHashSet::•<core::int>();
  } =>#t50 in let final core::int #t51 = 0 in self::E|[]=<core::int>(#t49, #t51, self::E|[]<core::int>(#t49, #t51).{core::num::+}(0){(core::num) → core::int});
  let final core::Set<core::int> #t52 = block {
    final core::Set<core::int> #t53 = col::LinkedHashSet::•<core::int>();
  } =>#t53 in let final core::int #t54 = 0 in self::E|[]<core::int>(#t52, #t54) == null ?{core::int?} self::E|[]=<core::int>(#t52, #t54, 0) : null;
  let final core::Set<core::int> #t55 = block {
    final core::Set<core::int> #t56 = col::LinkedHashSet::•<core::int>();
  } =>#t56 in #t55 == null ?{core::int?} null : self::E|get#property<core::int>(#t55);
  let final core::Set<core::int> #t57 = block {
    final core::Set<core::int> #t58 = col::LinkedHashSet::•<core::int>();
  } =>#t58 in #t57 == null ?{core::int?} null : self::E|set#property<core::int>(#t57, 0);
  let final core::Set<core::int> #t59 = block {
    final core::Set<core::int> #t60 = col::LinkedHashSet::•<core::int>();
  } =>#t60 in #t59 == null ?{() →? core::int} null : self::E|get#method<core::int>(#t59);
  let final core::Set<core::int> #t61 = block {
    final core::Set<core::int> #t62 = col::LinkedHashSet::•<core::int>();
  } =>#t62 in #t61 == null ?{core::int?} null : self::E|method<core::int>(#t61);
  let final core::Set<core::int> #t63 = block {
    final core::Set<core::int> #t64 = col::LinkedHashSet::•<core::int>();
  } =>#t64 in #t63 == null ?{core::int?} null : self::E|set#property<core::int>(#t63, self::E|get#property<core::int>(#t63).{core::num::+}(0){(core::num) → core::int});
  let final core::Set<core::int> #t65 = block {
    final core::Set<core::int> #t66 = col::LinkedHashSet::•<core::int>();
  } =>#t66 in #t65 == null ?{core::int?} null : self::E|get#property<core::int>(#t65) == null ?{core::int?} self::E|set#property<core::int>(#t65, 0) : null;
  let final core::Set<core::int> #t67 = block {
    final core::Set<core::int> #t68 = col::LinkedHashSet::•<core::int>();
  } =>#t68 in #t67 == null ?{core::int?} null : self::E|[]<core::int>(#t67, 0);
  let final core::Set<core::int> #t69 = block {
    final core::Set<core::int> #t70 = col::LinkedHashSet::•<core::int>();
  } =>#t70 in #t69 == null ?{core::int?} null : self::E|[]=<core::int>(#t69, 0, 0);
  let final core::Set<core::int> #t71 = block {
    final core::Set<core::int> #t72 = col::LinkedHashSet::•<core::int>();
  } =>#t72 in #t71 == null ?{core::int?} null : let final core::int #t73 = 0 in self::E|[]=<core::int>(#t71, #t73, self::E|[]<core::int>(#t71, #t73).{core::num::+}(0){(core::num) → core::int});
  let final core::Set<core::int> #t74 = block {
    final core::Set<core::int> #t75 = col::LinkedHashSet::•<core::int>();
  } =>#t75 in #t74 == null ?{core::int?} null : let final core::int #t76 = 0 in self::E|[]<core::int>(#t74, #t76) == null ?{core::int?} self::E|[]=<core::int>(#t74, #t76, 0) : null;
}
