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

extension Extension<T extends core::num> on core::List<T> {
  get field = self::Extension|get#field;
  set field = self::Extension|set#field;
  static get staticField = get self::Extension|staticField;
  static set staticField = set self::Extension|staticField;
  get finalField = self::Extension|get#finalField;
  static get staticFinalField = get self::Extension|staticFinalField;
  method method = self::Extension|method;
  method tearoff method = self::Extension|get#method;
  static method staticMethod = self::Extension|staticMethod;
  get getter = self::Extension|get#getter;
  static get staticGetter = get self::Extension|staticGetter;
  get property = self::Extension|get#property;
  static get staticProperty = get self::Extension|staticProperty;
  get fieldSetter = self::Extension|get#fieldSetter;
  static get staticFieldSetter = get self::Extension|staticFieldSetter;
  set setter = self::Extension|set#setter;
  static set staticSetter = set self::Extension|staticSetter;
  set property = self::Extension|set#property;
  static set staticProperty = set self::Extension|staticProperty;
  set fieldSetter = self::Extension|set#fieldSetter;
  static set staticFieldSetter = set self::Extension|staticFieldSetter;
}
external static extension-member method Extension|get#field<T extends core::num>(lowered core::List<self::Extension|get#field::T> #this) → self::Extension|get#field::T;
external static extension-member method Extension|set#field<T extends core::num>(lowered core::List<self::Extension|set#field::T> #this, self::Extension|set#field::T #externalFieldValue) → void;
external static extension-member get Extension|staticField() → core::int;
external static extension-member set Extension|staticField(core::int #externalFieldValue) → void;
external static extension-member method Extension|get#finalField<T extends core::num>(lowered core::List<self::Extension|get#finalField::T> #this) → self::Extension|get#finalField::T;
external static extension-member get Extension|staticFinalField() → core::int;
external static extension-member method Extension|method<T extends core::num>(lowered final core::List<self::Extension|method::T> #this) → self::Extension|method::T;
static extension-member method Extension|get#method<T extends core::num>(lowered final core::List<self::Extension|get#method::T> #this) → () → self::Extension|get#method::T
  return () → self::Extension|get#method::T => self::Extension|method<self::Extension|get#method::T>(#this);
external static extension-member method Extension|staticMethod() → core::int;
external static extension-member method Extension|get#getter<T extends core::num>(lowered final core::List<self::Extension|get#getter::T> #this) → self::Extension|get#getter::T;
external static extension-member get Extension|staticGetter() → core::int;
external static extension-member method Extension|set#setter<T extends core::num>(lowered final core::List<self::Extension|set#setter::T> #this, self::Extension|set#setter::T value) → void;
external static extension-member set Extension|staticSetter(core::int value) → void;
external static extension-member method Extension|get#property<T extends core::num>(lowered final core::List<self::Extension|get#property::T> #this) → self::Extension|get#property::T;
external static extension-member method Extension|set#property<T extends core::num>(lowered final core::List<self::Extension|set#property::T> #this, self::Extension|set#property::T value) → void;
external static extension-member get Extension|staticProperty() → core::int;
external static extension-member set Extension|staticProperty(core::int value) → void;
external static extension-member method Extension|get#fieldSetter<T extends core::num>(lowered core::List<self::Extension|get#fieldSetter::T> #this) → self::Extension|get#fieldSetter::T;
external static extension-member method Extension|set#fieldSetter<T extends core::num>(lowered final core::List<self::Extension|set#fieldSetter::T> #this, self::Extension|set#fieldSetter::T value) → void;
external static extension-member get Extension|staticFieldSetter() → core::int;
external static extension-member set Extension|staticFieldSetter(core::int value) → void;
static method test() → dynamic {
  core::List<core::int> list = <core::int>[];
  core::int value = self::Extension|get#field<core::int>(list);
  self::Extension|set#field<core::int>(list, value);
  value = self::Extension|get#finalField<core::int>(list);
  value = self::Extension|method<core::int>(list);
  value = self::Extension|get#getter<core::int>(list);
  self::Extension|set#setter<core::int>(list, value);
  value = self::Extension|get#property<core::int>(list);
  self::Extension|set#property<core::int>(list, value);
  value = self::Extension|get#fieldSetter<core::int>(list);
  self::Extension|set#fieldSetter<core::int>(list, value);
  core::List<core::int> iterable = list;
  core::num n = self::Extension|get#field<core::num>(iterable);
  self::Extension|set#field<core::num>(iterable, n);
  n = self::Extension|get#finalField<core::num>(iterable);
  n = self::Extension|method<core::num>(iterable);
  n = self::Extension|get#getter<core::num>(iterable);
  self::Extension|set#setter<core::num>(iterable, n);
  n = self::Extension|get#property<core::num>(iterable);
  self::Extension|set#property<core::num>(iterable, n);
  n = self::Extension|get#fieldSetter<core::num>(iterable);
  self::Extension|set#fieldSetter<core::num>(iterable, n);
  value = self::Extension|staticField;
  self::Extension|staticField = value;
  value = self::Extension|staticFinalField;
  value = self::Extension|staticMethod();
  value = self::Extension|staticGetter;
  self::Extension|staticSetter = value;
  value = self::Extension|staticProperty;
  self::Extension|staticProperty = value;
  value = self::Extension|staticFieldSetter;
  self::Extension|staticFieldSetter = value;
}
static method main() → dynamic {}
