See Dart source for more info