modified for Dart SDK 17463