library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

extension HashAll on core::Iterable<dynamic> {
  method hashAll = self::HashAll|hashAll;
  tearoff hashAll = self::HashAll|get#hashAll;
}
extension HashAllList on core::List<dynamic> {
  method hashAll = self::HashAllList|hashAll;
  tearoff hashAll = self::HashAllList|get#hashAll;
}
static method HashAll|hashAll(lowered final core::Iterable<dynamic> #this) → core::int
  return 0;
static method HashAll|get#hashAll(lowered final core::Iterable<dynamic> #this) → () → core::int
  return () → core::int => self::HashAll|hashAll(#this);
static method HashAllList|hashAll(lowered final core::List<dynamic> #this) → core::int
  return 1;
static method HashAllList|get#hashAll(lowered final core::List<dynamic> #this) → () → core::int
  return () → core::int => self::HashAllList|hashAll(#this);
static method main() → void {
  core::List<dynamic> l = core::_GrowableList::•<dynamic>(0);
  core::Iterable<dynamic> i = core::_GrowableList::•<dynamic>(0);
  core::print(self::HashAllList|hashAll(l));
  core::print(self::HashAll|hashAll(i));
}
