| // Copyright 2013 The Flutter Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | part of dart.ui; | 
 |  | 
 | /// Annotation to keep [Object.toString] overrides as-is instead of removing | 
 | /// them for size optimization purposes. | 
 | /// | 
 | /// For certain uris (currently `dart:ui` and `package:flutter`) the Dart | 
 | /// compiler will remove [Object.toString] overrides from classes in | 
 | /// profile/release mode to reduce code size. | 
 | /// | 
 | /// Individual classes can opt out of this behavior via the following | 
 | /// annotations: | 
 | /// | 
 | ///    * `@pragma('flutter:keep-to-string')` | 
 | ///    * `@pragma('flutter:keep-to-string-in-subtypes')` | 
 | /// | 
 | /// See https://github.com/dart-lang/sdk/blob/main/runtime/docs/pragmas.md | 
 | /// | 
 | /// For example, in the following class the `toString` method will remain as | 
 | /// `return _buffer.toString();`, even if the  `--delete-tostring-package-uri` | 
 | /// option would otherwise apply and replace it with `return super.toString()`. | 
 | /// (By convention, `dart:ui` is usually imported `as ui`, hence the prefix.) | 
 | /// | 
 | /// ```dart | 
 | /// class MyStringBuffer { | 
 | ///   final StringBuffer _buffer = StringBuffer(); | 
 | /// | 
 | ///   // ... | 
 | /// | 
 | ///   @ui.keepToString | 
 | ///   @override | 
 | ///   String toString() { | 
 | ///     return _buffer.toString(); | 
 | ///   } | 
 | /// } | 
 | /// ``` | 
 | const pragma keepToString = pragma('flutter:keep-to-string'); |