modified for Dart SDK rev. 20272