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(<dynamic>[]);
  core::print(<dynamic>["a", "b"]);
}
static method testMap() → dynamic {
  core::print(<dynamic, dynamic>{});
  core::print(<dynamic, dynamic>{"a": "b"});
}
static method testSymbol() → dynamic {
  core::print(#fisk);
  core::print(#_fisk);
  core::print(#fisk.hest.ko);
}
static method main() → dynamic {
  self::testString();
  self::testInt();
  self::testBool();
  self::testDouble();
  self::testNull();
  self::testList();
  self::testMap();
  self::testSymbol();
}
