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

static method testString() → dynamic {
  core::print("a");
}
static method testInt() → dynamic {
  core::print(1);
}
static method testBool() → dynamic {
  core::print(true);
  core::print(false);
}
static method testDouble() → dynamic {
  core::print(1.0);
}
static method testNull() → dynamic {
  core::print(null);
}
static method testList() → dynamic {
  core::print(core::_GrowableList::•<dynamic>(0));
  core::print(core::_GrowableList::_literal2<core::String*>("a", "b"));
}
static method testMap() → dynamic {
  core::print(<dynamic, dynamic>{});
  core::print(<core::String*, core::String*>{"a": "b"});
}
static method testSymbol() → dynamic {
  core::print(#C1);
  core::print(#C2);
  core::print(#C3);
}
static method main() → dynamic {
  self::testString();
  self::testInt();
  self::testBool();
  self::testDouble();
  self::testNull();
  self::testList();
  self::testMap();
  self::testSymbol();
}

constants  {
  #C1 = #fisk
  #C2 = #org-dartlang-testcase:///literals.dart::_fisk
  #C3 = #fisk.hest.ko
}
