Add @override annotations to flutter framework
diff --git a/dev/manual_tests/card_collection.dart b/dev/manual_tests/card_collection.dart
index 602d3bf..1ea8b09 100644
--- a/dev/manual_tests/card_collection.dart
+++ b/dev/manual_tests/card_collection.dart
@@ -17,6 +17,7 @@
 }
 
 class CardCollection extends StatefulWidget {
+  @override
   CardCollectionState createState() => new CardCollectionState();
 }
 
@@ -72,6 +73,7 @@
       _initVariableSizedCardModels();
   }
 
+  @override
   void initState() {
     super.initState();
     _initCardModels();
@@ -403,6 +405,7 @@
     .createShader(bounds);
   }
 
+  @override
   Widget build(BuildContext context) {
     Widget cardCollection;
     if (_fixedSizeCards) {
diff --git a/dev/manual_tests/drag_and_drop.dart b/dev/manual_tests/drag_and_drop.dart
index 832a01d..f7c5a76 100644
--- a/dev/manual_tests/drag_and_drop.dart
+++ b/dev/manual_tests/drag_and_drop.dart
@@ -7,6 +7,7 @@
 import 'package:flutter/material.dart';
 
 class ExampleDragTarget extends StatefulWidget {
+  @override
   ExampleDragTargetState createState() => new ExampleDragTargetState();
 }
 
@@ -19,6 +20,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     return new DragTarget<Color>(
       onAccept: _handleAccept,
@@ -41,14 +43,19 @@
 
 class Dot extends StatefulWidget {
   Dot({ Key key, this.color, this.size, this.child, this.tappable: false }) : super(key: key);
+
   final Color color;
   final double size;
   final Widget child;
   final bool tappable;
+
+  @override
   DotState createState() => new DotState();
 }
 class DotState extends State<Dot> {
   int taps = 0;
+
+  @override
   Widget build(BuildContext context) {
     return new GestureDetector(
       onTap: config.tappable ? () { setState(() { taps += 1; }); } : null,
@@ -84,6 +91,7 @@
   static const double kHeavyMultiplier = 1.5;
   static const double kFingerSize = 50.0;
 
+  @override
   Widget build(BuildContext context) {
     double size = kDotSize;
     if (heavy)
@@ -146,6 +154,7 @@
   static const double segmentArc = deltaTheta / 2.0; // radians
   static const double startOffset = 1.0; // radians
 
+  @override
   void paint(Canvas canvas, Size size) {
     final double radius = size.shortestSide / 2.0;
     final Paint paint = new Paint()
@@ -159,6 +168,7 @@
     canvas.drawPath(path, paint);
   }
 
+  @override
   bool shouldRepaint(DashOutlineCirclePainter oldPainter) => false;
 }
 
@@ -172,6 +182,7 @@
   static final GlobalKey kBallKey = new GlobalKey();
   static const double kBallSize = 50.0;
 
+  @override
   Widget build(BuildContext context) {
     Widget ball = new DefaultTextStyle(
       style: Theme.of(context).textTheme.body1.copyWith(
@@ -213,14 +224,18 @@
 }
 
 class DragAndDropApp extends StatefulWidget {
+  @override
   DragAndDropAppState createState() => new DragAndDropAppState();
 }
 
 class DragAndDropAppState extends State<DragAndDropApp> {
   int position = 1;
+
   void moveBall(int newPosition) {
     setState(() { position = newPosition; });
   }
+
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: new AppBar(
diff --git a/dev/manual_tests/mozart.dart b/dev/manual_tests/mozart.dart
index 83840cf..2521c38 100644
--- a/dev/manual_tests/mozart.dart
+++ b/dev/manual_tests/mozart.dart
@@ -46,6 +46,7 @@
   final GestureTapCallback onTap;
   final GesturePanUpdateCallback onPanUpdate;
 
+  @override
   Widget build(BuildContext context) {
     double top, right, bottom, left, width, height;
 
@@ -93,6 +94,7 @@
   final ChildViewConnection child;
   final ValueChanged<ChildViewConnection> onClose;
 
+  @override
   _WindowState createState() => new _WindowState();
 }
 
@@ -119,6 +121,7 @@
     config.onClose(config.child);
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Positioned(
       left: _offset.dx,
@@ -167,6 +170,7 @@
   final Widget child;
   final ValueChanged<ChildViewConnection> onLaunch;
 
+  @override
   Widget build(BuildContext context) {
     return new RaisedButton(
       onPressed: () { onLaunch(new ChildViewConnection(url: url)); },
@@ -180,6 +184,7 @@
 
   final List<Widget> items;
 
+  @override
   Widget build(BuildContext context) {
     return new Row(
       mainAxisAlignment: MainAxisAlignment.center,
@@ -189,6 +194,7 @@
 }
 
 class WindowManager extends StatefulWidget {
+  @override
   _WindowManagerState createState() => new _WindowManagerState();
 }
 
@@ -207,6 +213,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Material(
       child: new Stack(
diff --git a/dev/manual_tests/overlay_geometry.dart b/dev/manual_tests/overlay_geometry.dart
index 566f8e5..bcde679 100644
--- a/dev/manual_tests/overlay_geometry.dart
+++ b/dev/manual_tests/overlay_geometry.dart
@@ -27,6 +27,7 @@
   final double size;
   final MarkerType type;
 
+  @override
   void paint(Canvas canvas, _) {
     Paint paint = new Paint()..color = const Color(0x8000FF00);
     double r = size / 2.0;
@@ -46,6 +47,7 @@
     }
   }
 
+  @override
   bool shouldRepaint(_MarkerPainter oldPainter) {
     return oldPainter.size != size
         || oldPainter.type != type;
@@ -64,6 +66,7 @@
   final double size;
   final MarkerType type;
 
+  @override
   Widget build(BuildContext context) {
     return new Positioned(
       left: position.x - size / 2.0,
@@ -83,6 +86,7 @@
 }
 
 class OverlayGeometryApp extends StatefulWidget {
+  @override
   OverlayGeometryAppState createState() => new OverlayGeometryAppState();
 }
 
@@ -96,6 +100,7 @@
   double markersScrollOffset;
   ScrollListener scrollListener;
 
+  @override
   void initState() {
     super.initState();
     List<double> cardHeights = <double>[
@@ -151,6 +156,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     List<Widget> layers = <Widget>[
       new Scaffold(
diff --git a/dev/manual_tests/pageable_list.dart b/dev/manual_tests/pageable_list.dart
index d13eaca..fe2992d 100644
--- a/dev/manual_tests/pageable_list.dart
+++ b/dev/manual_tests/pageable_list.dart
@@ -14,10 +14,12 @@
 }
 
 class PageableListApp extends StatefulWidget {
+  @override
   PageableListAppState createState() => new PageableListAppState();
 }
 
 class PageableListAppState extends State<PageableListApp> {
+  @override
   void initState() {
     super.initState();
     List<Size> cardSizes = [
@@ -122,6 +124,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     return new IconTheme(
       data: const IconThemeData(color: Colors.white),
diff --git a/dev/manual_tests/raw_keyboard.dart b/dev/manual_tests/raw_keyboard.dart
index 7960ac2..df57d6d 100644
--- a/dev/manual_tests/raw_keyboard.dart
+++ b/dev/manual_tests/raw_keyboard.dart
@@ -33,6 +33,7 @@
 class RawKeyboardDemo extends StatefulWidget {
   RawKeyboardDemo({ GlobalKey key }) : super(key: key);
 
+  @override
   _HardwareKeyDemoState createState() => new _HardwareKeyDemoState();
 }
 
@@ -45,6 +46,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context)  {
     bool focused = Focus.at(context);
     Widget child;
diff --git a/examples/layers/rendering/autolayout.dart b/examples/layers/rendering/autolayout.dart
index de29293..2380cd3 100644
--- a/examples/layers/rendering/autolayout.dart
+++ b/examples/layers/rendering/autolayout.dart
@@ -14,6 +14,7 @@
   AutoLayoutRect p3 = new AutoLayoutRect();
   AutoLayoutRect p4 = new AutoLayoutRect();
 
+  @override
   List<al.Constraint> getConstraints(AutoLayoutRect parent) {
     return <al.Constraint>[
       // Sum of widths of each box must be equal to that of the container
@@ -44,6 +45,7 @@
     ];
   }
 
+  @override
   bool shouldUpdateConstraints(AutoLayoutDelegate oldDelegate) => true;
 }
 
diff --git a/examples/layers/rendering/src/sector_layout.dart b/examples/layers/rendering/src/sector_layout.dart
index d8b69f4..069888c 100644
--- a/examples/layers/rendering/src/sector_layout.dart
+++ b/examples/layers/rendering/src/sector_layout.dart
@@ -36,9 +36,13 @@
     return deltaTheta.clamp(minDeltaTheta, maxDeltaTheta);
   }
 
+  @override
   bool get isTight => minDeltaTheta >= maxDeltaTheta && minDeltaTheta >= maxDeltaTheta;
 
+  @override
   bool get isNormalized => minDeltaRadius <= maxDeltaRadius && minDeltaTheta <= maxDeltaTheta;
+
+  @override
   bool get debugAssertIsNormalized {
     assert(isNormalized);
     return isNormalized;
@@ -69,6 +73,7 @@
 
 abstract class RenderSector extends RenderObject {
 
+  @override
   void setupParentData(RenderObject child) {
     if (child.parentData is! SectorParentData)
       child.parentData = new SectorParentData();
@@ -76,13 +81,17 @@
 
   // RenderSectors always use SectorParentData subclasses, as they need to be
   // able to read their position information for painting and hit testing.
+  @override
   SectorParentData get parentData => super.parentData;
 
   SectorDimensions getIntrinsicDimensions(SectorConstraints constraints, double radius) {
     return new SectorDimensions.withConstraints(constraints);
   }
 
+  @override
   SectorConstraints get constraints => super.constraints;
+
+  @override
   void debugAssertDoesMeetConstraints() {
     assert(constraints != null);
     assert(deltaRadius != null);
@@ -94,11 +103,15 @@
     assert(constraints.minDeltaTheta <= deltaTheta);
     assert(deltaTheta <= math.max(constraints.minDeltaTheta, constraints.maxDeltaTheta));
   }
+
+  @override
   void performResize() {
     // default behavior for subclasses that have sizedByParent = true
     deltaRadius = constraints.constrainDeltaRadius(0.0);
     deltaTheta = constraints.constrainDeltaTheta(0.0);
   }
+
+  @override
   void performLayout() {
     // descendants have to either override performLayout() to set both
     // the dimensions and lay out children, or, set sizedByParent to
@@ -106,7 +119,10 @@
     assert(sizedByParent);
   }
 
+  @override
   Rect get paintBounds => new Rect.fromLTWH(0.0, 0.0, 2.0 * deltaRadius, 2.0 * deltaRadius);
+
+  @override
   Rect get semanticBounds => new Rect.fromLTWH(-deltaRadius, -deltaRadius, 2.0 * deltaRadius, 2.0 * deltaRadius);
 
   bool hitTest(HitTestResult result, { double radius, double theta }) {
@@ -137,6 +153,7 @@
   }
 
   // offset must point to the center of the circle
+  @override
   void paint(PaintingContext context, Offset offset) {
     assert(deltaRadius != null);
     assert(deltaTheta != null);
@@ -167,6 +184,7 @@
 class RenderSectorWithChildren extends RenderDecoratedSector with ContainerRenderObjectMixin<RenderSector, SectorChildListParentData> {
   RenderSectorWithChildren(BoxDecoration decoration) : super(decoration);
 
+  @override
   void hitTestChildren(HitTestResult result, { double radius, double theta }) {
     RenderSector child = lastChild;
     while (child != null) {
@@ -177,6 +195,7 @@
     }
   }
 
+  @override
   void visitChildren(RenderObjectVisitor visitor) {
     RenderSector child = lastChild;
     while (child != null) {
@@ -217,12 +236,14 @@
     }
   }
 
+  @override
   void setupParentData(RenderObject child) {
     // TODO(ianh): avoid code duplication
     if (child.parentData is! SectorChildListParentData)
       child.parentData = new SectorChildListParentData();
   }
 
+  @override
   SectorDimensions getIntrinsicDimensions(SectorConstraints constraints, double radius) {
     double outerDeltaRadius = constraints.constrainDeltaRadius(desiredDeltaRadius);
     double innerDeltaRadius = outerDeltaRadius - padding * 2.0;
@@ -251,6 +272,7 @@
                                                 deltaTheta: innerTheta);
   }
 
+  @override
   void performLayout() {
     assert(this.parentData is SectorParentData);
     deltaRadius = constraints.constrainDeltaRadius(desiredDeltaRadius);
@@ -284,6 +306,7 @@
 
   // offset must point to the center of our circle
   // each sector then knows how to paint itself at its location
+  @override
   void paint(PaintingContext context, Offset offset) {
     // TODO(ianh): avoid code duplication
     super.paint(context, offset);
@@ -327,12 +350,14 @@
     }
   }
 
+  @override
   void setupParentData(RenderObject child) {
     // TODO(ianh): avoid code duplication
     if (child.parentData is! SectorChildListParentData)
       child.parentData = new SectorChildListParentData();
   }
 
+  @override
   SectorDimensions getIntrinsicDimensions(SectorConstraints constraints, double radius) {
     assert(this.parentData is SectorParentData);
     double paddingTheta = math.atan(padding / this.parentData.radius);
@@ -359,6 +384,7 @@
                                                 deltaTheta: outerDeltaTheta);
   }
 
+  @override
   void performLayout() {
     assert(this.parentData is SectorParentData);
     deltaTheta = constraints.constrainDeltaTheta(desiredDeltaTheta);
@@ -389,6 +415,7 @@
 
   // offset must point to the center of our circle
   // each sector then knows how to paint itself at its location
+  @override
   void paint(PaintingContext context, Offset offset) {
     // TODO(ianh): avoid code duplication
     super.paint(context, offset);
@@ -417,29 +444,34 @@
     markNeedsLayout();
   }
 
+  @override
   void setupParentData(RenderObject child) {
     if (child.parentData is! SectorParentData)
       child.parentData = new SectorParentData();
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     if (child == null)
       return super.getMinIntrinsicWidth(constraints);
     return getIntrinsicDimensions(constraints).width;
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     if (child == null)
       return super.getMaxIntrinsicWidth(constraints);
     return getIntrinsicDimensions(constraints).width;
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     if (child == null)
       return super.getMinIntrinsicHeight(constraints);
     return getIntrinsicDimensions(constraints).height;
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     if (child == null)
       return super.getMaxIntrinsicHeight(constraints);
@@ -456,6 +488,7 @@
     return constraints.constrain(new Size(dimension, dimension));
   }
 
+  @override
   void performLayout() {
     if (child == null) {
       size = constraints.constrain(Size.zero);
@@ -472,6 +505,7 @@
     }
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     super.paint(context, offset);
     if (child != null) {
@@ -481,6 +515,7 @@
     }
   }
 
+  @override
   bool hitTest(HitTestResult result, { Point position }) {
     if (child == null)
       return false;
@@ -516,15 +551,18 @@
   double desiredDeltaTheta;
   final Color backgroundColor;
 
+  @override
   SectorDimensions getIntrinsicDimensions(SectorConstraints constraints, double radius) {
     return new SectorDimensions.withConstraints(constraints, deltaTheta: desiredDeltaTheta);
   }
 
+  @override
   void performLayout() {
     deltaRadius = constraints.constrainDeltaRadius(desiredDeltaRadius);
     deltaTheta = constraints.constrainDeltaTheta(desiredDeltaTheta);
   }
 
+  @override
   void handleEvent(PointerEvent event, HitTestEntry entry) {
     if (event is PointerDownEvent) {
       decoration = new BoxDecoration(backgroundColor: const Color(0xFFFF0000));
diff --git a/examples/layers/rendering/src/solid_color_box.dart b/examples/layers/rendering/src/solid_color_box.dart
index d4dbcf0..77dce23 100644
--- a/examples/layers/rendering/src/solid_color_box.dart
+++ b/examples/layers/rendering/src/solid_color_box.dart
@@ -13,34 +13,40 @@
       : backgroundColor = backgroundColor,
         super(decoration: new BoxDecoration(backgroundColor: backgroundColor));
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     return constraints.constrainHeight(
       this.desiredSize == Size.infinite ? 0.0 : desiredSize.width
     );
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     return constraints.constrainWidth(
       this.desiredSize == Size.infinite ? 0.0 : desiredSize.width
     );
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     return constraints.constrainHeight(
       this.desiredSize == Size.infinite ? 0.0 : desiredSize.height
     );
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     return constraints.constrainHeight(
       this.desiredSize == Size.infinite ? 0.0 : desiredSize.height
     );
   }
 
+  @override
   void performLayout() {
     size = constraints.constrain(desiredSize);
   }
 
+  @override
   void handleEvent(PointerEvent event, BoxHitTestEntry entry) {
     if (event is PointerDownEvent) {
       decoration = new BoxDecoration(backgroundColor: const Color(0xFFFF0000));
diff --git a/examples/layers/rendering/touch_input.dart b/examples/layers/rendering/touch_input.dart
index 05a50fc..c566949 100644
--- a/examples/layers/rendering/touch_input.dart
+++ b/examples/layers/rendering/touch_input.dart
@@ -45,20 +45,24 @@
 
   /// Indicates that the size of this render object depends only on the
   /// layout constraints provided by the parent.
+  @override
   bool get sizedByParent => true;
 
   /// By selecting the biggest value permitted by the incomming constraints
   /// during layout, this function makes this render object as large as
   /// possible (i.e., fills the entire screen).
+  @override
   void performResize() {
     size = constraints.biggest;
   }
 
   /// Makes this render object hittable so that it receives pointer events.
+  @override
   bool hitTestSelf(Point position) => true;
 
   /// Processes pointer events by mutating state and invalidating its previous
   /// painting commands.
+  @override
   void handleEvent(PointerEvent event, BoxHitTestEntry entry) {
     if (event is PointerDownEvent) {
       Color color = _kColors[event.pointer.remainder(_kColors.length)];
@@ -78,6 +82,7 @@
   }
 
   /// Issues new painting commands.
+  @override
   void paint(PaintingContext context, Offset offset) {
     final Canvas canvas = context.canvas;
     // The "size" property indicates the size of that this render box was
diff --git a/examples/layers/services/media_service.dart b/examples/layers/services/media_service.dart
index 1bd51ce..2bb0e4a 100644
--- a/examples/layers/services/media_service.dart
+++ b/examples/layers/services/media_service.dart
@@ -74,6 +74,7 @@
     }
   }
 
+  @override
   Widget build(BuildContext context) {
     List<Widget> children = <Widget>[];
     for (PianoKey key in keys) {
diff --git a/examples/layers/widgets/autolayout.dart b/examples/layers/widgets/autolayout.dart
index 3b4d028..11bd267 100644
--- a/examples/layers/widgets/autolayout.dart
+++ b/examples/layers/widgets/autolayout.dart
@@ -13,6 +13,7 @@
   AutoLayoutRect p3 = new AutoLayoutRect();
   AutoLayoutRect p4 = new AutoLayoutRect();
 
+  @override
   List<al.Constraint> getConstraints(AutoLayoutRect parent) {
     return <al.Constraint>[
       // Sum of widths of each box must be equal to that of the container
@@ -43,16 +44,19 @@
     ];
   }
 
+  @override
   bool shouldUpdateConstraints(_MyAutoLayoutDelegate oldDelegate) => true;
 }
 
 class ColoredBoxes extends StatefulWidget {
+  @override
   _ColoredBoxesState createState() => new _ColoredBoxesState();
 }
 
 class _ColoredBoxesState extends State<ColoredBoxes> {
   final _MyAutoLayoutDelegate delegate = new _MyAutoLayoutDelegate();
 
+  @override
   Widget build(BuildContext context) {
     return new AutoLayout(
       delegate: delegate,
diff --git a/examples/layers/widgets/custom_render_box.dart b/examples/layers/widgets/custom_render_box.dart
index a938388..f5ace57 100644
--- a/examples/layers/widgets/custom_render_box.dart
+++ b/examples/layers/widgets/custom_render_box.dart
@@ -9,10 +9,12 @@
   RenderDots() : super(additionalConstraints: const BoxConstraints.expand());
 
   // Makes this render box hittable so that we'll get pointer events.
+  @override
   bool hitTestSelf(Point position) => true;
 
   final Map<int, Point> _dots = <int, Point>{};
 
+  @override
   void handleEvent(PointerEvent event, BoxHitTestEntry entry) {
     if (event is PointerDownEvent || event is PointerMoveEvent) {
       _dots[event.pointer] = event.position;
@@ -23,6 +25,7 @@
     }
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     final Canvas canvas = context.canvas;
     canvas.drawRect(offset & size, new Paint()..color = new Color(0xFF0000FF));
@@ -37,6 +40,8 @@
 
 class Dots extends SingleChildRenderObjectWidget {
   Dots({ Key key, Widget child }) : super(key: key, child: child);
+
+  @override
   RenderDots createRenderObject(BuildContext context) => new RenderDots();
 }
 
diff --git a/examples/layers/widgets/gestures.dart b/examples/layers/widgets/gestures.dart
index 7fa1042..d44415d 100644
--- a/examples/layers/widgets/gestures.dart
+++ b/examples/layers/widgets/gestures.dart
@@ -25,6 +25,7 @@
   final bool doubleTapEnabled;
   final bool longPressEnabled;
 
+  @override
   void paint(Canvas canvas, Size size) {
     Point center = (size.center(Point.origin).toOffset() * zoom + offset).toPoint();
     double radius = size.width / 2.0 * zoom;
@@ -42,6 +43,7 @@
     canvas.drawCircle(center, radius, paint);
   }
 
+  @override
   bool shouldRepaint(_GesturePainter oldPainter) {
     return oldPainter.zoom != zoom
         || oldPainter.offset != offset
@@ -55,6 +57,7 @@
 }
 
 class GestureDemo extends StatefulWidget {
+  @override
   _GestureDemoState createState() => new _GestureDemoState();
 }
 
@@ -134,6 +137,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Stack(
       children: <Widget>[
diff --git a/examples/layers/widgets/media_query.dart b/examples/layers/widgets/media_query.dart
index 20120d0..5c50264 100644
--- a/examples/layers/widgets/media_query.dart
+++ b/examples/layers/widgets/media_query.dart
@@ -9,6 +9,7 @@
 
   final String name;
 
+  @override
   Widget build(BuildContext context) {
     return new Row(
       children: <Widget>[
@@ -31,6 +32,7 @@
 
   final String name;
 
+  @override
   Widget build(BuildContext context) {
     return new Card(
       child: new Column(
@@ -70,6 +72,7 @@
 
   final List<String> names;
 
+  @override
   Widget build(BuildContext context) {
     if (MediaQuery.of(context).size.width < _kGridViewBreakpoint) {
       return new ScrollableList(
diff --git a/examples/layers/widgets/sectors.dart b/examples/layers/widgets/sectors.dart
index e058043..33ac584 100644
--- a/examples/layers/widgets/sectors.dart
+++ b/examples/layers/widgets/sectors.dart
@@ -17,6 +17,7 @@
 }
 
 class SectorApp extends StatefulWidget {
+  @override
   SectorAppState createState() => new SectorAppState();
 }
 
@@ -147,6 +148,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     return new MaterialApp(
       theme: new ThemeData.light(),
diff --git a/examples/layers/widgets/spinning_mixed.dart b/examples/layers/widgets/spinning_mixed.dart
index 2998e2c..9b4e5cf 100644
--- a/examples/layers/widgets/spinning_mixed.dart
+++ b/examples/layers/widgets/spinning_mixed.dart
@@ -18,7 +18,10 @@
 // Solid colour, Widget version
 class Rectangle extends StatelessWidget {
   Rectangle(this.color, { Key key }) : super(key: key);
+
   final Color color;
+
+  @override
   Widget build(BuildContext context) {
     return new Flexible(
       child: new Container(
diff --git a/examples/layers/widgets/spinning_square.dart b/examples/layers/widgets/spinning_square.dart
index bf754c6..8af6deb 100644
--- a/examples/layers/widgets/spinning_square.dart
+++ b/examples/layers/widgets/spinning_square.dart
@@ -5,12 +5,14 @@
 import 'package:flutter/widgets.dart';
 
 class SpinningSquare extends StatefulWidget {
+  @override
   _SpinningSquareState createState() => new _SpinningSquareState();
 }
 
 class _SpinningSquareState extends State<SpinningSquare> {
   AnimationController _animation;
 
+  @override
   void initState() {
     super.initState();
     // We use 3600 milliseconds instead of 1800 milliseconds because 0.0 -> 1.0
@@ -21,6 +23,7 @@
     )..repeat();
   }
 
+  @override
   Widget build(BuildContext context) {
     return new RotationTransition(
       turns: _animation,
diff --git a/examples/layers/widgets/styled_text.dart b/examples/layers/widgets/styled_text.dart
index 505e11b..673126f 100644
--- a/examples/layers/widgets/styled_text.dart
+++ b/examples/layers/widgets/styled_text.dart
@@ -58,6 +58,7 @@
 Widget toPlainText(String name, String text) => new Text(name + ":" + text);
 
 class SpeakerSeparator extends StatelessWidget {
+  @override
   Widget build(BuildContext context) {
     return new Container(
       constraints: const BoxConstraints.expand(height: 0.0),
@@ -72,10 +73,12 @@
 }
 
 class StyledTextDemo extends StatefulWidget {
+  @override
   _StyledTextDemoState createState() => new _StyledTextDemoState();
 }
 
 class _StyledTextDemoState extends State<StyledTextDemo> {
+  @override
   void initState() {
     super.initState();
     _toText = toStyledText;
@@ -89,6 +92,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     List<Widget> lines = _kNameLines
       .map((List<String> nameAndText) => Function.apply(_toText, nameAndText))
diff --git a/examples/material_gallery/lib/demo/buttons_demo.dart b/examples/material_gallery/lib/demo/buttons_demo.dart
index b1e2ecf..4ae9249 100644
--- a/examples/material_gallery/lib/demo/buttons_demo.dart
+++ b/examples/material_gallery/lib/demo/buttons_demo.dart
@@ -45,6 +45,7 @@
   // to recover this demo's selected tab. To enable it to compare restored
   // _ButtonDemo objects with new ones, define hashCode and operator== .
 
+  @override
   bool operator==(Object other) {
     if (other.runtimeType != runtimeType)
       return false;
@@ -52,16 +53,19 @@
     return typedOther.title == title && typedOther.text == text;
   }
 
+  @override
   int get hashCode => hashValues(title.hashCode, text.hashCode);
 }
 
 class ButtonsDemo extends StatefulWidget {
+  @override
   _ButtonsDemoState createState() => new _ButtonsDemoState();
 }
 
 class _ButtonsDemoState extends State<ButtonsDemo> {
   List<_ButtonDemo> demos;
 
+  @override
   void initState() {
     super.initState();
     demos = <_ButtonDemo>[
@@ -192,6 +196,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     return new TabBarSelection<_ButtonDemo>(
       values: demos,
diff --git a/examples/material_gallery/lib/demo/cards_demo.dart b/examples/material_gallery/lib/demo/cards_demo.dart
index f337a04..b379e0f 100644
--- a/examples/material_gallery/lib/demo/cards_demo.dart
+++ b/examples/material_gallery/lib/demo/cards_demo.dart
@@ -43,6 +43,7 @@
 
   final TravelDestination destination;
 
+  @override
   Widget build(BuildContext context) {
     ThemeData theme = Theme.of(context);
     TextStyle titleStyle = theme.textTheme.headline.copyWith(color: Colors.white);
@@ -115,6 +116,7 @@
 }
 
 class CardsDemo extends StatelessWidget {
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: new AppBar(
diff --git a/examples/material_gallery/lib/demo/chip_demo.dart b/examples/material_gallery/lib/demo/chip_demo.dart
index 2c1f331..124cfa1 100644
--- a/examples/material_gallery/lib/demo/chip_demo.dart
+++ b/examples/material_gallery/lib/demo/chip_demo.dart
@@ -5,6 +5,7 @@
 import 'package:flutter/material.dart';
 
 class ChipDemo extends StatefulWidget {
+  @override
   _ChipDemoState createState() => new _ChipDemoState();
 }
 
@@ -17,6 +18,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     List<Widget> chips = <Widget>[
       new Chip(
diff --git a/examples/material_gallery/lib/demo/colors_demo.dart b/examples/material_gallery/lib/demo/colors_demo.dart
index 744f930..601e49e 100644
--- a/examples/material_gallery/lib/demo/colors_demo.dart
+++ b/examples/material_gallery/lib/demo/colors_demo.dart
@@ -54,6 +54,7 @@
 
   String colorString() => "#${color.value.toRadixString(16).padLeft(8, '0').toUpperCase()}";
 
+  @override
   Widget build(BuildContext context) {
     return new Container(
       height: kColorItemHeight,
@@ -80,6 +81,7 @@
   final TextStyle blackTextStyle = Typography.black.body1;
   final TextStyle whiteTextStyle = Typography.white.body1;
 
+  @override
   Widget build(BuildContext context) {
     List<Widget> colorItems =  swatch.colors.keys.map((int index) {
       return new DefaultTextStyle(
@@ -107,6 +109,7 @@
 }
 
 class ColorsDemo extends StatelessWidget {
+  @override
   Widget build(BuildContext context) {
     return new TabBarSelection<ColorSwatch>(
       values: colorSwatches,
diff --git a/examples/material_gallery/lib/demo/date_picker_demo.dart b/examples/material_gallery/lib/demo/date_picker_demo.dart
index a97716d..a482af4 100644
--- a/examples/material_gallery/lib/demo/date_picker_demo.dart
+++ b/examples/material_gallery/lib/demo/date_picker_demo.dart
@@ -8,6 +8,7 @@
 import 'package:intl/intl.dart';
 
 class DatePickerDemo extends StatefulWidget {
+  @override
   _DatePickerDemoState createState() => new _DatePickerDemoState();
 }
 
@@ -28,6 +29,7 @@
     }
   }
 
+  @override
   Widget build(BuildContext context) {
     return
       new Scaffold(
diff --git a/examples/material_gallery/lib/demo/dialog_demo.dart b/examples/material_gallery/lib/demo/dialog_demo.dart
index caa6c08..ad06711 100644
--- a/examples/material_gallery/lib/demo/dialog_demo.dart
+++ b/examples/material_gallery/lib/demo/dialog_demo.dart
@@ -28,6 +28,7 @@
   final String text;
   final VoidCallback onPressed;
 
+  @override
   Widget build(BuildContext context) {
     return new InkWell(
       onTap: onPressed,
@@ -54,6 +55,7 @@
 }
 
 class DialogDemo extends StatefulWidget {
+  @override
   DialogDemoState createState() => new DialogDemoState();
 }
 
@@ -74,6 +76,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     final ThemeData theme = Theme.of(context);
     final TextStyle dialogTextStyle = theme.textTheme.subhead.copyWith(color: theme.textTheme.caption.color);
diff --git a/examples/material_gallery/lib/demo/drop_down_demo.dart b/examples/material_gallery/lib/demo/drop_down_demo.dart
index 91e0179..fe5a7c6 100644
--- a/examples/material_gallery/lib/demo/drop_down_demo.dart
+++ b/examples/material_gallery/lib/demo/drop_down_demo.dart
@@ -5,6 +5,7 @@
 import 'package:flutter/material.dart';
 
 class DropDownDemo extends StatefulWidget {
+  @override
   _DropDownDemoState createState() => new _DropDownDemoState();
 }
 
@@ -18,6 +19,7 @@
     .toList();
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: new AppBar(title: new Text("Dropdown Button")),
diff --git a/examples/material_gallery/lib/demo/fitness_demo.dart b/examples/material_gallery/lib/demo/fitness_demo.dart
index 43539f6..962ad5e 100644
--- a/examples/material_gallery/lib/demo/fitness_demo.dart
+++ b/examples/material_gallery/lib/demo/fitness_demo.dart
@@ -16,6 +16,7 @@
 class FitnessDemo extends StatelessWidget {
   FitnessDemo({ Key key }) : super(key: key);
 
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: new AppBar(
@@ -28,6 +29,8 @@
 
 class _FitnessDemoContents extends StatefulWidget {
   _FitnessDemoContents({ Key key }) : super(key: key);
+
+  @override
   _FitnessDemoContentsState createState() => new _FitnessDemoContentsState();
 }
 
@@ -43,6 +46,7 @@
     _sprites = new SpriteSheet(_images['packages/flutter_gallery_assets/jumpingjack.png'], json);
   }
 
+  @override
   void initState() {
     super.initState();
 
@@ -73,6 +77,7 @@
 
   _WorkoutAnimationNode workoutAnimation;
 
+  @override
   Widget build(BuildContext context) {
     if (!assetsLoaded)
       return new Container();
@@ -248,6 +253,7 @@
     _jumpingJack.neutralPose();
   }
 
+  @override
   void update(double dt) {
     if (workingOut) {
       int millis = new DateTime.now().millisecondsSinceEpoch - _startTimeMillis;
@@ -273,6 +279,7 @@
 
   double value;
 
+  @override
   void paint(Canvas canvas) {
     applyTransformForPivot(canvas);
 
@@ -513,10 +520,12 @@
 class _Fireworks extends StatefulWidget {
   _Fireworks({ Key key }) : super(key: key);
 
+  @override
   _FireworksState createState() => new _FireworksState();
 }
 
 class _FireworksState extends State<_Fireworks> {
+  @override
   void initState() {
     super.initState();
     fireworks = new _FireworksNode();
@@ -524,6 +533,7 @@
 
   _FireworksNode fireworks;
 
+  @override
   Widget build(BuildContext context) {
     return new SpriteWidget(fireworks);
   }
@@ -533,6 +543,7 @@
   _FireworksNode() : super(const Size(1024.0, 1024.0));
   double _countDown = 0.0;
 
+  @override
   void update(double dt) {
     if (_countDown <= 0.0) {
       _addExplosion();
diff --git a/examples/material_gallery/lib/demo/flexible_space_demo.dart b/examples/material_gallery/lib/demo/flexible_space_demo.dart
index ec7eab3..6cb3653 100644
--- a/examples/material_gallery/lib/demo/flexible_space_demo.dart
+++ b/examples/material_gallery/lib/demo/flexible_space_demo.dart
@@ -11,6 +11,7 @@
   final IconData icon;
   final List<Widget> children;
 
+  @override
   Widget build(BuildContext context) {
     return new Container(
       padding: const EdgeInsets.symmetric(vertical: 16.0),
@@ -41,6 +42,7 @@
   final IconData icon;
   final List<String> lines;
 
+  @override
   Widget build(BuildContext context) {
     List<Widget> columnChildren = lines.sublist(0, lines.length - 1).map((String line) => new Text(line)).toList();
     columnChildren.add(new Text(lines.last, style: Theme.of(context).textTheme.caption));
@@ -68,6 +70,7 @@
 }
 
 class FlexibleSpaceDemo extends StatefulWidget {
+  @override
   FlexibleSpaceDemoState createState() => new FlexibleSpaceDemoState();
 }
 
@@ -77,6 +80,7 @@
   final Key scrollableKey = new UniqueKey();
   AppBarBehavior _appBarBehavior = AppBarBehavior.scroll;
 
+  @override
   Widget build(BuildContext context) {
     return new Theme(
       data: new ThemeData(
diff --git a/examples/material_gallery/lib/demo/full_screen_dialog_demo.dart b/examples/material_gallery/lib/demo/full_screen_dialog_demo.dart
index a179ce9..b00807d 100644
--- a/examples/material_gallery/lib/demo/full_screen_dialog_demo.dart
+++ b/examples/material_gallery/lib/demo/full_screen_dialog_demo.dart
@@ -27,6 +27,7 @@
   final TimeOfDay time;
   final ValueChanged<DateTime> onChanged;
 
+  @override
   Widget build(BuildContext context) {
     final ThemeData theme = Theme.of(context);
 
@@ -93,6 +94,7 @@
 }
 
 class FullScreenDialogDemo extends StatefulWidget {
+  @override
   FullScreenDialogDemoState createState() => new FullScreenDialogDemoState();
 }
 
@@ -137,6 +139,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     final ThemeData theme = Theme.of(context);
 
diff --git a/examples/material_gallery/lib/demo/grid_list_demo.dart b/examples/material_gallery/lib/demo/grid_list_demo.dart
index e36cf78..bcc2fdf 100644
--- a/examples/material_gallery/lib/demo/grid_list_demo.dart
+++ b/examples/material_gallery/lib/demo/grid_list_demo.dart
@@ -55,6 +55,7 @@
     ));
   }
 
+  @override
   Widget build(BuildContext context) {
     final Widget image = new GestureDetector(
       onTap: () { showPhoto(context); },
@@ -104,9 +105,12 @@
     assert(tileHeightFactor != null && tileHeightFactor > 0.0);
   }
 
+  @override
   final int columnCount;
+
   final double tileHeightFactor;
 
+  @override
   GridSpecification getGridSpecification(BoxConstraints constraints, int childCount) {
     assert(constraints.maxWidth < double.INFINITY);
     assert(constraints.maxHeight < double.INFINITY);
@@ -121,6 +125,7 @@
     );
   }
 
+  @override
   bool shouldRelayout(GridListDemoGridDelegate oldDelegate) {
     return columnCount != oldDelegate.columnCount
         || tileHeightFactor != oldDelegate.tileHeightFactor
@@ -131,6 +136,7 @@
 class GridListDemo extends StatefulWidget {
   GridListDemo({ Key key }) : super(key: key);
 
+  @override
   GridListDemoState createState() => new GridListDemoState();
 }
 
@@ -169,6 +175,7 @@
   // When the ScrollableGrid first appears we want the last row to only be
   // partially visible, to help the user recognize that the grid is scrollable.
   // The GridListDemoGridDelegate's tileHeightFactor is used for this.
+  @override
   Widget build(BuildContext context) {
     final Orientation orientation = MediaQuery.of(context).orientation;
     return new Scaffold(
diff --git a/examples/material_gallery/lib/demo/icons_demo.dart b/examples/material_gallery/lib/demo/icons_demo.dart
index 051da20..b42ae7d 100644
--- a/examples/material_gallery/lib/demo/icons_demo.dart
+++ b/examples/material_gallery/lib/demo/icons_demo.dart
@@ -5,6 +5,7 @@
 import 'package:flutter/material.dart';
 
 class IconsDemo extends StatefulWidget {
+  @override
   IconsDemoState createState() => new IconsDemoState();
 }
 
@@ -61,6 +62,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     final ThemeData theme = Theme.of(context);
     final TextStyle textStyle = theme.textTheme.subhead.copyWith(color: theme.textTheme.caption.color);
diff --git a/examples/material_gallery/lib/demo/leave_behind_demo.dart b/examples/material_gallery/lib/demo/leave_behind_demo.dart
index 01a064f..26cbbd2 100644
--- a/examples/material_gallery/lib/demo/leave_behind_demo.dart
+++ b/examples/material_gallery/lib/demo/leave_behind_demo.dart
@@ -28,6 +28,7 @@
 class LeaveBehindDemo extends StatefulWidget {
   LeaveBehindDemo({ Key key }) : super(key: key);
 
+  @override
   LeaveBehindDemoState createState() => new LeaveBehindDemoState();
 }
 
@@ -47,6 +48,7 @@
     });
   }
 
+  @override
   void initState() {
     super.initState();
     initListItems();
@@ -122,6 +124,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       key: _scaffoldKey,
diff --git a/examples/material_gallery/lib/demo/list_demo.dart b/examples/material_gallery/lib/demo/list_demo.dart
index eec78f2..daa92ff 100644
--- a/examples/material_gallery/lib/demo/list_demo.dart
+++ b/examples/material_gallery/lib/demo/list_demo.dart
@@ -13,6 +13,7 @@
 class ListDemo extends StatefulWidget {
   ListDemo({ Key key }) : super(key: key);
 
+  @override
   ListDemoState createState() => new ListDemoState();
 }
 
@@ -153,6 +154,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     final String layoutText = _dense ? " \u2013 Dense" : "";
     String  itemSizeText;
diff --git a/examples/material_gallery/lib/demo/menu_demo.dart b/examples/material_gallery/lib/demo/menu_demo.dart
index 24a4eb9..c357e36 100644
--- a/examples/material_gallery/lib/demo/menu_demo.dart
+++ b/examples/material_gallery/lib/demo/menu_demo.dart
@@ -7,6 +7,7 @@
 class MenuDemo extends StatefulWidget {
   MenuDemo({ Key key }) : super(key: key);
 
+  @override
   MenuDemoState createState() => new MenuDemoState();
 }
 
@@ -24,6 +25,7 @@
   final String _checkedValue4 = 'Four';
   List<String> _checkedValues;
 
+  @override
   void initState() {
     super.initState();
     _simpleValue = _simpleValue2;
@@ -53,6 +55,7 @@
 
   bool isChecked(String value) => _checkedValues.contains(value);
 
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       key: _scaffoldKey,
diff --git a/examples/material_gallery/lib/demo/modal_bottom_sheet_demo.dart b/examples/material_gallery/lib/demo/modal_bottom_sheet_demo.dart
index 295fe4b..d347967 100644
--- a/examples/material_gallery/lib/demo/modal_bottom_sheet_demo.dart
+++ b/examples/material_gallery/lib/demo/modal_bottom_sheet_demo.dart
@@ -11,6 +11,7 @@
     textAlign: TextAlign.center
   );
 
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: new AppBar(title: new Text("Modal Bottom Sheet")),
diff --git a/examples/material_gallery/lib/demo/page_selector_demo.dart b/examples/material_gallery/lib/demo/page_selector_demo.dart
index 3afe479..d0d6747 100644
--- a/examples/material_gallery/lib/demo/page_selector_demo.dart
+++ b/examples/material_gallery/lib/demo/page_selector_demo.dart
@@ -12,6 +12,7 @@
       selection.value = selection.values[(selection.index + delta).clamp(0, selection.values.length - 1)];
   }
 
+  @override
   Widget build(BuildContext notUsed) { // Can't find the TabBarSelection from this context.
     final List<IconData> icons = <IconData>[
       Icons.event,
diff --git a/examples/material_gallery/lib/demo/persistent_bottom_sheet_demo.dart b/examples/material_gallery/lib/demo/persistent_bottom_sheet_demo.dart
index b003d5f..5709593 100644
--- a/examples/material_gallery/lib/demo/persistent_bottom_sheet_demo.dart
+++ b/examples/material_gallery/lib/demo/persistent_bottom_sheet_demo.dart
@@ -26,6 +26,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext notUsed) { // Can't find the Scaffold from this context.
     return new Scaffold(
       appBar: new AppBar(title: new Text("Persistent Bottom Sheet")),
diff --git a/examples/material_gallery/lib/demo/progress_indicator_demo.dart b/examples/material_gallery/lib/demo/progress_indicator_demo.dart
index ef65d09..4409615 100644
--- a/examples/material_gallery/lib/demo/progress_indicator_demo.dart
+++ b/examples/material_gallery/lib/demo/progress_indicator_demo.dart
@@ -5,11 +5,13 @@
 import 'package:flutter/material.dart';
 
 class ProgressIndicatorDemo extends StatefulWidget {
+  @override
   _ProgressIndicatorDemoState createState() => new _ProgressIndicatorDemoState();
 }
 
 class _ProgressIndicatorDemoState extends State<ProgressIndicatorDemo> {
 
+  @override
   void initState() {
     super.initState();
     controller = new AnimationController(
@@ -81,6 +83,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: new AppBar(title: new Text('Progress Indicators')),
diff --git a/examples/material_gallery/lib/demo/scrolling_techniques_demo.dart b/examples/material_gallery/lib/demo/scrolling_techniques_demo.dart
index d1c01e4..6c2cf91 100644
--- a/examples/material_gallery/lib/demo/scrolling_techniques_demo.dart
+++ b/examples/material_gallery/lib/demo/scrolling_techniques_demo.dart
@@ -19,6 +19,7 @@
   final String leftText;
   final String rightText;
 
+  @override
   Widget build(BuildContext context) {
     return new Container(
       height: height,
@@ -85,6 +86,7 @@
     Navigator.push(context, new MaterialPageRoute<Null>(builder: builder));
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Card(
       child: new InkWell(
@@ -111,6 +113,7 @@
   "specified it is stacked on top of the ToolBar.";
 
 class ScrollingTechniquesDemo extends StatelessWidget {
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: new AppBar(title: new Text('Scrolling Techniques')),
diff --git a/examples/material_gallery/lib/demo/slider_demo.dart b/examples/material_gallery/lib/demo/slider_demo.dart
index 623e794..0475476 100644
--- a/examples/material_gallery/lib/demo/slider_demo.dart
+++ b/examples/material_gallery/lib/demo/slider_demo.dart
@@ -5,12 +5,14 @@
 import 'package:flutter/material.dart';
 
 class SliderDemo extends StatefulWidget {
+  @override
   _SliderDemoState createState() => new _SliderDemoState();
 }
 
 class _SliderDemoState extends State<SliderDemo> {
   double _value = 25.0;
 
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: new AppBar(title: new Text("Sliders")),
diff --git a/examples/material_gallery/lib/demo/snack_bar_demo.dart b/examples/material_gallery/lib/demo/snack_bar_demo.dart
index d487c2a..c5affd3 100644
--- a/examples/material_gallery/lib/demo/snack_bar_demo.dart
+++ b/examples/material_gallery/lib/demo/snack_bar_demo.dart
@@ -56,6 +56,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: new AppBar(
diff --git a/examples/material_gallery/lib/demo/tabs_demo.dart b/examples/material_gallery/lib/demo/tabs_demo.dart
index 3764670..2292888 100644
--- a/examples/material_gallery/lib/demo/tabs_demo.dart
+++ b/examples/material_gallery/lib/demo/tabs_demo.dart
@@ -23,6 +23,7 @@
     Icons.language: 'LANGUAGE',
   };
 
+  @override
   Widget build(BuildContext context) {
     final Color iconColor = Theme.of(context).accentColor;
     return new TabBarSelection<IconData>(
diff --git a/examples/material_gallery/lib/demo/tabs_fab_demo.dart b/examples/material_gallery/lib/demo/tabs_fab_demo.dart
index 723c4e9..517e61d 100644
--- a/examples/material_gallery/lib/demo/tabs_fab_demo.dart
+++ b/examples/material_gallery/lib/demo/tabs_fab_demo.dart
@@ -26,6 +26,7 @@
   "by its key.";
 
 class TabsFabDemo extends StatefulWidget {
+  @override
   _TabsFabDemoState createState() => new _TabsFabDemoState();
 }
 
@@ -41,6 +42,7 @@
   ];
   _Page selectedPage;
 
+  @override
   void initState() {
     super.initState();
     selectedPage = pages[0];
@@ -88,6 +90,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     return new TabBarSelection<_Page>(
       values: pages,
diff --git a/examples/material_gallery/lib/demo/text_field_demo.dart b/examples/material_gallery/lib/demo/text_field_demo.dart
index 417a4aa..a5bf2d9 100644
--- a/examples/material_gallery/lib/demo/text_field_demo.dart
+++ b/examples/material_gallery/lib/demo/text_field_demo.dart
@@ -7,6 +7,7 @@
 class TextFieldDemo extends StatefulWidget {
   TextFieldDemo({ Key key }) : super(key: key);
 
+  @override
   TextFieldDemoState createState() => new TextFieldDemoState();
 }
 
@@ -59,6 +60,7 @@
     return null;
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       key: _scaffoldKey,
diff --git a/examples/material_gallery/lib/demo/time_picker_demo.dart b/examples/material_gallery/lib/demo/time_picker_demo.dart
index 99891d9..adf4983 100644
--- a/examples/material_gallery/lib/demo/time_picker_demo.dart
+++ b/examples/material_gallery/lib/demo/time_picker_demo.dart
@@ -7,6 +7,7 @@
 import 'package:flutter/material.dart';
 
 class TimePickerDemo extends StatefulWidget {
+  @override
   _TimePickerDemoState createState() => new _TimePickerDemoState();
 }
 
@@ -25,6 +26,7 @@
     }
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: new AppBar(title: new Text("Time Picker")),
diff --git a/examples/material_gallery/lib/demo/toggle_controls_demo.dart b/examples/material_gallery/lib/demo/toggle_controls_demo.dart
index 56a87d4..2b3759b 100644
--- a/examples/material_gallery/lib/demo/toggle_controls_demo.dart
+++ b/examples/material_gallery/lib/demo/toggle_controls_demo.dart
@@ -5,6 +5,7 @@
 import 'package:flutter/material.dart';
 
 class ToggleControlsDemo extends StatefulWidget {
+  @override
   _ToggleControlsDemoState createState() => new _ToggleControlsDemoState();
 }
 
@@ -31,6 +32,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: new AppBar(title: new Text("Selection Controls")),
diff --git a/examples/material_gallery/lib/demo/tooltip_demo.dart b/examples/material_gallery/lib/demo/tooltip_demo.dart
index 085f0cb..2dfb457 100644
--- a/examples/material_gallery/lib/demo/tooltip_demo.dart
+++ b/examples/material_gallery/lib/demo/tooltip_demo.dart
@@ -10,6 +10,7 @@
   "apps accessible, like screen readers.";
 
 class TooltipDemo extends StatelessWidget {
+  @override
   Widget build(BuildContext context) {
     final ThemeData theme = Theme.of(context);
     return new Scaffold(
diff --git a/examples/material_gallery/lib/demo/two_level_list_demo.dart b/examples/material_gallery/lib/demo/two_level_list_demo.dart
index b0d141f..7799592 100644
--- a/examples/material_gallery/lib/demo/two_level_list_demo.dart
+++ b/examples/material_gallery/lib/demo/two_level_list_demo.dart
@@ -5,6 +5,7 @@
 import 'package:flutter/material.dart';
 
 class TwoLevelListDemo extends StatelessWidget {
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: new AppBar(title: new Text('Expand/Collapse List Control')),
diff --git a/examples/material_gallery/lib/demo/typography_demo.dart b/examples/material_gallery/lib/demo/typography_demo.dart
index f03bd4d..a1072f5 100644
--- a/examples/material_gallery/lib/demo/typography_demo.dart
+++ b/examples/material_gallery/lib/demo/typography_demo.dart
@@ -16,6 +16,7 @@
   final TextStyle style;
   final String text;
 
+  @override
   Widget build(BuildContext context) {
     final ThemeData theme = Theme.of(context);
     final TextStyle nameStyle = theme.textTheme.body1.copyWith(color: theme.textTheme.caption.color);
@@ -38,6 +39,7 @@
 }
 
 class TypographyDemo extends StatelessWidget {
+  @override
   Widget build(BuildContext context) {
     final TextTheme textTheme = Theme.of(context).textTheme;
     final List<Widget> styleItems = <Widget>[
diff --git a/examples/material_gallery/lib/demo/weather_demo.dart b/examples/material_gallery/lib/demo/weather_demo.dart
index 4c91fbe..e111d68 100644
--- a/examples/material_gallery/lib/demo/weather_demo.dart
+++ b/examples/material_gallery/lib/demo/weather_demo.dart
@@ -19,6 +19,8 @@
 
 class WeatherDemo extends StatefulWidget {
   WeatherDemo({ Key key }) : super(key: key);
+
+  @override
   _WeatherDemoState createState() => new _WeatherDemoState();
 }
 
@@ -42,6 +44,7 @@
     _sprites = new SpriteSheet(_images['packages/flutter_gallery_assets/weathersprites.png'], json);
   }
 
+  @override
   void initState() {
     super.initState();
 
@@ -58,6 +61,7 @@
 
   WeatherWorld weatherWorld;
 
+  @override
   Widget build(BuildContext context) {
     if (!assetsLoaded) {
       return new Scaffold(
@@ -132,6 +136,7 @@
   final bool selected;
   final VoidCallback onPressed;
 
+  @override
   Widget build(BuildContext context) {
     Color color;
     if (selected)
@@ -262,6 +267,7 @@
     _snow.active = weatherType == WeatherType.snow;
   }
 
+  @override
   void spriteBoxPerformedLayout() {
     _sun.position = spriteBox.visibleArea.topLeft + const Offset(350.0, 180.0);
   }
@@ -273,6 +279,7 @@
   Color colorTop;
   Color colorBottom;
 
+  @override
   void paint(Canvas canvas) {
     applyTransformForPivot(canvas);
 
@@ -426,6 +433,7 @@
     ));
   }
 
+  @override
   void update(double dt) {
     rotation += dt * _rotationSpeed;
   }
diff --git a/examples/material_gallery/lib/gallery/app.dart b/examples/material_gallery/lib/gallery/app.dart
index 642c0ba..57a5d81 100644
--- a/examples/material_gallery/lib/gallery/app.dart
+++ b/examples/material_gallery/lib/gallery/app.dart
@@ -11,6 +11,7 @@
 
   static GalleryAppState of(BuildContext context) => context.ancestorStateOfType(const TypeMatcher<GalleryAppState>());
 
+  @override
   GalleryAppState createState() => new GalleryAppState();
 }
 
@@ -23,6 +24,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     return new MaterialApp(
       title: 'Flutter Material Gallery',
diff --git a/examples/material_gallery/lib/gallery/drawer.dart b/examples/material_gallery/lib/gallery/drawer.dart
index 1509e85..9e484a4 100644
--- a/examples/material_gallery/lib/gallery/drawer.dart
+++ b/examples/material_gallery/lib/gallery/drawer.dart
@@ -21,6 +21,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Drawer(
       child: new Block(
diff --git a/examples/material_gallery/lib/gallery/home.dart b/examples/material_gallery/lib/gallery/home.dart
index af6c480..3d4ddbf 100644
--- a/examples/material_gallery/lib/gallery/home.dart
+++ b/examples/material_gallery/lib/gallery/home.dart
@@ -42,10 +42,12 @@
 class GalleryHome extends StatefulWidget {
   GalleryHome({ Key key }) : super(key: key);
 
+  @override
   GalleryHomeState createState() => new GalleryHomeState();
 }
 
 class GalleryHomeState extends State<GalleryHome> {
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBarHeight: 128.0,
diff --git a/examples/material_gallery/lib/gallery/section.dart b/examples/material_gallery/lib/gallery/section.dart
index 2670c2d..fa9f95d 100644
--- a/examples/material_gallery/lib/gallery/section.dart
+++ b/examples/material_gallery/lib/gallery/section.dart
@@ -61,6 +61,7 @@
     ));
   }
 
+  @override
   Widget build (BuildContext context) {
     final ThemeData theme = new ThemeData(
       brightness: Theme.of(context).brightness,
diff --git a/examples/stocks/lib/main.dart b/examples/stocks/lib/main.dart
index 663f63f..ec828c5 100644
--- a/examples/stocks/lib/main.dart
+++ b/examples/stocks/lib/main.dart
@@ -24,6 +24,7 @@
 import 'stock_types.dart';
 
 class StocksApp extends StatefulWidget {
+  @override
   StocksAppState createState() => new StocksAppState();
 }
 
@@ -45,6 +46,7 @@
     showSemanticsDebugger: false
   );
 
+  @override
   void initState() {
     super.initState();
     new StockDataFetcher((StockData data) {
@@ -99,6 +101,7 @@
     return StockStrings.instance;
   }
 
+  @override
   Widget build(BuildContext context) {
     assert(() {
       debugPaintSizeEnabled = _configuration.debugShowSizes;
diff --git a/examples/stocks/lib/stock_arrow.dart b/examples/stocks/lib/stock_arrow.dart
index 84ce41a..cbc91f0 100644
--- a/examples/stocks/lib/stock_arrow.dart
+++ b/examples/stocks/lib/stock_arrow.dart
@@ -12,6 +12,7 @@
   final Color color;
   final double percentChange;
 
+  @override
   void paint(Canvas canvas, Size size) {
     Paint paint = new Paint()..color = color;
     paint.strokeWidth = 1.0;
@@ -44,6 +45,7 @@
     canvas.drawCircle(new Point(centerX, centerY), r, paint);
   }
 
+  @override
   bool shouldRepaint(StockArrowPainter oldPainter) {
     return oldPainter.color != color
         || oldPainter.percentChange != percentChange;
@@ -67,6 +69,7 @@
     return Colors.red[_colorIndexForPercentChange(percentChange)];
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Container(
       width: 40.0,
diff --git a/examples/stocks/lib/stock_home.dart b/examples/stocks/lib/stock_home.dart
index 093fc9e..e40cb4a 100644
--- a/examples/stocks/lib/stock_home.dart
+++ b/examples/stocks/lib/stock_home.dart
@@ -19,6 +19,7 @@
 enum StockHomeTab { market, portfolio }
 
 class _NotImplementedDialog extends StatelessWidget {
+  @override
   Widget build(BuildContext context) {
     return new Dialog(
       title: new Text('Not Implemented'),
@@ -58,6 +59,7 @@
   final StockConfiguration configuration;
   final ValueChanged<StockConfiguration> updater;
 
+  @override
   StockHomeState createState() => new StockHomeState();
 }
 
@@ -336,6 +338,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     return new TabBarSelection<StockHomeTab>(
       values: <StockHomeTab>[StockHomeTab.market, StockHomeTab.portfolio],
@@ -356,6 +359,7 @@
 }
 
 class _CreateCompanySheet extends StatefulWidget {
+  @override
   _CreateCompanySheetState createState() => new _CreateCompanySheetState();
 }
 
@@ -368,6 +372,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     // TODO(ianh): Fill this out.
     return new Column(
diff --git a/examples/stocks/lib/stock_list.dart b/examples/stocks/lib/stock_list.dart
index 8ffadaa..ba41051 100644
--- a/examples/stocks/lib/stock_list.dart
+++ b/examples/stocks/lib/stock_list.dart
@@ -16,6 +16,7 @@
   final StockRowActionCallback onShow;
   final StockRowActionCallback onAction;
 
+  @override
   Widget build(BuildContext context) {
     return new ScrollableList(
       key: const ValueKey<String>('stock-list'),
diff --git a/examples/stocks/lib/stock_row.dart b/examples/stocks/lib/stock_row.dart
index 1e79ea3..bc69a22 100644
--- a/examples/stocks/lib/stock_row.dart
+++ b/examples/stocks/lib/stock_row.dart
@@ -11,9 +11,12 @@
 
 class StockRowPartKey extends Key {
   const StockRowPartKey(this.keySalt, this.stock, this.part) : super.constructor();
+
   final Object keySalt;
   final Stock stock;
   final StockRowPartKind part;
+
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -24,7 +27,11 @@
         && stock == typedOther.stock
         && part == typedOther.part;
   }
+
+  @override
   int get hashCode => hashValues(keySalt, stock, part);
+
+  @override
   String toString() => '[$runtimeType ${keySalt.toString().split(".")[1]}:${stock.symbol}:${part.toString().split(".")[1]}]';
 }
 
@@ -54,6 +61,7 @@
     return callback == null ? null : () => callback(stock, _arrowKey);
   }
 
+  @override
   Widget build(BuildContext context) {
     final String lastSale = "\$${stock.lastSale.toStringAsFixed(2)}";
     String changeInPrice = "${stock.percentChange.toStringAsFixed(2)}%";
diff --git a/examples/stocks/lib/stock_settings.dart b/examples/stocks/lib/stock_settings.dart
index 23f33c7..f21f0fd 100644
--- a/examples/stocks/lib/stock_settings.dart
+++ b/examples/stocks/lib/stock_settings.dart
@@ -12,6 +12,7 @@
   final StockConfiguration configuration;
   final ValueChanged<StockConfiguration> updater;
 
+  @override
   StockSettingsState createState() => new StockSettingsState();
 }
 
@@ -245,6 +246,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: buildAppBar(context),
diff --git a/examples/stocks/lib/stock_symbol_viewer.dart b/examples/stocks/lib/stock_symbol_viewer.dart
index adff7a9..5f2ff07 100644
--- a/examples/stocks/lib/stock_symbol_viewer.dart
+++ b/examples/stocks/lib/stock_symbol_viewer.dart
@@ -13,6 +13,7 @@
 
   final Stock stock;
 
+  @override
   Widget build(BuildContext context) {
     String lastSale = "\$${stock.lastSale.toStringAsFixed(2)}";
     String changeInPrice = "${stock.percentChange.toStringAsFixed(2)}%";
@@ -71,6 +72,7 @@
 
   final Stock stock;
 
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: new AppBar(
@@ -93,6 +95,7 @@
 
   final Stock stock;
 
+  @override
   Widget build(BuildContext context) {
     return new Container(
       padding: new EdgeInsets.all(10.0),
diff --git a/packages/cassowary/lib/expression.dart b/packages/cassowary/lib/expression.dart
index 03e23da..98c264c 100644
--- a/packages/cassowary/lib/expression.dart
+++ b/packages/cassowary/lib/expression.dart
@@ -153,6 +153,7 @@
     return null;
   }
 
+  @override
   _EquationMember operator *(_EquationMember m) {
     _Pair<Expression, double> args = _findMulitplierAndMultiplicand(m);
 
@@ -166,6 +167,7 @@
     return args.first._applyMultiplicand(args.second);
   }
 
+  @override
   _EquationMember operator /(_EquationMember m) {
     if (!m.isConstant) {
       throw new ParserException(
@@ -176,6 +178,7 @@
     return this._applyMultiplicand(1.0 / m.value);
   }
 
+  @override
   String toString() {
     StringBuffer buffer = new StringBuffer();
 
diff --git a/packages/cassowary/lib/param.dart b/packages/cassowary/lib/param.dart
index cd912f4..add1a6d 100644
--- a/packages/cassowary/lib/param.dart
+++ b/packages/cassowary/lib/param.dart
@@ -18,12 +18,15 @@
 
   dynamic context;
 
+  @override
   bool get isConstant => false;
 
+  @override
   double get value => variable.value;
 
   String get name => variable.name;
   void set name(String name) { variable.name = name; }
 
+  @override
   Expression asExpression() => new Expression(<Term>[new Term(variable, 1.0)], 0.0);
 }
diff --git a/packages/cassowary/lib/parser_exception.dart b/packages/cassowary/lib/parser_exception.dart
index 979533c..e031636 100644
--- a/packages/cassowary/lib/parser_exception.dart
+++ b/packages/cassowary/lib/parser_exception.dart
@@ -9,6 +9,7 @@
   List<_EquationMember> members;
   ParserException(this.message, this.members);
 
+  @override
   String toString() {
     if (message == null) return "Error while parsing constraint or expression";
     return "Error: '$message' while trying to parse constraint or expression";
diff --git a/packages/cassowary/lib/row.dart b/packages/cassowary/lib/row.dart
index d9806e9..513fb9d 100644
--- a/packages/cassowary/lib/row.dart
+++ b/packages/cassowary/lib/row.dart
@@ -65,6 +65,7 @@
     insertRow(row, coefficient);
   }
 
+  @override
   String toString() {
     StringBuffer buffer = new StringBuffer();
 
diff --git a/packages/cassowary/lib/solver.dart b/packages/cassowary/lib/solver.dart
index 4688e9f..de348be 100644
--- a/packages/cassowary/lib/solver.dart
+++ b/packages/cassowary/lib/solver.dart
@@ -588,6 +588,7 @@
     return entering ?? new _Symbol(_SymbolType.invalid, 0);
   }
 
+  @override
   String toString() {
     StringBuffer buffer = new StringBuffer();
     String separator = "\n~~~~~~~~~";
diff --git a/packages/cassowary/lib/symbol.dart b/packages/cassowary/lib/symbol.dart
index ab0531a..5b9d828 100644
--- a/packages/cassowary/lib/symbol.dart
+++ b/packages/cassowary/lib/symbol.dart
@@ -12,6 +12,7 @@
 
   _Symbol(this.type, this.tick);
 
+  @override
   String toString() {
     String typeString = 'unknown';
     switch (type) {
diff --git a/packages/cassowary/lib/term.dart b/packages/cassowary/lib/term.dart
index a402020..9845e1f 100644
--- a/packages/cassowary/lib/term.dart
+++ b/packages/cassowary/lib/term.dart
@@ -10,13 +10,17 @@
   final Variable variable;
   final double coefficient;
 
+  @override
   bool get isConstant => false;
 
+  @override
   double get value => coefficient * variable.value;
 
+  @override
   Expression asExpression() =>
       new Expression([new Term(this.variable, this.coefficient)], 0.0);
 
+  @override
   String toString() {
     StringBuffer buffer = new StringBuffer();
 
diff --git a/packages/flutter/lib/src/animation/animation.dart b/packages/flutter/lib/src/animation/animation.dart
index cc2deb1..dfd48a7 100644
--- a/packages/flutter/lib/src/animation/animation.dart
+++ b/packages/flutter/lib/src/animation/animation.dart
@@ -62,6 +62,7 @@
   /// Whether this animation is stopped at the end.
   bool get isCompleted => status == AnimationStatus.completed;
 
+  @override
   String toString() {
     return '$runtimeType(${toStringDetails()})';
   }
diff --git a/packages/flutter/lib/src/animation/animation_controller.dart b/packages/flutter/lib/src/animation/animation_controller.dart
index 4df50f1..5451216 100644
--- a/packages/flutter/lib/src/animation/animation_controller.dart
+++ b/packages/flutter/lib/src/animation/animation_controller.dart
@@ -99,6 +99,7 @@
   /// Setting this value also stops the controller if it is currently
   /// running; if this happens, it also notifies all the status
   /// listeners.
+  @override
   double get value => _value;
   double _value;
   void set value(double newValue) {
@@ -114,6 +115,7 @@
 
   _AnimationDirection _direction;
 
+  @override
   AnimationStatus get status {
     if (!isAnimating && value == upperBound)
       return AnimationStatus.completed;
@@ -202,6 +204,7 @@
   }
 
   /// Stops running this animation.
+  @override
   void dispose() {
     stop();
   }
@@ -224,6 +227,7 @@
     _checkStatusChanged();
   }
 
+  @override
   String toStringDetails() {
     String paused = isAnimating ? '' : '; paused';
     String label = debugLabel == null ? '' : '; for $debugLabel';
@@ -245,6 +249,7 @@
   final double _end;
   final Curve _curve;
 
+  @override
   double x(double timeInSeconds) {
     assert(timeInSeconds >= 0.0);
     double t = (timeInSeconds / _durationInSeconds).clamp(0.0, 1.0);
@@ -256,8 +261,10 @@
       return _begin + (_end - _begin) * _curve.transform(t);
   }
 
+  @override
   double dx(double timeInSeconds) => 1.0;
 
+  @override
   bool isDone(double timeInSeconds) => timeInSeconds > _durationInSeconds;
 }
 
@@ -272,13 +279,16 @@
 
   final double _periodInSeconds;
 
+  @override
   double x(double timeInSeconds) {
     assert(timeInSeconds >= 0.0);
     final double t = (timeInSeconds / _periodInSeconds) % 1.0;
     return ui.lerpDouble(min, max, t);
   }
 
+  @override
   double dx(double timeInSeconds) => 1.0;
 
+  @override
   bool isDone(double timeInSeconds) => false;
 }
diff --git a/packages/flutter/lib/src/animation/animations.dart b/packages/flutter/lib/src/animation/animations.dart
index 5cd46c2..8daca9a 100644
--- a/packages/flutter/lib/src/animation/animations.dart
+++ b/packages/flutter/lib/src/animation/animations.dart
@@ -11,11 +11,22 @@
 class _AlwaysCompleteAnimation extends Animation<double> {
   const _AlwaysCompleteAnimation();
 
+  @override
   void addListener(VoidCallback listener) { }
+
+  @override
   void removeListener(VoidCallback listener) { }
+
+  @override
   void addStatusListener(AnimationStatusListener listener) { }
+
+  @override
   void removeStatusListener(AnimationStatusListener listener) { }
+
+  @override
   AnimationStatus get status => AnimationStatus.completed;
+
+  @override
   double get value => 1.0;
 }
 
@@ -29,11 +40,22 @@
 class _AlwaysDismissedAnimation extends Animation<double> {
   const _AlwaysDismissedAnimation();
 
+  @override
   void addListener(VoidCallback listener) { }
+
+  @override
   void removeListener(VoidCallback listener) { }
+
+  @override
   void addStatusListener(AnimationStatusListener listener) { }
+
+  @override
   void removeStatusListener(AnimationStatusListener listener) { }
+
+  @override
   AnimationStatus get status => AnimationStatus.dismissed;
+
+  @override
   double get value => 0.0;
 }
 
@@ -48,12 +70,22 @@
 class AlwaysStoppedAnimation<T> extends Animation<T> {
   const AlwaysStoppedAnimation(this.value);
 
+  @override
   final T value;
 
+  @override
   void addListener(VoidCallback listener) { }
+
+  @override
   void removeListener(VoidCallback listener) { }
+
+  @override
   void addStatusListener(AnimationStatusListener listener) { }
+
+  @override
   void removeStatusListener(AnimationStatusListener listener) { }
+
+  @override
   AnimationStatus get status => AnimationStatus.forward;
 }
 
@@ -123,6 +155,7 @@
     }
   }
 
+  @override
   void didStartListening() {
     if (_parent != null) {
       _parent.addListener(notifyListeners);
@@ -130,6 +163,7 @@
     }
   }
 
+  @override
   void didStopListening() {
     if (_parent != null) {
       _parent.removeListener(notifyListeners);
@@ -137,7 +171,10 @@
     }
   }
 
+  @override
   AnimationStatus get status => _parent != null ? _parent.status : _status;
+
+  @override
   double get value => _parent != null ? _parent.value : _value;
 }
 
@@ -155,19 +192,24 @@
   /// The animation whose value and direction this animation is reversing.
   final Animation<double> parent;
 
+  @override
   void addListener(VoidCallback listener) {
     didRegisterListener();
     parent.addListener(listener);
   }
+
+  @override
   void removeListener(VoidCallback listener) {
     parent.removeListener(listener);
     didUnregisterListener();
   }
 
+  @override
   void didStartListening() {
     parent.addStatusListener(_statusChangeHandler);
   }
 
+  @override
   void didStopListening() {
     parent.removeStatusListener(_statusChangeHandler);
   }
@@ -176,7 +218,10 @@
     notifyStatusListeners(_reverseStatus(status));
   }
 
+  @override
   AnimationStatus get status => _reverseStatus(parent.status);
+
+  @override
   double get value => 1.0 - parent.value;
 
   AnimationStatus _reverseStatus(AnimationStatus status) {
@@ -206,6 +251,7 @@
   }
 
   /// The animation to which this animation applies a curve.
+  @override
   final Animation<double> parent;
 
   /// The curve to use in the forward direction.
@@ -238,6 +284,7 @@
     }
   }
 
+  @override
   double get value {
     final bool useForwardCurve = reverseCurve == null || (_curveDirection ?? parent.status) != AnimationStatus.reverse;
     Curve activeCurve = useForwardCurve ? curve : reverseCurve;
@@ -306,6 +353,7 @@
     assert(_lastStatus != null);
   }
 
+  @override
   AnimationStatus get status => _currentTrain.status;
 
   double _lastValue;
@@ -342,10 +390,12 @@
       onSwitchedTrain();
   }
 
+  @override
   double get value => _currentTrain.value;
 
   /// Frees all the resources used by this performance.
   /// After this is called, this object is no longer usable.
+  @override
   void dispose() {
     assert(_currentTrain != null);
     _currentTrain.removeStatusListener(_statusChangeHandler);
diff --git a/packages/flutter/lib/src/animation/curves.dart b/packages/flutter/lib/src/animation/curves.dart
index 5deafa1..07d4772 100644
--- a/packages/flutter/lib/src/animation/curves.dart
+++ b/packages/flutter/lib/src/animation/curves.dart
@@ -31,13 +31,18 @@
 /// The identity map over the unit interval.
 class Linear extends Curve {
   const Linear();
+
+  @override
   double transform(double t) => t;
 }
 
 /// A sawtooth curve that repeats a given number of times over the unit interval.
 class SawTooth extends Curve {
   const SawTooth(this.count);
+
   final int count;
+
+  @override
   double transform(double t) {
     t *= count;
     return t - t.truncateToDouble();
@@ -57,6 +62,7 @@
   /// The curve to apply between [start] and [end].
   final Curve curve;
 
+  @override
   double transform(double t) {
     assert(start >= 0.0);
     assert(start <= 1.0);
@@ -79,6 +85,7 @@
   final double c;
   final double d;
 
+  @override
   double transform(double t) {
     double start = 0.0;
     double end = 1.0;
@@ -112,13 +119,18 @@
 /// A curve that is the reversed inversion of its given curve.
 class FlippedCurve extends Curve {
   FlippedCurve(this.curve);
+
   final Curve curve;
+
+  @override
   double transform(double t) => 1.0 - curve.transform(1.0 - t);
 }
 
 /// An oscillating curve that grows in magnitude.
 class BounceInCurve extends Curve {
   const BounceInCurve();
+
+  @override
   double transform(double t) {
     return 1.0 - _bounce(1.0 - t);
   }
@@ -127,6 +139,8 @@
 /// An oscillating curve that shrink in magnitude.
 class BounceOutCurve extends Curve {
   const BounceOutCurve();
+
+  @override
   double transform(double t) {
     return _bounce(t);
   }
@@ -135,6 +149,8 @@
 /// An oscillating curve that first grows and then shrink in magnitude.
 class BounceInOutCurve extends Curve {
   const BounceInOutCurve();
+
+  @override
   double transform(double t) {
     if (t < 0.5)
       return (1.0 - _bounce(1.0 - t)) * 0.5;
@@ -146,7 +162,10 @@
 /// An oscillating curve that grows in magnitude while overshooting its bounds.
 class ElasticInCurve extends Curve {
   const ElasticInCurve([this.period = 0.4]);
+
   final double period;
+
+  @override
   double transform(double t) {
     double s = period / 4.0;
     t = t - 1.0;
@@ -157,7 +176,10 @@
 /// An oscillating curve that shrinks in magnitude while overshooting its bounds.
 class ElasticOutCurve extends Curve {
   const ElasticOutCurve([this.period = 0.4]);
+
   final double period;
+
+  @override
   double transform(double t) {
     double s = period / 4.0;
     return math.pow(2.0, -10 * t) * math.sin((t - s) * (math.PI * 2.0) / period) + 1.0;
@@ -167,7 +189,10 @@
 /// An oscillating curve that grows and then shrinks in magnitude while overshooting its bounds.
 class ElasticInOutCurve extends Curve {
   const ElasticInOutCurve([this.period = 0.4]);
+
   final double period;
+
+  @override
   double transform(double t) {
     double s = period / 4.0;
     t = 2.0 * t - 1.0;
diff --git a/packages/flutter/lib/src/animation/forces.dart b/packages/flutter/lib/src/animation/forces.dart
index 1b428e4..a3d6389 100644
--- a/packages/flutter/lib/src/animation/forces.dart
+++ b/packages/flutter/lib/src/animation/forces.dart
@@ -37,6 +37,7 @@
     distance: 0.01
   );
 
+  @override
   Simulation release(double position, double velocity) {
     double target = velocity < 0.0 ? this.left - tolerance.distance
                                    : this.right + tolerance.distance;
diff --git a/packages/flutter/lib/src/animation/listener_helpers.dart b/packages/flutter/lib/src/animation/listener_helpers.dart
index fb761e5..6f2d937 100644
--- a/packages/flutter/lib/src/animation/listener_helpers.dart
+++ b/packages/flutter/lib/src/animation/listener_helpers.dart
@@ -14,18 +14,23 @@
 /// A mixin that helps listen to another object only when this object has registered listeners.
 abstract class AnimationLazyListenerMixin implements _ListenerMixin {
   int _listenerCounter = 0;
+
+  @override
   void didRegisterListener() {
     assert(_listenerCounter >= 0);
     if (_listenerCounter == 0)
       didStartListening();
     _listenerCounter += 1;
   }
+
+  @override
   void didUnregisterListener() {
     assert(_listenerCounter >= 1);
     _listenerCounter -= 1;
     if (_listenerCounter == 0)
       didStopListening();
   }
+
   void didStartListening();
   void didStopListening();
   bool get isListening => _listenerCounter > 0;
@@ -34,7 +39,10 @@
 /// A mixin that replaces the didRegisterListener/didUnregisterListener contract
 /// with a dispose contract.
 abstract class AnimationEagerListenerMixin implements _ListenerMixin {
+  @override
   void didRegisterListener() { }
+
+  @override
   void didUnregisterListener() { }
 
   /// Release any resources used by this object.
diff --git a/packages/flutter/lib/src/animation/tween.dart b/packages/flutter/lib/src/animation/tween.dart
index 65991ca..6dd9c39 100644
--- a/packages/flutter/lib/src/animation/tween.dart
+++ b/packages/flutter/lib/src/animation/tween.dart
@@ -32,10 +32,12 @@
   _AnimatedEvaluation(this.parent, this._evaluatable);
 
   /// The animation from which this value is derived.
+  @override
   final Animation<double> parent;
 
   final Animatable<T> _evaluatable;
 
+  @override
   T get value => _evaluatable.evaluate(parent);
 }
 
@@ -45,6 +47,7 @@
   final Animatable<double> _parent;
   final Animatable<T> _evaluatable;
 
+  @override
   T evaluate(Animation<double> animation) {
     double value = _parent.evaluate(animation);
     return _evaluatable.evaluate(new AlwaysStoppedAnimation<double>(value));
@@ -65,6 +68,7 @@
   T lerp(double t) => begin + (end - begin) * t;
 
   /// Returns the interpolated value for the current value of the given animation.
+  @override
   T evaluate(Animation<double> animation) {
     if (end == null)
       return begin;
@@ -76,6 +80,7 @@
     return lerp(t);
   }
 
+  @override
   String toString() => '$runtimeType($begin \u2192 $end)';
 }
 
@@ -86,6 +91,7 @@
 class ColorTween extends Tween<Color> {
   ColorTween({ Color begin, Color end }) : super(begin: begin, end: end);
 
+  @override
   Color lerp(double t) => Color.lerp(begin, end, t);
 }
 
@@ -96,6 +102,7 @@
 class SizeTween extends Tween<Size> {
   SizeTween({ Size begin, Size end }) : super(begin: begin, end: end);
 
+  @override
   Size lerp(double t) => Size.lerp(begin, end, t);
 }
 
@@ -106,6 +113,7 @@
 class RectTween extends Tween<Rect> {
   RectTween({ Rect begin, Rect end }) : super(begin: begin, end: end);
 
+  @override
   Rect lerp(double t) => Rect.lerp(begin, end, t);
 }
 
@@ -123,6 +131,7 @@
 
   // The inherited lerp() function doesn't work with ints because it multiplies
   // the begin and end types by a double, and int * double returns a double.
+  @override
   int lerp(double t) => (begin + (end - begin) * t).round();
 }
 
@@ -140,6 +149,7 @@
 
   // The inherited lerp() function doesn't work with ints because it multiplies
   // the begin and end types by a double, and int * double returns a double.
+  @override
   int lerp(double t) => (begin + (end - begin) * t).floor();
 }
 
@@ -154,6 +164,7 @@
   /// The curve to use when transforming the value of the animation.
   Curve curve;
 
+  @override
   double evaluate(Animation<double> animation) {
     double t = animation.value;
     if (t == 0.0 || t == 1.0) {
diff --git a/packages/flutter/lib/src/gestures/binding.dart b/packages/flutter/lib/src/gestures/binding.dart
index d8324bd..d71c401 100644
--- a/packages/flutter/lib/src/gestures/binding.dart
+++ b/packages/flutter/lib/src/gestures/binding.dart
@@ -21,6 +21,7 @@
 /// A binding for the gesture subsystem.
 abstract class Gesturer extends BindingBase implements HitTestTarget, HitTestable {
 
+  @override
   void initInstances() {
     super.initInstances();
     _instance = this;
@@ -76,6 +77,7 @@
   }
 
   /// Determine which [HitTestTarget] objects are located at a given position.
+  @override
   void hitTest(HitTestResult result, Point position) {
     result.add(new HitTestEntry(this));
   }
@@ -113,6 +115,7 @@
     }
   }
 
+  @override
   void handleEvent(PointerEvent event, HitTestEntry entry) {
     pointerRouter.route(event);
     if (event is PointerDownEvent) {
diff --git a/packages/flutter/lib/src/gestures/drag.dart b/packages/flutter/lib/src/gestures/drag.dart
index fdd02e4..0a75630 100644
--- a/packages/flutter/lib/src/gestures/drag.dart
+++ b/packages/flutter/lib/src/gestures/drag.dart
@@ -46,6 +46,7 @@
 
   Map<int, VelocityTracker> _velocityTrackers = new Map<int, VelocityTracker>();
 
+  @override
   void addPointer(PointerEvent event) {
     startTrackingPointer(event.pointer);
     _velocityTrackers[event.pointer] = new VelocityTracker();
@@ -56,6 +57,7 @@
     }
   }
 
+  @override
   void handleEvent(PointerEvent event) {
     assert(_state != DragState.ready);
     if (event is PointerMoveEvent) {
@@ -75,6 +77,7 @@
     stopTrackingIfPointerNoLongerDown(event);
   }
 
+  @override
   void acceptGesture(int pointer) {
     if (_state != DragState.accepted) {
       _state = DragState.accepted;
@@ -87,6 +90,7 @@
     }
   }
 
+  @override
   void didStopTrackingLastPointer(int pointer) {
     if (_state == DragState.possible) {
       resolve(GestureDisposition.rejected);
@@ -108,6 +112,7 @@
     _velocityTrackers.clear();
   }
 
+  @override
   void dispose() {
     _velocityTrackers.clear();
     super.dispose();
@@ -115,27 +120,45 @@
 }
 
 class VerticalDragGestureRecognizer extends _DragGestureRecognizer<double> {
+  @override
   double get _initialPendingDragDelta => 0.0;
+
+  @override
   double _getDragDelta(PointerEvent event) => event.delta.dy;
+
+  @override
   bool get _hasSufficientPendingDragDeltaToAccept => _pendingDragDelta.abs() > kTouchSlop;
 
+  @override
   String toStringShort() => 'vertical drag';
 }
 
 class HorizontalDragGestureRecognizer extends _DragGestureRecognizer<double> {
+  @override
   double get _initialPendingDragDelta => 0.0;
+
+  @override
   double _getDragDelta(PointerEvent event) => event.delta.dx;
+
+  @override
   bool get _hasSufficientPendingDragDeltaToAccept => _pendingDragDelta.abs() > kTouchSlop;
 
+  @override
   String toStringShort() => 'horizontal drag';
 }
 
 class PanGestureRecognizer extends _DragGestureRecognizer<Offset> {
+  @override
   Offset get _initialPendingDragDelta => Offset.zero;
+
+  @override
   Offset _getDragDelta(PointerEvent event) => event.delta;
+
+  @override
   bool get _hasSufficientPendingDragDeltaToAccept {
     return _pendingDragDelta.distance > kPanSlop;
   }
 
+  @override
   String toStringShort() => 'pan';
 }
diff --git a/packages/flutter/lib/src/gestures/events.dart b/packages/flutter/lib/src/gestures/events.dart
index c9dd414..e8737da 100644
--- a/packages/flutter/lib/src/gestures/events.dart
+++ b/packages/flutter/lib/src/gestures/events.dart
@@ -171,6 +171,7 @@
   /// the stylus is flat on that surface).
   final double tilt;
 
+  @override
   String toString() => '$runtimeType($position)';
 
   String toStringFull() {
diff --git a/packages/flutter/lib/src/gestures/hit_test.dart b/packages/flutter/lib/src/gestures/hit_test.dart
index b0ae5f4..047b4b0 100644
--- a/packages/flutter/lib/src/gestures/hit_test.dart
+++ b/packages/flutter/lib/src/gestures/hit_test.dart
@@ -25,6 +25,7 @@
   /// The [HitTestTarget] encountered during the hit test.
   final HitTestTarget target;
 
+  @override
   String toString() => '$target';
 }
 
@@ -49,5 +50,6 @@
     path.add(entry);
   }
 
+  @override
   String toString() => 'HitTestResult(${path.isEmpty ? "<empty path>" : path.join(", ")})';
 }
diff --git a/packages/flutter/lib/src/gestures/long_press.dart b/packages/flutter/lib/src/gestures/long_press.dart
index 67be3eb..fb74621 100644
--- a/packages/flutter/lib/src/gestures/long_press.dart
+++ b/packages/flutter/lib/src/gestures/long_press.dart
@@ -15,16 +15,19 @@
 
   GestureLongPressCallback onLongPress;
 
+  @override
   void didExceedDeadline() {
     resolve(GestureDisposition.accepted);
     if (onLongPress != null)
       onLongPress();
   }
 
+  @override
   void handlePrimaryPointer(PointerEvent event) {
     if (event is PointerUpEvent)
       resolve(GestureDisposition.rejected);
   }
 
+  @override
   String toStringShort() => 'long press';
 }
diff --git a/packages/flutter/lib/src/gestures/lsq_solver.dart b/packages/flutter/lib/src/gestures/lsq_solver.dart
index 25c8e9b..2fe6f05 100644
--- a/packages/flutter/lib/src/gestures/lsq_solver.dart
+++ b/packages/flutter/lib/src/gestures/lsq_solver.dart
@@ -36,6 +36,7 @@
 
   double norm() => math.sqrt(this * this);
 
+  @override
   String toString() {
     String result = "";
     for (int i = 0; i < _length; i++) {
@@ -68,6 +69,7 @@
     _columns
   );
 
+  @override
   String toString() {
     String result = "";
     for (int i = 0; i < _rows; i++) {
diff --git a/packages/flutter/lib/src/gestures/multidrag.dart b/packages/flutter/lib/src/gestures/multidrag.dart
index 3f291cd..bc27756 100644
--- a/packages/flutter/lib/src/gestures/multidrag.dart
+++ b/packages/flutter/lib/src/gestures/multidrag.dart
@@ -125,6 +125,7 @@
 
   Map<int, T> _pointers = <int, T>{};
 
+  @override
   void addPointer(PointerDownEvent event) {
     assert(_pointers != null);
     assert(event.pointer != null);
@@ -163,6 +164,7 @@
     }
   }
 
+  @override
   void acceptGesture(int pointer) {
     assert(_pointers != null);
     T state = _pointers[pointer];
@@ -186,6 +188,7 @@
     return drag;
   }
 
+  @override
   void rejectGesture(int pointer) {
     assert(_pointers != null);
     if (_pointers.containsKey(pointer)) {
@@ -204,6 +207,7 @@
     _pointers.remove(pointer);
   }
 
+  @override
   void dispose() {
     for (int pointer in _pointers.keys)
       _removeState(pointer);
@@ -217,22 +221,26 @@
 class _ImmediatePointerState extends MultiDragPointerState {
   _ImmediatePointerState(Point initialPosition) : super(initialPosition);
 
+  @override
   void checkForResolutionAfterMove() {
     assert(pendingDelta != null);
     if (pendingDelta.distance > kTouchSlop)
       resolve(GestureDisposition.accepted);
   }
 
+  @override
   void accepted(GestureMultiDragStartCallback starter) {
     starter(initialPosition);
   }
 }
 
 class ImmediateMultiDragGestureRecognizer extends MultiDragGestureRecognizer<_ImmediatePointerState> {
+  @override
   _ImmediatePointerState createNewPointerState(PointerDownEvent event) {
     return new _ImmediatePointerState(event.position);
   }
 
+  @override
   String toStringShort() => 'multidrag';
 }
 
@@ -240,22 +248,26 @@
 class _HorizontalPointerState extends MultiDragPointerState {
   _HorizontalPointerState(Point initialPosition) : super(initialPosition);
 
+  @override
   void checkForResolutionAfterMove() {
     assert(pendingDelta != null);
     if (pendingDelta.dx.abs() > kTouchSlop)
       resolve(GestureDisposition.accepted);
   }
 
+  @override
   void accepted(GestureMultiDragStartCallback starter) {
     starter(initialPosition);
   }
 }
 
 class HorizontalMultiDragGestureRecognizer extends MultiDragGestureRecognizer<_HorizontalPointerState> {
+  @override
   _HorizontalPointerState createNewPointerState(PointerDownEvent event) {
     return new _HorizontalPointerState(event.position);
   }
 
+  @override
   String toStringShort() => 'horizontal multidrag';
 }
 
@@ -263,22 +275,26 @@
 class _VerticalPointerState extends MultiDragPointerState {
   _VerticalPointerState(Point initialPosition) : super(initialPosition);
 
+  @override
   void checkForResolutionAfterMove() {
     assert(pendingDelta != null);
     if (pendingDelta.dy.abs() > kTouchSlop)
       resolve(GestureDisposition.accepted);
   }
 
+  @override
   void accepted(GestureMultiDragStartCallback starter) {
     starter(initialPosition);
   }
 }
 
 class VerticalMultiDragGestureRecognizer extends MultiDragGestureRecognizer<_VerticalPointerState> {
+  @override
   _VerticalPointerState createNewPointerState(PointerDownEvent event) {
     return new _VerticalPointerState(event.position);
   }
 
+  @override
   String toStringShort() => 'vertical multidrag';
 }
 
@@ -306,6 +322,7 @@
     assert(_starter == null);
   }
 
+  @override
   void accepted(GestureMultiDragStartCallback starter) {
     assert(_starter == null);
     if (_timer == null)
@@ -314,6 +331,7 @@
       _starter = starter;
   }
 
+  @override
   void checkForResolutionAfterMove() {
     assert(_timer != null);
     assert(pendingDelta != null);
@@ -321,6 +339,7 @@
       resolve(GestureDisposition.rejected);
   }
 
+  @override
   void dispose() {
     _timer?.cancel();
     _timer = null;
@@ -342,9 +361,11 @@
     _delay = value;
   }
 
+  @override
   _DelayedPointerState createNewPointerState(PointerDownEvent event) {
     return new _DelayedPointerState(event.position, _delay);
   }
 
+  @override
   String toStringShort() => 'long multidrag';
 }
diff --git a/packages/flutter/lib/src/gestures/multitap.dart b/packages/flutter/lib/src/gestures/multitap.dart
index 97da6fd..f40e410 100644
--- a/packages/flutter/lib/src/gestures/multitap.dart
+++ b/packages/flutter/lib/src/gestures/multitap.dart
@@ -82,6 +82,7 @@
   _TapTracker _firstTap;
   final Map<int, _TapTracker> _trackers = new Map<int, _TapTracker>();
 
+  @override
   void addPointer(PointerEvent event) {
     // Ignore out-of-bounds second taps.
     if (_firstTap != null &&
@@ -112,8 +113,10 @@
     }
   }
 
+  @override
   void acceptGesture(int pointer) { }
 
+  @override
   void rejectGesture(int pointer) {
     _TapTracker tracker = _trackers[pointer];
     // If tracker isn't in the list, check if this is the first tap tracker
@@ -138,6 +141,7 @@
       _reset();
   }
 
+  @override
   void dispose() {
     _reset();
   }
@@ -198,6 +202,7 @@
     }
   }
 
+  @override
   String toStringShort() => 'double tap';
 }
 
@@ -255,6 +260,7 @@
     }
   }
 
+  @override
   void stopTrackingPointer(PointerRoute route) {
     _timer?.cancel();
     _timer = null;
@@ -305,6 +311,7 @@
 
   final Map<int, _TapGesture> _gestureMap = new Map<int, _TapGesture>();
 
+  @override
   void addPointer(PointerEvent event) {
     assert(!_gestureMap.containsKey(event.pointer));
     _gestureMap[event.pointer] = new _TapGesture(
@@ -316,12 +323,14 @@
       onTapDown(event.position, event.pointer);
   }
 
+  @override
   void acceptGesture(int pointer) {
     assert(_gestureMap.containsKey(pointer));
     _gestureMap[pointer]?.accept();
     assert(!_gestureMap.containsKey(pointer));
   }
 
+  @override
   void rejectGesture(int pointer) {
     assert(_gestureMap.containsKey(pointer));
     _gestureMap[pointer]?.reject();
@@ -347,6 +356,7 @@
       onLongTapDown(lastPosition, pointer);
   }
 
+  @override
   void dispose() {
     List<_TapGesture> localGestures = new List<_TapGesture>.from(_gestureMap.values);
     for (_TapGesture gesture in localGestures)
@@ -355,5 +365,6 @@
     assert(_gestureMap.isEmpty);
   }
 
+  @override
   String toStringShort() => 'multitap';
 }
diff --git a/packages/flutter/lib/src/gestures/recognizer.dart b/packages/flutter/lib/src/gestures/recognizer.dart
index 21bc125..9db54cb 100644
--- a/packages/flutter/lib/src/gestures/recognizer.dart
+++ b/packages/flutter/lib/src/gestures/recognizer.dart
@@ -61,8 +61,13 @@
   final Set<int> _trackedPointers = new HashSet<int>();
 
   void handleEvent(PointerEvent event);
+
+  @override
   void acceptGesture(int pointer) { }
+
+  @override
   void rejectGesture(int pointer) { }
+
   void didStopTrackingLastPointer(int pointer);
 
   void resolve(GestureDisposition disposition) {
@@ -72,6 +77,7 @@
       entry.resolve(disposition);
   }
 
+  @override
   void dispose() {
     resolve(GestureDisposition.rejected);
     for (int pointer in _trackedPointers)
@@ -116,6 +122,7 @@
   Point initialPosition;
   Timer _timer;
 
+  @override
   void addPointer(PointerDownEvent event) {
     startTrackingPointer(event.pointer);
     if (state == GestureRecognizerState.ready) {
@@ -127,6 +134,7 @@
     }
   }
 
+  @override
   void handleEvent(PointerEvent event) {
     assert(state != GestureRecognizerState.ready);
     if (state == GestureRecognizerState.possible && event.pointer == primaryPointer) {
@@ -151,6 +159,7 @@
     assert(deadline == null);
   }
 
+  @override
   void rejectGesture(int pointer) {
     if (pointer == primaryPointer) {
       _stopTimer();
@@ -158,11 +167,13 @@
     }
   }
 
+  @override
   void didStopTrackingLastPointer(int pointer) {
     _stopTimer();
     state = GestureRecognizerState.ready;
   }
 
+  @override
   void dispose() {
     _stopTimer();
     super.dispose();
diff --git a/packages/flutter/lib/src/gestures/scale.dart b/packages/flutter/lib/src/gestures/scale.dart
index e54eb4c..f6daf55 100644
--- a/packages/flutter/lib/src/gestures/scale.dart
+++ b/packages/flutter/lib/src/gestures/scale.dart
@@ -31,6 +31,7 @@
 
   double get _scaleFactor => _initialSpan > 0.0 ? _currentSpan / _initialSpan : 1.0;
 
+  @override
   void addPointer(PointerEvent event) {
     startTrackingPointer(event.pointer);
     if (_state == ScaleState.ready) {
@@ -41,6 +42,7 @@
     }
   }
 
+  @override
   void handleEvent(PointerEvent event) {
     assert(_state != ScaleState.ready);
     bool configChanged = false;
@@ -101,6 +103,7 @@
       onUpdate(_scaleFactor, focalPoint);
   }
 
+  @override
   void acceptGesture(int pointer) {
     if (_state != ScaleState.accepted) {
       _state = ScaleState.accepted;
@@ -108,6 +111,7 @@
     }
   }
 
+  @override
   void didStopTrackingLastPointer(int pointer) {
     switch(_state) {
       case ScaleState.possible:
@@ -125,5 +129,6 @@
     _state = ScaleState.ready;
   }
 
+  @override
   String toStringShort() => 'scale';
 }
diff --git a/packages/flutter/lib/src/gestures/tap.dart b/packages/flutter/lib/src/gestures/tap.dart
index 02fe31c..0744e46 100644
--- a/packages/flutter/lib/src/gestures/tap.dart
+++ b/packages/flutter/lib/src/gestures/tap.dart
@@ -27,6 +27,7 @@
   bool _wonArena = false;
   Point _finalPosition;
 
+  @override
   void handlePrimaryPointer(PointerEvent event) {
     if (event is PointerUpEvent) {
       _finalPosition = event.position;
@@ -34,6 +35,7 @@
     }
   }
 
+  @override
   void resolve(GestureDisposition disposition) {
     if (_wonArena && disposition == GestureDisposition.rejected) {
       if (onTapCancel != null)
@@ -43,10 +45,12 @@
     super.resolve(disposition);
   }
 
+  @override
   void didExceedDeadline() {
     _checkDown();
   }
 
+  @override
   void acceptGesture(int pointer) {
     super.acceptGesture(pointer);
     if (pointer == primaryPointer) {
@@ -56,6 +60,7 @@
     }
   }
 
+  @override
   void rejectGesture(int pointer) {
     super.rejectGesture(pointer);
     if (pointer == primaryPointer) {
@@ -91,5 +96,6 @@
     _finalPosition = null;
   }
 
+  @override
   String toStringShort() => 'tap';
 }
diff --git a/packages/flutter/lib/src/gestures/velocity_tracker.dart b/packages/flutter/lib/src/gestures/velocity_tracker.dart
index fe2ca13..baac211 100644
--- a/packages/flutter/lib/src/gestures/velocity_tracker.dart
+++ b/packages/flutter/lib/src/gestures/velocity_tracker.dart
@@ -17,6 +17,7 @@
   final int degree;
   final double confidence;
 
+  @override
   String toString() {
     return 'Estimate(xCoefficients: $xCoefficients, '
                     'yCoefficients: $yCoefficients, '
@@ -73,6 +74,7 @@
   _WeightChooser _chooseWeight;
   int _index;
 
+  @override
   void addMovement(Duration timeStamp, Point position) {
     _index += 1;
     if (_index == kHistorySize)
@@ -82,6 +84,7 @@
     movement.position = position;
   }
 
+  @override
   _Estimate getEstimate() {
     // Iterate over movement samples in reverse time order and collect samples.
     List<double> x = new List<double>();
@@ -145,6 +148,7 @@
     );
   }
 
+  @override
   void clear() {
     _index = -1;
   }
@@ -228,6 +232,7 @@
         pixelsPerSecond: pixelsPerSecond + other.pixelsPerSecond);
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (other is! Velocity)
       return false;
@@ -235,8 +240,10 @@
     return pixelsPerSecond == typedOther.pixelsPerSecond;
   }
 
+  @override
   int get hashCode => pixelsPerSecond.hashCode;
 
+  @override
   String toString() => 'Velocity(${pixelsPerSecond.dx.toStringAsFixed(1)}, ${pixelsPerSecond.dy.toStringAsFixed(1)})';
 }
 
diff --git a/packages/flutter/lib/src/material/app.dart b/packages/flutter/lib/src/material/app.dart
index c5894e2..318bb1b 100644
--- a/packages/flutter/lib/src/material/app.dart
+++ b/packages/flutter/lib/src/material/app.dart
@@ -71,14 +71,17 @@
   /// Only available in checked mode.
   final bool debugShowMaterialGrid;
 
+  @override
   _MaterialAppState createState() => new _MaterialAppState();
 }
 
 class _MaterialAppState extends WidgetsAppState<MaterialApp> {
-
   final HeroController _heroController = new HeroController();
+
+  @override
   NavigatorObserver get navigatorObserver => _heroController;
 
+  @override
   Widget build(BuildContext context) {
     ThemeData theme = config.theme ?? new ThemeData.fallback();
     Widget result = new AnimatedTheme(
diff --git a/packages/flutter/lib/src/material/app_bar.dart b/packages/flutter/lib/src/material/app_bar.dart
index 596bcd8..cac114e 100644
--- a/packages/flutter/lib/src/material/app_bar.dart
+++ b/packages/flutter/lib/src/material/app_bar.dart
@@ -67,6 +67,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     Color color = backgroundColor;
     IconThemeData iconThemeData;
diff --git a/packages/flutter/lib/src/material/bottom_sheet.dart b/packages/flutter/lib/src/material/bottom_sheet.dart
index 21d750c..0a30c1e 100644
--- a/packages/flutter/lib/src/material/bottom_sheet.dart
+++ b/packages/flutter/lib/src/material/bottom_sheet.dart
@@ -32,6 +32,7 @@
   final VoidCallback onClosing;
   final WidgetBuilder builder;
 
+  @override
   _BottomSheetState createState() => new _BottomSheetState();
 
   static AnimationController createAnimationController() {
@@ -75,6 +76,7 @@
     }
   }
 
+  @override
   Widget build(BuildContext context) {
     return new GestureDetector(
       onVerticalDragUpdate: _handleDragUpdate,
@@ -99,6 +101,7 @@
 
   final double progress;
 
+  @override
   BoxConstraints getConstraintsForChild(BoxConstraints constraints) {
     return new BoxConstraints(
       minWidth: constraints.maxWidth,
@@ -108,10 +111,12 @@
     );
   }
 
+  @override
   Offset getPositionForChild(Size size, Size childSize) {
     return new Offset(0.0, size.height - childSize.height * progress);
   }
 
+  @override
   bool shouldRelayout(_ModalBottomSheetLayout oldDelegate) {
     return progress != oldDelegate.progress;
   }
@@ -122,10 +127,12 @@
 
   final _ModalBottomSheetRoute<T> route;
 
+  @override
   _ModalBottomSheetState<T> createState() => new _ModalBottomSheetState<T>();
 }
 
 class _ModalBottomSheetState<T> extends State<_ModalBottomSheet<T>> {
+  @override
   Widget build(BuildContext context) {
     return new GestureDetector(
       onTap: () => Navigator.pop(context),
@@ -156,14 +163,21 @@
 
   final WidgetBuilder builder;
 
+  @override
   Duration get transitionDuration => _kBottomSheetDuration;
+
+  @override
   bool get barrierDismissable => true;
+
+  @override
   Color get barrierColor => Colors.black54;
 
+  @override
   AnimationController createAnimationController() {
     return BottomSheet.createAnimationController();
   }
 
+  @override
   Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> forwardAnimation) {
     return new _ModalBottomSheet<T>(route: this);
   }
diff --git a/packages/flutter/lib/src/material/button.dart b/packages/flutter/lib/src/material/button.dart
index 0fd126a..4a1eeb7 100644
--- a/packages/flutter/lib/src/material/button.dart
+++ b/packages/flutter/lib/src/material/button.dart
@@ -31,6 +31,7 @@
     return result?.color ?? ButtonColor.normal;
   }
 
+  @override
   bool updateShouldNotify(ButtonTheme old) => color != old.color;
 }
 
@@ -63,6 +64,7 @@
   /// enable a button, set its [onPressed] property to a non-null value.
   bool get enabled => onPressed != null;
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (!enabled)
@@ -110,6 +112,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     Widget contents = new InkWell(
diff --git a/packages/flutter/lib/src/material/card.dart b/packages/flutter/lib/src/material/card.dart
index 241d553..f289477 100644
--- a/packages/flutter/lib/src/material/card.dart
+++ b/packages/flutter/lib/src/material/card.dart
@@ -17,6 +17,7 @@
   final Widget child;
   final Color color;
 
+  @override
   Widget build(BuildContext context) {
     return new Container(
       margin: _kCardMargins,
diff --git a/packages/flutter/lib/src/material/checkbox.dart b/packages/flutter/lib/src/material/checkbox.dart
index 54b1d42..c9e47b6 100644
--- a/packages/flutter/lib/src/material/checkbox.dart
+++ b/packages/flutter/lib/src/material/checkbox.dart
@@ -37,6 +37,7 @@
   final Color activeColor;
   final ValueChanged<bool> onChanged;
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     ThemeData themeData = Theme.of(context);
@@ -67,6 +68,7 @@
   final Color inactiveColor;
   final ValueChanged<bool> onChanged;
 
+  @override
   _RenderCheckbox createRenderObject(BuildContext context) => new _RenderCheckbox(
     value: value,
     activeColor: activeColor,
@@ -74,6 +76,7 @@
     onChanged: onChanged
   );
 
+  @override
   void updateRenderObject(BuildContext context, _RenderCheckbox renderObject) {
     renderObject
       ..value = value
@@ -103,6 +106,7 @@
     size: const Size(2 * kRadialReactionRadius, 2 * kRadialReactionRadius)
   );
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     final Canvas canvas = context.canvas;
     final double offsetX = _kOffset + offset.dx;
diff --git a/packages/flutter/lib/src/material/chip.dart b/packages/flutter/lib/src/material/chip.dart
index 04e7a83..e77080b 100644
--- a/packages/flutter/lib/src/material/chip.dart
+++ b/packages/flutter/lib/src/material/chip.dart
@@ -33,6 +33,7 @@
   final Widget label;
   final VoidCallback onDeleted;
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     final bool deletable = onDeleted != null;
diff --git a/packages/flutter/lib/src/material/circle_avatar.dart b/packages/flutter/lib/src/material/circle_avatar.dart
index a10fbfd..4674980 100644
--- a/packages/flutter/lib/src/material/circle_avatar.dart
+++ b/packages/flutter/lib/src/material/circle_avatar.dart
@@ -19,6 +19,7 @@
   final Color backgroundColor;
   final double radius;
 
+  @override
   Widget build(BuildContext context) {
     final ThemeData theme = Theme.of(context);
     final Color color = backgroundColor ?? theme.primaryColor;
diff --git a/packages/flutter/lib/src/material/date_picker.dart b/packages/flutter/lib/src/material/date_picker.dart
index 3024af3..1388462 100644
--- a/packages/flutter/lib/src/material/date_picker.dart
+++ b/packages/flutter/lib/src/material/date_picker.dart
@@ -34,6 +34,7 @@
   final DateTime firstDate;
   final DateTime lastDate;
 
+  @override
   _DatePickerState createState() => new _DatePickerState();
 }
 
@@ -64,6 +65,7 @@
 
   static const double _calendarHeight = 210.0;
 
+  @override
   Widget build(BuildContext context) {
     Widget header = new _DatePickerHeader(
       selectedDate: config.selectedDate,
@@ -120,6 +122,7 @@
       onModeChanged(value);
   }
 
+  @override
   Widget build(BuildContext context) {
     ThemeData theme = Theme.of(context);
     TextTheme headerTheme = theme.primaryTextTheme;
@@ -181,6 +184,7 @@
   final ValueChanged<DateTime> onChanged;
   final DateTime displayedMonth;
 
+  @override
   Widget build(BuildContext context) {
     ThemeData themeData = Theme.of(context);
     TextStyle headerStyle = themeData.textTheme.caption.copyWith(fontWeight: FontWeight.w700);
@@ -289,10 +293,12 @@
   final DateTime lastDate;
   final double itemExtent;
 
+  @override
   _MonthPickerState createState() => new _MonthPickerState();
 }
 
 class _MonthPickerState extends State<MonthPicker> {
+  @override
   void initState() {
     super.initState();
     _updateCurrentDate();
@@ -335,6 +341,7 @@
     return result;
   }
 
+  @override
   Widget build(BuildContext context) {
     return new ScrollableLazyList(
       itemExtent: config.itemExtent,
@@ -343,6 +350,7 @@
     );
   }
 
+  @override
   void dispose() {
     if (_timer != null)
       _timer.cancel();
@@ -369,6 +377,7 @@
   final DateTime firstDate;
   final DateTime lastDate;
 
+  @override
   _YearPickerState createState() => new _YearPickerState();
 }
 
@@ -403,6 +412,7 @@
     return items;
   }
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     return new ScrollableLazyList(
diff --git a/packages/flutter/lib/src/material/date_picker_dialog.dart b/packages/flutter/lib/src/material/date_picker_dialog.dart
index 2d58f0b..49696b2 100644
--- a/packages/flutter/lib/src/material/date_picker_dialog.dart
+++ b/packages/flutter/lib/src/material/date_picker_dialog.dart
@@ -22,10 +22,12 @@
   final DateTime firstDate;
   final DateTime lastDate;
 
+  @override
   _DatePickerDialogState createState() => new _DatePickerDialogState();
 }
 
 class _DatePickerDialogState extends State<_DatePickerDialog> {
+  @override
   void initState() {
     super.initState();
     _selectedDate = config.initialDate;
@@ -47,6 +49,7 @@
     Navigator.pop(context, _selectedDate);
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Dialog(
       content: new DatePicker(
diff --git a/packages/flutter/lib/src/material/dialog.dart b/packages/flutter/lib/src/material/dialog.dart
index e8acc90..078bba5 100644
--- a/packages/flutter/lib/src/material/dialog.dart
+++ b/packages/flutter/lib/src/material/dialog.dart
@@ -54,6 +54,7 @@
     }
   }
 
+  @override
   Widget build(BuildContext context) {
 
     List<Widget> dialogBody = new List<Widget>();
@@ -123,14 +124,21 @@
 
   final Widget child;
 
+  @override
   Duration get transitionDuration => const Duration(milliseconds: 150);
+
+  @override
   bool get barrierDismissable => true;
+
+  @override
   Color get barrierColor => Colors.black54;
 
+  @override
   Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> forwardAnimation) {
     return child;
   }
 
+  @override
   Widget buildTransitions(BuildContext context, Animation<double> animation, Animation<double> forwardAnimation, Widget child) {
     return new FadeTransition(
       opacity: new CurvedAnimation(
diff --git a/packages/flutter/lib/src/material/divider.dart b/packages/flutter/lib/src/material/divider.dart
index d01968a..75097f1 100644
--- a/packages/flutter/lib/src/material/divider.dart
+++ b/packages/flutter/lib/src/material/divider.dart
@@ -15,6 +15,7 @@
   final double indent;
   final Color color;
 
+  @override
   Widget build(BuildContext context) {
     final double bottom = (height ~/ 2.0).toDouble();
     return new Container(
diff --git a/packages/flutter/lib/src/material/drawer.dart b/packages/flutter/lib/src/material/drawer.dart
index e3353e9..201a640 100644
--- a/packages/flutter/lib/src/material/drawer.dart
+++ b/packages/flutter/lib/src/material/drawer.dart
@@ -36,6 +36,7 @@
   final int elevation;
   final Widget child;
 
+  @override
   Widget build(BuildContext context) {
     return new ConstrainedBox(
       constraints: const BoxConstraints.expand(width: _kWidth),
@@ -55,10 +56,12 @@
 
   final Widget child;
 
+  @override
   DrawerControllerState createState() => new DrawerControllerState();
 }
 
 class DrawerControllerState extends State<DrawerController> {
+  @override
   void initState() {
     super.initState();
     _controller = new AnimationController(duration: _kBaseSettleDuration)
@@ -66,6 +69,7 @@
       ..addStatusListener(_animationStatusChanged);
   }
 
+  @override
   void dispose() {
     _controller
       ..removeListener(_animationChanged)
@@ -158,6 +162,7 @@
   final ColorTween _color = new ColorTween(begin: Colors.transparent, end: Colors.black54);
   final GlobalKey _gestureDetectorKey = new GlobalKey();
 
+  @override
   Widget build(BuildContext context) {
     if (_controller.status == AnimationStatus.dismissed) {
       return new Align(
diff --git a/packages/flutter/lib/src/material/drawer_header.dart b/packages/flutter/lib/src/material/drawer_header.dart
index 4feb78b..a830dc8 100644
--- a/packages/flutter/lib/src/material/drawer_header.dart
+++ b/packages/flutter/lib/src/material/drawer_header.dart
@@ -16,6 +16,7 @@
 
   final Widget child;
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     final double statusBarHeight = (MediaQuery.of(context)?.padding ?? EdgeInsets.zero).top;
diff --git a/packages/flutter/lib/src/material/drawer_item.dart b/packages/flutter/lib/src/material/drawer_item.dart
index 05942a0..c82f248 100644
--- a/packages/flutter/lib/src/material/drawer_item.dart
+++ b/packages/flutter/lib/src/material/drawer_item.dart
@@ -55,6 +55,7 @@
     return result;
   }
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     ThemeData themeData = Theme.of(context);
diff --git a/packages/flutter/lib/src/material/dropdown.dart b/packages/flutter/lib/src/material/dropdown.dart
index 34550c2..44ec9c4 100644
--- a/packages/flutter/lib/src/material/dropdown.dart
+++ b/packages/flutter/lib/src/material/dropdown.dart
@@ -35,6 +35,7 @@
   final double menuBottom;
   final RenderBox renderBox;
 
+  @override
   void paint(Canvas canvas, Size size) {
     final BoxPainter painter = new BoxDecoration(
       backgroundColor: color,
@@ -47,6 +48,7 @@
     painter.paint(canvas, new Rect.fromLTRB(0.0, top, size.width, bottom));
   }
 
+  @override
   bool shouldRepaint(_DropDownMenuPainter oldPainter) {
     return oldPainter.color != color
         || oldPainter.elevation != elevation
@@ -64,6 +66,7 @@
 
   final _DropDownRoute<T> route;
 
+  @override
   Widget build(BuildContext context) {
     // The menu is shown in three stages (unit timing in brackets):
     // [0s - 0.25s] - Fade in a rect-sized menu container with the selected item.
@@ -152,13 +155,18 @@
 // returning a real null value.
 class _DropDownRouteResult<T> {
   const _DropDownRouteResult(this.result);
+
   final T result;
+
+  @override
   bool operator ==(dynamic other) {
     if (other is! _DropDownRouteResult<T>)
       return false;
     final _DropDownRouteResult<T> typedOther = other;
     return result == typedOther.result;
   }
+
+  @override
   int get hashCode => result.hashCode;
 }
 
@@ -176,10 +184,16 @@
   final Rect rect;
   final int elevation;
 
+  @override
   Duration get transitionDuration => _kDropDownMenuDuration;
+
+  @override
   bool get barrierDismissable => true;
+
+  @override
   Color get barrierColor => null;
 
+  @override
   ModalPosition getPosition(BuildContext context) {
     RenderBox overlayBox = Overlay.of(context).context.findRenderObject();
     assert(overlayBox != null); // can't be null; routes get inserted by Navigator which has its own Overlay
@@ -192,6 +206,7 @@
     );
   }
 
+  @override
   Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> forwardAnimation) {
     return new _DropDownMenu<T>(route: this);
   }
@@ -207,6 +222,7 @@
   final Widget child;
   final T value;
 
+  @override
   Widget build(BuildContext context) {
     return new Container(
       height: _kMenuItemHeight,
@@ -238,18 +254,21 @@
   final ValueChanged<T> onChanged;
   final int elevation;
 
+  @override
   _DropDownButtonState<T> createState() => new _DropDownButtonState<T>();
 }
 
 class _DropDownButtonState<T> extends State<DropDownButton<T>> {
   final GlobalKey indexedStackKey = new GlobalKey(debugLabel: 'DropDownButton.IndexedStack');
 
+  @override
   void initState() {
     super.initState();
     _updateSelectedIndex();
     assert(_selectedIndex != null);
   }
 
+  @override
   void didUpdateConfig(DropDownButton<T> oldConfig) {
     if (config.items[_selectedIndex].value != config.value)
       _updateSelectedIndex();
@@ -285,6 +304,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     return new GestureDetector(
diff --git a/packages/flutter/lib/src/material/flat_button.dart b/packages/flutter/lib/src/material/flat_button.dart
index d469525..f3f5415 100644
--- a/packages/flutter/lib/src/material/flat_button.dart
+++ b/packages/flutter/lib/src/material/flat_button.dart
@@ -59,21 +59,23 @@
   /// Controls the default text color if the text color isn't explicit set.
   final ThemeBrightness colorBrightness;
 
+  @override
   _FlatButtonState createState() => new _FlatButtonState();
 }
 
 class _FlatButtonState extends MaterialButtonState<FlatButton> {
-
+  @override
   int get elevation => 0;
 
+  @override
   Color getColor(BuildContext context) {
     if (!config.enabled)
       return config.disabledColor;
     return config.color;
   }
 
+  @override
   ThemeBrightness getColorBrightness(BuildContext context) {
     return config.colorBrightness ?? Theme.of(context).brightness;
   }
-
 }
diff --git a/packages/flutter/lib/src/material/flexible_space_bar.dart b/packages/flutter/lib/src/material/flexible_space_bar.dart
index f61b63e..7987f10 100644
--- a/packages/flutter/lib/src/material/flexible_space_bar.dart
+++ b/packages/flutter/lib/src/material/flexible_space_bar.dart
@@ -17,11 +17,12 @@
   final Widget title;
   final Widget image;
 
+  @override
   _FlexibleSpaceBarState createState() => new _FlexibleSpaceBarState();
 }
 
 class _FlexibleSpaceBarState extends State<FlexibleSpaceBar> {
-
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasScaffold(context));
     final double appBarHeight = Scaffold.of(context).appBarHeight;
diff --git a/packages/flutter/lib/src/material/floating_action_button.dart b/packages/flutter/lib/src/material/floating_action_button.dart
index edc81b5..00be2e0 100644
--- a/packages/flutter/lib/src/material/floating_action_button.dart
+++ b/packages/flutter/lib/src/material/floating_action_button.dart
@@ -57,6 +57,7 @@
   final int highlightElevation;
   final bool mini;
 
+  @override
   _FloatingActionButtonState createState() => new _FloatingActionButtonState();
 }
 
@@ -64,6 +65,7 @@
   Animation<double> _childSegue;
   AnimationController _childSegueController;
 
+  @override
   void initState() {
     super.initState();
     _childSegueController = new AnimationController(duration: _kChildSegue)
@@ -77,6 +79,7 @@
     ));
   }
 
+  @override
   void didUpdateConfig(FloatingActionButton oldConfig) {
     super.didUpdateConfig(oldConfig);
     if (Widget.canUpdate(oldConfig.child, config.child) && config.backgroundColor == oldConfig.backgroundColor)
@@ -94,6 +97,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     Color iconColor = Colors.white;
     Color materialColor = config.backgroundColor;
diff --git a/packages/flutter/lib/src/material/grid_tile.dart b/packages/flutter/lib/src/material/grid_tile.dart
index fefd8f8..65dc9a9 100644
--- a/packages/flutter/lib/src/material/grid_tile.dart
+++ b/packages/flutter/lib/src/material/grid_tile.dart
@@ -15,6 +15,7 @@
   final Widget footer;
   final Widget child;
 
+  @override
   Widget build(BuildContext context) {
     if (header == null && footer == null)
       return child;
diff --git a/packages/flutter/lib/src/material/grid_tile_bar.dart b/packages/flutter/lib/src/material/grid_tile_bar.dart
index 87dfe9c..f35aa9d 100644
--- a/packages/flutter/lib/src/material/grid_tile_bar.dart
+++ b/packages/flutter/lib/src/material/grid_tile_bar.dart
@@ -31,6 +31,7 @@
   final Widget subtitle;
   final Widget trailing;
 
+  @override
   Widget build(BuildContext context) {
     BoxDecoration decoration;
     if (backgroundColor != null)
diff --git a/packages/flutter/lib/src/material/icon.dart b/packages/flutter/lib/src/material/icon.dart
index 90a8bf4..21ccb0c 100644
--- a/packages/flutter/lib/src/material/icon.dart
+++ b/packages/flutter/lib/src/material/icon.dart
@@ -56,6 +56,7 @@
     return IconTheme.of(context)?.color ?? _getDefaultColorForThemeBrightness(Theme.of(context).brightness);
   }
 
+  @override
   Widget build(BuildContext context) {
     if (icon == null)
       return new SizedBox(width: size, height: size);
@@ -84,6 +85,7 @@
     );
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('$icon');
diff --git a/packages/flutter/lib/src/material/icon_button.dart b/packages/flutter/lib/src/material/icon_button.dart
index 461dc75..abada4d 100644
--- a/packages/flutter/lib/src/material/icon_button.dart
+++ b/packages/flutter/lib/src/material/icon_button.dart
@@ -53,6 +53,7 @@
   /// used for accessibility.
   final String tooltip;
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     Widget result = new Padding(
@@ -75,6 +76,7 @@
     );
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('$icon');
diff --git a/packages/flutter/lib/src/material/icon_theme.dart b/packages/flutter/lib/src/material/icon_theme.dart
index e14c2e8..e9e3562 100644
--- a/packages/flutter/lib/src/material/icon_theme.dart
+++ b/packages/flutter/lib/src/material/icon_theme.dart
@@ -24,8 +24,10 @@
     return result?.data;
   }
 
+  @override
   bool updateShouldNotify(IconTheme old) => data != old.data;
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('$data');
diff --git a/packages/flutter/lib/src/material/icon_theme_data.dart b/packages/flutter/lib/src/material/icon_theme_data.dart
index 860a872..f80c7d2 100644
--- a/packages/flutter/lib/src/material/icon_theme_data.dart
+++ b/packages/flutter/lib/src/material/icon_theme_data.dart
@@ -23,6 +23,7 @@
     );
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (other is! IconThemeData)
       return false;
@@ -30,7 +31,9 @@
     return color == typedOther.color && opacity == typedOther.opacity;
   }
 
+  @override
   int get hashCode => hashValues(color, opacity);
 
+  @override
   String toString() => '$color';
 }
diff --git a/packages/flutter/lib/src/material/icons.dart b/packages/flutter/lib/src/material/icons.dart
index 485f441..6a9f1af 100644
--- a/packages/flutter/lib/src/material/icons.dart
+++ b/packages/flutter/lib/src/material/icons.dart
@@ -6,13 +6,18 @@
   const IconData(this.codePoint);
   final int codePoint;
 
+  @override
   bool operator ==(dynamic other) {
     if (other is! IconData)
       return false;
     final IconData typedOther = other;
     return codePoint == typedOther.codePoint;
   }
+
+  @override
   int get hashCode => codePoint.hashCode;
+
+  @override
   String toString() => 'IconData(codePoint: $codePoint)';
 }
 
diff --git a/packages/flutter/lib/src/material/ink_well.dart b/packages/flutter/lib/src/material/ink_well.dart
index 1eff1e7..394959e 100644
--- a/packages/flutter/lib/src/material/ink_well.dart
+++ b/packages/flutter/lib/src/material/ink_well.dart
@@ -44,6 +44,7 @@
   final bool containedInWell;
   final BoxShape highlightShape;
 
+  @override
   _InkResponseState<InkResponse> createState() => new _InkResponseState<InkResponse>();
 }
 
@@ -133,6 +134,7 @@
       config.onLongPress();
   }
 
+  @override
   void deactivate() {
     if (_splashes != null) {
       Set<InkSplash> splashes = _splashes;
@@ -147,11 +149,13 @@
     super.deactivate();
   }
 
+  @override
   void dependenciesChanged(Type affectedWidgetType) {
     if (affectedWidgetType == Theme && _lastHighlight != null)
       _lastHighlight.color = Theme.of(context).highlightColor;
   }
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     final bool enabled = config.onTap != null || config.onDoubleTap != null || config.onLongPress != null;
diff --git a/packages/flutter/lib/src/material/input.dart b/packages/flutter/lib/src/material/input.dart
index c3e0981..40bb04d 100644
--- a/packages/flutter/lib/src/material/input.dart
+++ b/packages/flutter/lib/src/material/input.dart
@@ -67,6 +67,7 @@
   /// Called when the user indicates that they are done editing the text in the field.
   final ValueChanged<InputValue> onSubmitted;
 
+  @override
   _InputState createState() => new _InputState();
 }
 
@@ -78,6 +79,7 @@
 
   GlobalKey get focusKey => config.key is GlobalKey ? config.key : _rawInputLineKey;
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     ThemeData themeData = Theme.of(context);
diff --git a/packages/flutter/lib/src/material/list.dart b/packages/flutter/lib/src/material/list.dart
index 507dd4a..00be870 100644
--- a/packages/flutter/lib/src/material/list.dart
+++ b/packages/flutter/lib/src/material/list.dart
@@ -39,12 +39,14 @@
   final EdgeInsets scrollablePadding;
   final Key scrollableKey;
 
+  @override
   _MaterialListState createState() => new _MaterialListState();
 }
 
 class _MaterialListState extends State<MaterialList> {
   ScrollbarPainter _scrollbarPainter = new ScrollbarPainter();
 
+  @override
   Widget build(BuildContext context) {
     return new ScrollableList(
       key: config.scrollableKey,
diff --git a/packages/flutter/lib/src/material/list_item.dart b/packages/flutter/lib/src/material/list_item.dart
index 4e2da07..714527e 100644
--- a/packages/flutter/lib/src/material/list_item.dart
+++ b/packages/flutter/lib/src/material/list_item.dart
@@ -84,6 +84,7 @@
     return dense ? style.copyWith(color: color, fontSize: 12.0) : style.copyWith(color: color);
   }
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     final bool isTwoLine = !isThreeLine && subtitle != null;
diff --git a/packages/flutter/lib/src/material/material.dart b/packages/flutter/lib/src/material/material.dart
index b2f2de7..7658caa 100644
--- a/packages/flutter/lib/src/material/material.dart
+++ b/packages/flutter/lib/src/material/material.dart
@@ -98,8 +98,10 @@
     return result;
   }
 
+  @override
   _MaterialState createState() => new _MaterialState();
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('$type');
@@ -125,6 +127,7 @@
     }
   }
 
+  @override
   Widget build(BuildContext context) {
     Color backgroundColor = _getBackgroundColor(context);
     Widget contents = config.child;
@@ -189,10 +192,12 @@
   // This is here to satisfy the MaterialInkController contract.
   // The actual painting of this color is done by a Container in the
   // MaterialState build method.
+  @override
   Color color;
 
   final List<InkFeature> _inkFeatures = <InkFeature>[];
 
+  @override
   InkSplash splashAt({
     RenderBox referenceBox,
     Point position,
@@ -228,6 +233,7 @@
     return math.max(math.max(d1, d2), math.max(d3, d4)).ceilToDouble();
   }
 
+  @override
   InkHighlight highlightAt({
     RenderBox referenceBox,
     Color color,
@@ -245,6 +251,7 @@
     return highlight;
   }
 
+  @override
   void addInkFeature(InkFeature feature) {
     assert(!feature._debugDisposed);
     assert(feature.renderer == this);
@@ -258,8 +265,10 @@
     markNeedsPaint();
   }
 
+  @override
   bool hitTestSelf(Point position) => true;
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (_inkFeatures.isNotEmpty) {
       final Canvas canvas = context.canvas;
@@ -279,8 +288,10 @@
 
   final Color color;
 
+  @override
   RenderInkFeatures createRenderObject(BuildContext context) => new RenderInkFeatures(color: color);
 
+  @override
   void updateRenderObject(BuildContext context, RenderInkFeatures renderObject) {
     renderObject.color = color;
   }
@@ -328,6 +339,7 @@
 
   void paintFeature(Canvas canvas, Matrix4 transform);
 
+  @override
   String toString() => "$runtimeType@$hashCode";
 }
 
@@ -371,6 +383,7 @@
   Animation<int> _alpha;
   AnimationController _alphaController;
 
+  @override
   void confirm() {
     int duration = (targetRadius / _kSplashConfirmedVelocity).floor();
     _radiusController
@@ -379,6 +392,7 @@
     _alphaController.forward();
   }
 
+  @override
   void cancel() {
     _alphaController.forward();
   }
@@ -388,12 +402,14 @@
       dispose();
   }
 
+  @override
   void dispose() {
     _radiusController.stop();
     _alphaController.stop();
     super.dispose();
   }
 
+  @override
   void paintFeature(Canvas canvas, Matrix4 transform) {
     Paint paint = new Paint()..color = color.withAlpha(_alpha.value);
     Point center = position;
@@ -440,8 +456,11 @@
     ).animate(_alphaController);
   }
 
+  @override
   Color get color => _color;
   Color _color;
+
+  @override
   void set color(Color value) {
     if (value == _color)
       return;
@@ -451,17 +470,20 @@
 
   final BoxShape shape;
 
+  @override
   bool get active => _active;
   bool _active = true;
 
   Animation<int> _alpha;
   AnimationController _alphaController;
 
+  @override
   void activate() {
     _active = true;
     _alphaController.forward();
   }
 
+  @override
   void deactivate() {
     _active = false;
     _alphaController.reverse();
@@ -472,6 +494,7 @@
       dispose();
   }
 
+  @override
   void dispose() {
     _alphaController.stop();
     super.dispose();
@@ -484,6 +507,7 @@
       canvas.drawCircle(rect.center, _kDefaultSplashRadius, paint);
   }
 
+  @override
   void paintFeature(Canvas canvas, Matrix4 transform) {
     Paint paint = new Paint()..color = color.withAlpha(_alpha.value);
     Offset originOffset = MatrixUtils.getAsTranslation(transform);
diff --git a/packages/flutter/lib/src/material/page.dart b/packages/flutter/lib/src/material/page.dart
index 303b0be..59cb5f8 100644
--- a/packages/flutter/lib/src/material/page.dart
+++ b/packages/flutter/lib/src/material/page.dart
@@ -23,6 +23,7 @@
     end: Point.origin
   );
 
+  @override
   Widget build(BuildContext context) {
     Point position = _position.evaluate(animation);
     Matrix4 transform = new Matrix4.identity()
@@ -52,10 +53,16 @@
 
   final WidgetBuilder builder;
 
+  @override
   Duration get transitionDuration => kMaterialPageRouteTransitionDuration;
+
+  @override
   Color get barrierColor => null;
+
+  @override
   bool canTransitionFrom(TransitionRoute<dynamic> nextRoute) => false;
 
+  @override
   Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> forwardAnimation) {
     Widget result = builder(context);
     assert(() {
@@ -67,6 +74,7 @@
     return result;
   }
 
+  @override
   Widget buildTransitions(BuildContext context, Animation<double> animation, Animation<double> forwardAnimation, Widget child) {
     return new _MaterialPageTransition(
       animation: animation,
@@ -74,5 +82,6 @@
     );
   }
 
+  @override
   String get debugLabel => '${super.debugLabel}(${settings.name})';
 }
diff --git a/packages/flutter/lib/src/material/popup_menu.dart b/packages/flutter/lib/src/material/popup_menu.dart
index de732a6..7326e10 100644
--- a/packages/flutter/lib/src/material/popup_menu.dart
+++ b/packages/flutter/lib/src/material/popup_menu.dart
@@ -39,12 +39,15 @@
 class PopupMenuDivider extends PopupMenuEntry<dynamic> {
   PopupMenuDivider({ Key key, this.height: 16.0 }) : super(key: key);
 
+  @override
   final double height;
 
+  @override
   _PopupMenuDividerState createState() => new _PopupMenuDividerState();
 }
 
 class _PopupMenuDividerState extends State<PopupMenuDivider> {
+  @override
   Widget build(BuildContext context) => new Divider(height: config.height);
 }
 
@@ -56,12 +59,18 @@
     this.child
   }) : super(key: key);
 
+  @override
   final T value;
+
+  @override
   final bool enabled;
+
   final Widget child;
 
+  @override
   double get height => _kMenuItemHeight;
 
+  @override
   _PopupMenuItemState<PopupMenuItem<T>> createState() => new _PopupMenuItemState<PopupMenuItem<T>>();
 }
 
@@ -73,6 +82,7 @@
     Navigator.pop(context, config.value);
   }
 
+  @override
   Widget build(BuildContext context) {
     final ThemeData theme = Theme.of(context);
     TextStyle style = theme.textTheme.subhead;
@@ -123,6 +133,7 @@
 
   final bool checked;
 
+  @override
   _CheckedPopupMenuItemState<T> createState() => new _CheckedPopupMenuItemState<T>();
 }
 
@@ -131,6 +142,7 @@
   AnimationController _controller;
   Animation<double> get _opacity => _controller.view;
 
+  @override
   void initState() {
     super.initState();
     _controller = new AnimationController(duration: _kFadeDuration)
@@ -138,6 +150,7 @@
       ..addListener(() => setState(() { /* animation changed */ }));
   }
 
+  @override
   void onTap() {
     // This fades the checkmark in or out when tapped.
     if (config.checked)
@@ -147,6 +160,7 @@
     super.onTap();
   }
 
+  @override
   Widget buildChild() {
     return new ListItem(
       enabled: config.enabled,
@@ -167,6 +181,7 @@
 
   final _PopupMenuRoute<T> route;
 
+  @override
   Widget build(BuildContext context) {
     double unit = 1.0 / (route.items.length + 1.5); // 1.0 for the width and 0.5 for the last item's fade.
     List<Widget> children = <Widget>[];
@@ -239,6 +254,7 @@
   final ModalPosition position;
   final double selectedItemOffset;
 
+  @override
   BoxConstraints getConstraintsForChild(BoxConstraints constraints) {
     return new BoxConstraints(
       minWidth: 0.0,
@@ -251,6 +267,7 @@
   // Put the child wherever position specifies, so long as it will fit within the
   // specified parent size padded (inset) by 8. If necessary, adjust the child's
   // position so that it fits.
+  @override
   Offset getPositionForChild(Size size, Size childSize) {
     double x = position?.left
       ?? (position?.right != null ? size.width - (position.right + childSize.width) : _kMenuScreenPadding);
@@ -271,6 +288,7 @@
     return new Offset(x, y);
   }
 
+  @override
   bool shouldRelayout(_PopupMenuRouteLayout oldDelegate) {
     return position != oldDelegate.position;
   }
@@ -290,8 +308,10 @@
   final dynamic initialValue;
   final int elevation;
 
+  @override
   ModalPosition getPosition(BuildContext context) => null;
 
+  @override
   Animation<double> createAnimation() {
     return new CurvedAnimation(
       parent: super.createAnimation(),
@@ -299,10 +319,16 @@
     );
   }
 
+  @override
   Duration get transitionDuration => _kMenuDuration;
+
+  @override
   bool get barrierDismissable => true;
+
+  @override
   Color get barrierColor => null;
 
+  @override
   Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> forwardAnimation) {
     double selectedItemOffset;
     if (initialValue != null) {
@@ -375,6 +401,7 @@
   final int elevation;
   final Widget child;
 
+  @override
   _PopupMenuButtonState<T> createState() => new _PopupMenuButtonState<T>();
 }
 
@@ -398,6 +425,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     if (config.child == null) {
       return new IconButton(
diff --git a/packages/flutter/lib/src/material/progress_indicator.dart b/packages/flutter/lib/src/material/progress_indicator.dart
index 37bce7c..ec6da26 100644
--- a/packages/flutter/lib/src/material/progress_indicator.dart
+++ b/packages/flutter/lib/src/material/progress_indicator.dart
@@ -25,6 +25,7 @@
   Color _getBackgroundColor(BuildContext context) => Theme.of(context).backgroundColor;
   Color _getValueColor(BuildContext context) => Theme.of(context).primaryColor;
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('${(value.clamp(0.0, 1.0) * 100.0).toStringAsFixed(1)}%');
@@ -44,6 +45,7 @@
   final double value;
   final double animationValue;
 
+  @override
   void paint(Canvas canvas, Size size) {
     Paint paint = new Paint()
       ..color = backgroundColor
@@ -63,6 +65,7 @@
     }
   }
 
+  @override
   bool shouldRepaint(_LinearProgressIndicatorPainter oldPainter) {
     return oldPainter.backgroundColor != backgroundColor
         || oldPainter.valueColor != valueColor
@@ -77,6 +80,7 @@
     double value
   }) : super(key: key, value: value);
 
+  @override
   _LinearProgressIndicatorState createState() => new _LinearProgressIndicatorState();
 }
 
@@ -84,6 +88,7 @@
   Animation<double> _animation;
   AnimationController _controller;
 
+  @override
   void initState() {
     super.initState();
     _controller = new AnimationController(
@@ -92,6 +97,7 @@
     _animation = new CurvedAnimation(parent: _controller, curve: Curves.fastOutSlowIn);
   }
 
+  @override
   void dispose() {
     _controller.stop();
     super.dispose();
@@ -114,6 +120,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     if (config.value != null)
       return _buildIndicator(context, _animation.value);
@@ -150,6 +157,7 @@
   final int stepValue;
   final double rotationValue;
 
+  @override
   void paint(Canvas canvas, Size size) {
     Paint paint = new Paint()
       ..color = valueColor
@@ -177,6 +185,7 @@
     }
   }
 
+  @override
   bool shouldRepaint(_CircularProgressIndicatorPainter oldPainter) {
     return oldPainter.valueColor != valueColor
         || oldPainter.value != value
@@ -193,6 +202,7 @@
     double value
   }) : super(key: key, value: value);
 
+  @override
   _CircularProgressIndicatorState createState() => new _CircularProgressIndicatorState();
 }
 
@@ -216,6 +226,7 @@
 class _CircularProgressIndicatorState extends State<CircularProgressIndicator> {
   AnimationController _controller;
 
+  @override
   void initState() {
     super.initState();
     _controller = new AnimationController(
@@ -223,6 +234,7 @@
     )..repeat();
   }
 
+  @override
   void dispose() {
     _controller.stop();
     super.dispose();
@@ -247,6 +259,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     if (config.value != null)
       return _buildIndicator(context, 0.0, 0.0, 0, 0.0);
diff --git a/packages/flutter/lib/src/material/radio.dart b/packages/flutter/lib/src/material/radio.dart
index 83b4bd3..440e1b6 100644
--- a/packages/flutter/lib/src/material/radio.dart
+++ b/packages/flutter/lib/src/material/radio.dart
@@ -39,6 +39,7 @@
       onChanged(value);
   }
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     ThemeData themeData = Theme.of(context);
@@ -72,6 +73,7 @@
   final Color activeColor;
   final ValueChanged<bool> onChanged;
 
+  @override
   _RenderRadio createRenderObject(BuildContext context) => new _RenderRadio(
     value: selected,
     activeColor: activeColor,
@@ -79,6 +81,7 @@
     onChanged: onChanged
   );
 
+  @override
   void updateRenderObject(BuildContext context, _RenderRadio renderObject) {
     renderObject
       ..value = selected
@@ -102,8 +105,10 @@
     size: const Size(2 * kRadialReactionRadius, 2 * kRadialReactionRadius)
   );
 
+  @override
   bool get isInteractive => super.isInteractive && !value;
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     final Canvas canvas = context.canvas;
 
diff --git a/packages/flutter/lib/src/material/raised_button.dart b/packages/flutter/lib/src/material/raised_button.dart
index 3c3decb..424f88d 100644
--- a/packages/flutter/lib/src/material/raised_button.dart
+++ b/packages/flutter/lib/src/material/raised_button.dart
@@ -57,11 +57,12 @@
   final int highlightElevation;
   final int disabledElevation;
 
+  @override
   _RaisedButtonState createState() => new _RaisedButtonState();
 }
 
 class _RaisedButtonState extends MaterialButtonState<RaisedButton> {
-
+  @override
   int get elevation {
     if (config.enabled) {
       if (highlight)
@@ -72,6 +73,7 @@
     }
   }
 
+  @override
   Color getColor(BuildContext context) {
     if (config.enabled) {
       return config.color ?? Theme.of(context).buttonColor;
@@ -87,8 +89,8 @@
     }
   }
 
+  @override
   ThemeBrightness getColorBrightness(BuildContext context) {
     return config.colorBrightness ?? Theme.of(context).brightness;
   }
-
 }
diff --git a/packages/flutter/lib/src/material/scaffold.dart b/packages/flutter/lib/src/material/scaffold.dart
index 954d3de..c0a6e0a 100644
--- a/packages/flutter/lib/src/material/scaffold.dart
+++ b/packages/flutter/lib/src/material/scaffold.dart
@@ -55,6 +55,7 @@
 
   final EdgeInsets padding;
 
+  @override
   void performLayout(Size size) {
     BoxConstraints looseConstraints = new BoxConstraints.loose(size);
 
@@ -118,6 +119,7 @@
     }
   }
 
+  @override
   bool shouldRelayout(_ScaffoldLayout oldDelegate) {
     return padding != oldDelegate.padding;
   }
@@ -133,6 +135,7 @@
 
   final Widget child;
 
+  @override
   _FloatingActionButtonTransitionState createState() => new _FloatingActionButtonTransitionState();
 }
 
@@ -140,6 +143,7 @@
   final AnimationController controller = new AnimationController(duration: _kFloatingActionButtonSegue);
   Widget oldChild;
 
+  @override
   void initState() {
     super.initState();
     controller.forward().then((_) {
@@ -147,11 +151,13 @@
     });
   }
 
+  @override
   void dispose() {
     controller.stop();
     super.dispose();
   }
 
+  @override
   void didUpdateConfig(_FloatingActionButtonTransition oldConfig) {
     if (Widget.canUpdate(oldConfig.child, config.child))
       return;
@@ -163,6 +169,7 @@
       });
   }
 
+  @override
   Widget build(BuildContext context) {
     final List<Widget> children = new List<Widget>();
     if (oldChild != null) {
@@ -222,6 +229,7 @@
   /// The state from the closest instance of this class that encloses the given context.
   static ScaffoldState of(BuildContext context) => context.ancestorStateOfType(const TypeMatcher<ScaffoldState>());
 
+  @override
   ScaffoldState createState() => new ScaffoldState();
 }
 
@@ -363,6 +371,7 @@
 
   // INTERNALS
 
+  @override
   void initState() {
     super.initState();
     _appBarController = new AnimationController();
@@ -374,6 +383,7 @@
     }
   }
 
+  @override
   void dispose() {
     _appBarController.stop();
     _snackBarController?.stop();
@@ -500,6 +510,7 @@
     return appBar;
   }
 
+  @override
   Widget build(BuildContext context) {
     final EdgeInsets padding = MediaQuery.of(context)?.padding ?? EdgeInsets.zero;
 
@@ -618,6 +629,7 @@
   final VoidCallback onDismissed;
   final WidgetBuilder builder;
 
+  @override
   _PersistentBottomSheetState createState() => new _PersistentBottomSheetState();
 }
 
@@ -626,17 +638,20 @@
   // We take ownership of the animation controller given in the first configuration.
   // We also share control of that animation with out BottomSheet widget.
 
+  @override
   void initState() {
     super.initState();
     assert(config.animationController.status == AnimationStatus.forward);
     config.animationController.addStatusListener(_handleStatusChange);
   }
 
+  @override
   void didUpdateConfig(_PersistentBottomSheet oldConfig) {
     super.didUpdateConfig(oldConfig);
     assert(config.animationController == oldConfig.animationController);
   }
 
+  @override
   void dispose() {
     config.animationController.stop();
     super.dispose();
@@ -651,6 +666,7 @@
       config.onDismissed();
   }
 
+  @override
   Widget build(BuildContext context) {
     return new AnimatedBuilder(
       animation: config.animationController,
diff --git a/packages/flutter/lib/src/material/scrollbar_painter.dart b/packages/flutter/lib/src/material/scrollbar_painter.dart
index 4b89a46..5098a62 100644
--- a/packages/flutter/lib/src/material/scrollbar_painter.dart
+++ b/packages/flutter/lib/src/material/scrollbar_painter.dart
@@ -52,6 +52,7 @@
     paintThumb(context, thumbOrigin & thumbSize);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (_alpha == 0)
       return;
@@ -60,6 +61,7 @@
 
   AnimationController _fade;
 
+  @override
   Future<Null> scrollStarted() {
     if (_fade == null) {
       _fade = new AnimationController(duration: _kScrollbarThumbFadeDuration);
@@ -72,10 +74,12 @@
     return _fade.forward();
   }
 
+  @override
   Future<Null> scrollEnded() {
     return _fade.reverse();
   }
 
+  @override
   void detach() {
     super.detach();
     _fade?.stop();
diff --git a/packages/flutter/lib/src/material/slider.dart b/packages/flutter/lib/src/material/slider.dart
index d503380..252e75d 100644
--- a/packages/flutter/lib/src/material/slider.dart
+++ b/packages/flutter/lib/src/material/slider.dart
@@ -37,6 +37,7 @@
     onChanged(value * (max - min) + min);
   }
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     return new _SliderRenderObjectWidget(
@@ -55,12 +56,14 @@
   final Color activeColor;
   final ValueChanged<double> onChanged;
 
+  @override
   _RenderSlider createRenderObject(BuildContext context) => new _RenderSlider(
     value: value,
     activeColor: activeColor,
     onChanged: onChanged
   );
 
+  @override
   void updateRenderObject(BuildContext context, _RenderSlider renderObject) {
     renderObject
       ..value = value
@@ -155,13 +158,16 @@
     }
   }
 
+  @override
   bool hitTestSelf(Point position) => true;
 
+  @override
   void handleEvent(PointerEvent event, BoxHitTestEntry entry) {
     if (event is PointerDownEvent && onChanged != null)
       _drag.addPointer(event);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     final Canvas canvas = context.canvas;
 
diff --git a/packages/flutter/lib/src/material/snack_bar.dart b/packages/flutter/lib/src/material/snack_bar.dart
index 8009da4..3697768 100644
--- a/packages/flutter/lib/src/material/snack_bar.dart
+++ b/packages/flutter/lib/src/material/snack_bar.dart
@@ -49,6 +49,7 @@
   /// The callback to be invoked when the button is pressed. Must be non-null.
   final VoidCallback onPressed;
 
+  @override
   Widget build(BuildContext context) {
     return new Container(
       margin: const EdgeInsets.only(left: _kSideMargins),
@@ -86,6 +87,7 @@
   final Duration duration;
   final Animation<double> animation;
 
+  @override
   Widget build(BuildContext context) {
     assert(animation != null);
     List<Widget> children = <Widget>[
diff --git a/packages/flutter/lib/src/material/switch.dart b/packages/flutter/lib/src/material/switch.dart
index d6d3185..72a94fc 100644
--- a/packages/flutter/lib/src/material/switch.dart
+++ b/packages/flutter/lib/src/material/switch.dart
@@ -21,6 +21,7 @@
   final Color activeColor;
   final ValueChanged<bool> onChanged;
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     ThemeData themeData = Theme.of(context);
@@ -68,6 +69,7 @@
   final Color inactiveTrackColor;
   final ValueChanged<bool> onChanged;
 
+  @override
   _RenderSwitch createRenderObject(BuildContext context) => new _RenderSwitch(
     value: value,
     activeColor: activeColor,
@@ -77,6 +79,7 @@
     onChanged: onChanged
   );
 
+  @override
   void updateRenderObject(BuildContext context, _RenderSwitch renderObject) {
     renderObject
       ..value = value
@@ -165,6 +168,7 @@
     reactionController.reverse();
   }
 
+  @override
   void handleEvent(PointerEvent event, BoxHitTestEntry entry) {
     if (event is PointerDownEvent && onChanged != null)
       _drag.addPointer(event);
@@ -174,6 +178,7 @@
   Color _cachedThumbColor;
   BoxPainter _thumbPainter;
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     final Canvas canvas = context.canvas;
 
diff --git a/packages/flutter/lib/src/material/tabs.dart b/packages/flutter/lib/src/material/tabs.dart
index 3ed5239..c082a18 100644
--- a/packages/flutter/lib/src/material/tabs.dart
+++ b/packages/flutter/lib/src/material/tabs.dart
@@ -89,11 +89,13 @@
     }
   }
 
+  @override
   void setupParentData(RenderBox child) {
     if (child.parentData is! _TabBarParentData)
       child.parentData = new _TabBarParentData();
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     BoxConstraints widthConstraints =
         new BoxConstraints(maxWidth: constraints.maxWidth, maxHeight: constraints.maxHeight);
@@ -109,6 +111,7 @@
     return constraints.constrainWidth(width);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     BoxConstraints widthConstraints =
         new BoxConstraints(maxWidth: constraints.maxWidth, maxHeight: constraints.maxHeight);
@@ -129,8 +132,10 @@
 
   double _getIntrinsicHeight(BoxConstraints constraints) => constraints.constrainHeight(_tabBarHeight);
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) => _getIntrinsicHeight(constraints);
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) => _getIntrinsicHeight(constraints);
 
   void layoutFixedWidthTabs() {
@@ -194,6 +199,7 @@
     }
   }
 
+  @override
   void performLayout() {
     assert(constraints is BoxConstraints);
     if (childCount == 0)
@@ -211,6 +217,7 @@
       reportLayoutChangedIfNeeded();
   }
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     return defaultHitTestChildren(result, position: position);
   }
@@ -233,6 +240,7 @@
     canvas.drawRect((point + offset) & size, new Paint()..color = indicatorColor);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     int index = 0;
     RenderBox child = firstChild;
@@ -265,12 +273,14 @@
   final bool isScrollable;
   final TabLayoutChanged onLayoutChanged;
 
+  @override
   _RenderTabBar createRenderObject(BuildContext context) {
     _RenderTabBar result = new _RenderTabBar(onLayoutChanged);
     updateRenderObject(context, result);
     return result;
   }
 
+  @override
   void updateRenderObject(BuildContext context, _RenderTabBar renderObject) {
     renderObject
       ..selectedIndex = selectedIndex
@@ -330,6 +340,7 @@
     }
   }
 
+  @override
   Widget build(BuildContext context) {
     assert(debugCheckHasMaterial(context));
     Widget labelContent;
@@ -363,6 +374,7 @@
     );
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('$label');
@@ -372,8 +384,10 @@
 class _TabsScrollBehavior extends BoundedBehavior {
   _TabsScrollBehavior();
 
+  @override
   bool isScrollable = true;
 
+  @override
   Simulation createScrollSimulation(double position, double velocity) {
     if (!isScrollable)
       return null;
@@ -384,6 +398,7 @@
     );
   }
 
+  @override
   double applyCurve(double scrollOffset, double scrollDelta) {
     return (isScrollable) ? super.applyCurve(scrollOffset, scrollDelta) : 0.0;
   }
@@ -414,6 +429,7 @@
   final ValueChanged<T> onChanged;
   final Widget child;
 
+  @override
   TabBarSelectionState<T> createState() => new TabBarSelectionState<T>();
 
   static TabBarSelectionState<dynamic/*=T*/> of/*<T>*/(BuildContext context) {
@@ -436,6 +452,7 @@
       _valueToIndex[value] = index++;
   }
 
+  @override
   void initState() {
     super.initState();
     _value = config.value ?? PageStorage.of(context)?.readState(context) ?? values.first;
@@ -449,6 +466,7 @@
     _initValueToIndex();
   }
 
+  @override
   void didUpdateConfig(TabBarSelection<T> oldConfig) {
     super.didUpdateConfig(oldConfig);
     if (values != oldConfig.values)
@@ -532,6 +550,7 @@
       ..removeListener(listener.handleProgressChange);
   }
 
+  @override
   void deactivate() {
     _controller.stop();
     for (TabBarSelectionAnimationListener listener in _animationListeners.toList()) {
@@ -542,6 +561,7 @@
     _writeValue();
   }
 
+  @override
   Widget build(BuildContext context) {
     return config.child;
   }
@@ -564,6 +584,7 @@
   final Map<T, TabLabel> labels;
   final bool isScrollable;
 
+  @override
   _TabBarState<T> createState() => new _TabBarState<T>();
 }
 
@@ -578,27 +599,32 @@
     _selection?.registerAnimationListener(this);
   }
 
+  @override
   void initState() {
     super.initState();
     scrollBehavior.isScrollable = config.isScrollable;
     _initSelection(TabBarSelection.of(context));
   }
 
+  @override
   void didUpdateConfig(TabBar<T> oldConfig) {
     super.didUpdateConfig(oldConfig);
     if (!config.isScrollable)
       scrollTo(0.0);
   }
 
+  @override
   void dispose() {
     _selection?.unregisterAnimationListener(this);
     super.dispose();
   }
 
+  @override
   void handleSelectionDeactivate() {
     _selection = null;
   }
 
+  @override
   void handleStatusChange(AnimationStatus status) {
     if (config.labels.length == 0)
       return;
@@ -614,6 +640,7 @@
     }
   }
 
+  @override
   void handleProgressChange() {
     if (config.labels.length == 0 || _selection == null)
       return;
@@ -666,7 +693,10 @@
     return new Rect.fromLTRB(r.left, r.bottom, r.right, r.bottom + _kTabIndicatorHeight);
   }
 
+  @override
   ScrollBehavior<double, double> createScrollBehavior() => new _TabsScrollBehavior();
+
+  @override
   _TabsScrollBehavior get scrollBehavior => super.scrollBehavior;
 
   double _centeredTabScrollOffset(int tabIndex) {
@@ -731,6 +761,7 @@
     return scrollOffsetToPixelDelta(scrollOffset);
   }
 
+  @override
   Widget buildContent(BuildContext context) {
     TabBarSelectionState<T> newSelection = TabBarSelection.of(context);
     if (_selection != newSelection)
@@ -808,6 +839,7 @@
     assert(children.length > 1);
   }
 
+  @override
   _TabBarViewState<T> createState() => new _TabBarViewState<T>();
 }
 
@@ -820,6 +852,7 @@
 
   BoundedBehavior _boundedBehavior;
 
+  @override
   ExtentScrollBehavior get scrollBehavior {
     _boundedBehavior ??= new BoundedBehavior();
     return _boundedBehavior;
@@ -833,22 +866,26 @@
     }
   }
 
+  @override
   void initState() {
     super.initState();
     _initSelection(TabBarSelection.of(context));
   }
 
+  @override
   void didUpdateConfig(TabBarView<T> oldConfig) {
     super.didUpdateConfig(oldConfig);
     if (_selection != null && config.children != oldConfig.children)
       _updateItemsForSelectedIndex(_selection.index);
   }
 
+  @override
   void dispose() {
     _selection?.unregisterAnimationListener(this);
     super.dispose();
   }
 
+  @override
   void handleSelectionDeactivate() {
     _selection = null;
   }
@@ -888,9 +925,11 @@
     _updateScrollBehaviorForSelectedIndex(selectedIndex);
   }
 
+  @override
   void handleStatusChange(AnimationStatus status) {
   }
 
+  @override
   void handleProgressChange() {
     if (_selection == null || !_selection.valueIsChanging)
       return;
@@ -918,6 +957,7 @@
     }
   }
 
+  @override
   void dispatchOnScroll() {
     if (_selection == null || _selection.valueIsChanging)
       return;
@@ -931,6 +971,7 @@
       controller.value = scrollOffset / 2.0;
   }
 
+  @override
   Future<Null> fling(double scrollVelocity) {
     if (_selection == null || _selection.valueIsChanging)
       return new Future<Null>.value();
@@ -955,6 +996,7 @@
     return settleScrollOffset();
   }
 
+  @override
   Widget buildContent(BuildContext context) {
     TabBarSelectionState<T> newSelection = TabBarSelection.of(context);
     if (_selection != newSelection)
@@ -997,6 +1039,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     final TabBarSelectionState<T> selection = TabBarSelection.of(context);
     final Color color = Theme.of(context).accentColor;
diff --git a/packages/flutter/lib/src/material/theme.dart b/packages/flutter/lib/src/material/theme.dart
index f3c9efe..45a8eb6 100644
--- a/packages/flutter/lib/src/material/theme.dart
+++ b/packages/flutter/lib/src/material/theme.dart
@@ -34,8 +34,10 @@
     return theme?.data ?? _kFallbackTheme;
   }
 
+  @override
   bool updateShouldNotify(Theme old) => data != old.data;
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('$data');
@@ -46,6 +48,7 @@
 class ThemeDataTween extends Tween<ThemeData> {
   ThemeDataTween({ ThemeData begin, ThemeData end }) : super(begin: begin, end: end);
 
+  @override
   ThemeData lerp(double t) => ThemeData.lerp(begin, end, t);
 }
 
@@ -67,18 +70,21 @@
 
   final Widget child;
 
+  @override
   _AnimatedThemeState createState() => new _AnimatedThemeState();
 }
 
 class _AnimatedThemeState extends AnimatedWidgetBaseState<AnimatedTheme> {
   ThemeDataTween _data;
 
+  @override
   void forEachTween(TweenVisitor<dynamic> visitor) {
     // TODO(ianh): Use constructor tear-offs when it becomes possible
     _data = visitor(_data, config.data, (dynamic value) => new ThemeDataTween(begin: value));
     assert(_data != null);
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Theme(
       child: config.child,
@@ -86,6 +92,7 @@
     );
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (_data != null)
diff --git a/packages/flutter/lib/src/material/theme_data.dart b/packages/flutter/lib/src/material/theme_data.dart
index 6490dd1..8e5b258 100644
--- a/packages/flutter/lib/src/material/theme_data.dart
+++ b/packages/flutter/lib/src/material/theme_data.dart
@@ -241,6 +241,7 @@
     );
   }
 
+  @override
   bool operator==(Object other) {
     if (other.runtimeType != runtimeType)
       return false;
@@ -268,6 +269,8 @@
            (otherData.primaryTextTheme == primaryTextTheme) &&
            (otherData.primaryIconTheme == primaryIconTheme);
   }
+
+  @override
   int get hashCode {
     return hashValues(
       brightness,
@@ -297,5 +300,6 @@
     );
   }
 
+  @override
   String toString() => '$runtimeType($brightness $primaryColor etc...)';
 }
diff --git a/packages/flutter/lib/src/material/time_picker.dart b/packages/flutter/lib/src/material/time_picker.dart
index bd37553..18edbbc 100644
--- a/packages/flutter/lib/src/material/time_picker.dart
+++ b/packages/flutter/lib/src/material/time_picker.dart
@@ -73,6 +73,7 @@
   /// The hour at which the current period starts.
   int get periodOffset => period == DayPeriod.am ? 0 : _kHoursPerPeriod;
 
+  @override
   bool operator ==(dynamic other) {
     if (other is! TimeOfDay)
       return false;
@@ -81,9 +82,11 @@
         && typedOther.minute == minute;
   }
 
+  @override
   int get hashCode => hashValues(hour, minute);
 
   // TODO(ianh): Localize.
+  @override
   String toString() => '$hourOfPeriodLabel:$minuteLabel $periodLabel';
 }
 
@@ -100,6 +103,7 @@
   final TimeOfDay selectedTime;
   final ValueChanged<TimeOfDay> onChanged;
 
+  @override
   _TimePickerState createState() => new _TimePickerState();
 }
 
@@ -113,6 +117,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     Widget header = new _TimePickerHeader(
       selectedTime: config.selectedTime,
@@ -167,6 +172,7 @@
     onChanged(selectedTime.replacing(hour: newHour));
   }
 
+  @override
   Widget build(BuildContext context) {
     ThemeData theme = Theme.of(context);
     TextTheme headerTheme = theme.primaryTextTheme;
@@ -274,6 +280,7 @@
   final Color primaryColor;
   final double theta;
 
+  @override
   void paint(Canvas canvas, Size size) {
     double radius = size.shortestSide / 2.0;
     Offset center = new Offset(size.width / 2.0, size.height / 2.0);
@@ -305,6 +312,7 @@
     }
   }
 
+  @override
   bool shouldRepaint(_DialPainter oldPainter) {
     return oldPainter.labels != labels
         || oldPainter.primaryColor != primaryColor
@@ -325,10 +333,12 @@
   final _TimePickerMode mode;
   final ValueChanged<TimeOfDay> onChanged;
 
+  @override
   _DialState createState() => new _DialState();
 }
 
 class _DialState extends State<_Dial> {
+  @override
   void initState() {
     super.initState();
     _thetaController = new AnimationController(duration: _kDialAnimateDuration);
@@ -339,6 +349,7 @@
     ))..addListener(() => setState(() { }));
   }
 
+  @override
   void didUpdateConfig(_Dial oldConfig) {
     if (config.mode != oldConfig.mode && !_dragging)
       _animateTo(_getThetaForTime(config.selectedTime));
@@ -434,6 +445,7 @@
   final List<TextPainter> _hours = _initHours();
   final List<TextPainter> _minutes = _initMinutes();
 
+  @override
   Widget build(BuildContext context) {
     return new GestureDetector(
       onPanStart: _handlePanStart,
diff --git a/packages/flutter/lib/src/material/time_picker_dialog.dart b/packages/flutter/lib/src/material/time_picker_dialog.dart
index b026dfd..3e038b3 100644
--- a/packages/flutter/lib/src/material/time_picker_dialog.dart
+++ b/packages/flutter/lib/src/material/time_picker_dialog.dart
@@ -18,10 +18,12 @@
 
   final TimeOfDay initialTime;
 
+  @override
   _TimePickerDialogState createState() => new _TimePickerDialogState();
 }
 
 class _TimePickerDialogState extends State<_TimePickerDialog> {
+  @override
   void initState() {
     super.initState();
     _selectedTime = config.initialTime;
@@ -43,6 +45,7 @@
     Navigator.pop(context, _selectedTime);
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Dialog(
       content: new TimePicker(
diff --git a/packages/flutter/lib/src/material/toggleable.dart b/packages/flutter/lib/src/material/toggleable.dart
index b48cd52..1260701 100644
--- a/packages/flutter/lib/src/material/toggleable.dart
+++ b/packages/flutter/lib/src/material/toggleable.dart
@@ -148,8 +148,10 @@
       _reactionController.reverse();
   }
 
+  @override
   bool hitTestSelf(Point position) => true;
 
+  @override
   void handleEvent(PointerEvent event, BoxHitTestEntry entry) {
     if (event is PointerDownEvent && isInteractive)
       _tap.addPointer(event);
@@ -163,7 +165,10 @@
     }
   }
 
+  @override
   bool get hasSemantics => isInteractive;
+
+  @override
   Iterable<SemanticAnnotator> getSemanticAnnotators() sync* {
     yield (SemanticsNode semantics) {
       semantics.hasCheckedState = true;
@@ -171,11 +176,22 @@
       semantics.canBeTapped = isInteractive;
     };
   }
+
+  @override
   void handleSemanticTap() => _handleTap();
 
+  @override
   void handleSemanticLongPress() { }
+
+  @override
   void handleSemanticScrollLeft() { }
+
+  @override
   void handleSemanticScrollRight() { }
+
+  @override
   void handleSemanticScrollUp() { }
+
+  @override
   void handleSemanticScrollDown() { }
 }
diff --git a/packages/flutter/lib/src/material/tooltip.dart b/packages/flutter/lib/src/material/tooltip.dart
index 520ef67..fe7a3c5 100644
--- a/packages/flutter/lib/src/material/tooltip.dart
+++ b/packages/flutter/lib/src/material/tooltip.dart
@@ -64,8 +64,10 @@
   final Duration showDuration;
   final Widget child;
 
+  @override
   _TooltipState createState() => new _TooltipState();
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('"$message"');
@@ -80,6 +82,7 @@
   OverlayEntry _entry;
   Timer _timer;
 
+  @override
   void initState() {
     super.initState();
     _controller = new AnimationController(duration: config.fadeDuration)
@@ -102,6 +105,7 @@
       });
   }
 
+  @override
   void didUpdateConfig(Tooltip oldConfig) {
     super.didUpdateConfig(oldConfig);
     if (config.fadeDuration != oldConfig.fadeDuration)
@@ -169,12 +173,14 @@
     _controller.reverse();
   }
 
+  @override
   void deactivate() {
     if (_entry != null)
       hideTooltip();
     super.deactivate();
   }
 
+  @override
   Widget build(BuildContext context) {
     assert(Overlay.of(context, debugRequiredFor: config) != null);
     return new GestureDetector(
@@ -201,8 +207,10 @@
   final EdgeInsets screenEdgeMargin;
   final bool preferBelow;
 
+  @override
   BoxConstraints getConstraintsForChild(BoxConstraints constraints) => constraints.loosen();
 
+  @override
   Offset getPositionForChild(Size size, Size childSize) {
     // VERTICAL DIRECTION
     final bool fitsBelow = target.y + verticalOffset + childSize.height <= size.height - screenEdgeMargin.bottom;
@@ -226,6 +234,7 @@
     return new Offset(x, y);
   }
 
+  @override
   bool shouldRelayout(_TooltipPositionDelegate oldDelegate) {
     return target != target
         || verticalOffset != verticalOffset
@@ -264,6 +273,7 @@
   final EdgeInsets screenEdgeMargin;
   final bool preferBelow;
 
+  @override
   Widget build(BuildContext context) {
     return new Positioned(
       top: 0.0,
diff --git a/packages/flutter/lib/src/material/two_level_list.dart b/packages/flutter/lib/src/material/two_level_list.dart
index 15e7237..e8946c4 100644
--- a/packages/flutter/lib/src/material/two_level_list.dart
+++ b/packages/flutter/lib/src/material/two_level_list.dart
@@ -32,6 +32,7 @@
   final GestureTapCallback onTap;
   final GestureLongPressCallback onLongPress;
 
+  @override
   Widget build(BuildContext context) {
     final TwoLevelList parentList = context.ancestorWidgetOfExactType(TwoLevelList);
     assert(parentList != null);
@@ -56,6 +57,7 @@
   final Widget title;
   final List<Widget> children;
 
+  @override
   _TwoLevelSublistState createState() => new _TwoLevelSublistState();
 }
 
@@ -70,6 +72,7 @@
 
   bool _isExpanded = false;
 
+  @override
   void initState() {
     super.initState();
     _controller = new AnimationController(duration: _kExpand);
@@ -132,6 +135,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     final ThemeData theme = Theme.of(context);
     _borderColor.end = theme.dividerColor;
@@ -155,5 +159,6 @@
   final List<Widget> items;
   final MaterialListType type;
 
+  @override
   Widget build(BuildContext context) => new Block(children: items);
 }
diff --git a/packages/flutter/lib/src/painting/box_painter.dart b/packages/flutter/lib/src/painting/box_painter.dart
index 13a3946..4b382a7 100644
--- a/packages/flutter/lib/src/painting/box_painter.dart
+++ b/packages/flutter/lib/src/painting/box_painter.dart
@@ -48,6 +48,7 @@
     );
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -58,8 +59,10 @@
            width == typedOther.width;
   }
 
+  @override
   int get hashCode => hashValues(color, width);
 
+  @override
   String toString() => 'BorderSide($color, $width)';
 }
 
@@ -122,6 +125,7 @@
     );
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -134,8 +138,10 @@
            left == typedOther.left;
   }
 
+  @override
   int get hashCode => hashValues(top, right, bottom, left);
 
+  @override
   String toString() => 'Border($top, $right, $bottom, $left)';
 }
 
@@ -218,6 +224,7 @@
     return result;
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -230,8 +237,10 @@
            spreadRadius == typedOther.spreadRadius;
   }
 
+  @override
   int get hashCode => hashValues(color, offset, blurRadius, spreadRadius);
 
+  @override
   String toString() => 'BoxShadow($color, $offset, $blurRadius, $spreadRadius)';
 }
 
@@ -287,6 +296,7 @@
   /// How this gradient should tile the plane.
   final TileMode tileMode;
 
+  @override
   Shader createShader(Rect rect) {
     return new ui.Gradient.linear(
       <Point>[_offsetToPoint(begin, rect), _offsetToPoint(end, rect)],
@@ -294,6 +304,7 @@
     );
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -325,8 +336,10 @@
     return true;
   }
 
+  @override
   int get hashCode => hashValues(begin, end, tileMode, hashList(colors), hashList(stops));
 
+  @override
   String toString() {
     return 'LinearGradient($begin, $end, $colors, $stops, $tileMode)';
   }
@@ -373,6 +386,7 @@
   /// How this gradient should tile the plane.
   final TileMode tileMode;
 
+  @override
   Shader createShader(Rect rect) {
     return new ui.Gradient.radial(
       _offsetToPoint(center, rect),
@@ -381,6 +395,7 @@
     );
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -412,8 +427,10 @@
     return true;
   }
 
+  @override
   int get hashCode => hashValues(center, radius, tileMode, hashList(colors), hashList(stops));
 
+  @override
   String toString() {
     return 'RadialGradient($center, $radius, $colors, $stops, $tileMode)';
   }
@@ -595,9 +612,12 @@
 /// FractionalOffset(0.0, 1.0) represents the bottom left of the Size,
 class FractionalOffset {
   const FractionalOffset(this.dx, this.dy);
+
   final double dx;
   final double dy;
+
   static const FractionalOffset zero = const FractionalOffset(0.0, 0.0);
+
   FractionalOffset operator -() {
     return new FractionalOffset(-dx, -dy);
   }
@@ -625,6 +645,8 @@
   Offset alongSize(Size other) {
     return new Offset(dx * other.width, dy * other.height);
   }
+
+  @override
   bool operator ==(dynamic other) {
     if (other is! FractionalOffset)
       return false;
@@ -632,6 +654,8 @@
     return dx == typedOther.dx &&
            dy == typedOther.dy;
   }
+
+  @override
   int get hashCode => hashValues(dx, dy);
   static FractionalOffset lerp(FractionalOffset a, FractionalOffset b, double t) {
     if (a == null && b == null)
@@ -642,6 +666,8 @@
       return new FractionalOffset(b.dx * (1.0 - t), b.dy * (1.0 - t));
     return new FractionalOffset(ui.lerpDouble(a.dx, b.dx, t), ui.lerpDouble(a.dy, b.dy, t));
   }
+
+  @override
   String toString() => '$runtimeType($dx, $dy)';
 }
 
@@ -719,6 +745,7 @@
       listener();
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -733,8 +760,10 @@
            _imageResource == typedOther._imageResource;
   }
 
+  @override
   int get hashCode => hashValues(fit, repeat, centerSlice, colorFilter, alignment, _imageResource);
 
+  @override
   String toString() => 'BackgroundImage($fit, $repeat)';
 }
 
@@ -764,6 +793,7 @@
     this.shape: BoxShape.rectangle
   });
 
+  @override
   bool debugAssertValid() {
     assert(shape != BoxShape.circle ||
            borderRadius == null); // Can't have a border radius if you're a circle.
@@ -797,6 +827,7 @@
   final BoxShape shape;
 
   /// The inset space occupied by the border.
+  @override
   EdgeInsets get padding => border?.dimensions;
 
   /// Returns a new box decoration that is scaled by the given factor.
@@ -835,18 +866,21 @@
     );
   }
 
+  @override
   BoxDecoration lerpFrom(Decoration a, double t) {
     if (a is! BoxDecoration)
       return BoxDecoration.lerp(null, this, t);
     return BoxDecoration.lerp(a, this, t);
   }
 
+  @override
   BoxDecoration lerpTo(Decoration b, double t) {
     if (b is! BoxDecoration)
       return BoxDecoration.lerp(this, null, t);
     return BoxDecoration.lerp(this, b, t);
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -862,6 +896,7 @@
            shape == typedOther.shape;
   }
 
+  @override
   int get hashCode {
     return hashValues(
       backgroundColor,
@@ -877,6 +912,7 @@
   /// Stringifies the BoxDecoration. By default, the output will be on one line.
   /// If the method is passed a non-empty string argument, then the output will
   /// span multiple lines, each prefixed by that argument.
+  @override
   String toString([String prefix = '']) {
     List<String> result = <String>[];
     if (backgroundColor != null)
@@ -900,11 +936,15 @@
     return result.join('\n');
   }
 
+  @override
   bool get needsListeners => backgroundImage != null;
 
+  @override
   void addChangeListener(VoidCallback listener) {
     backgroundImage?._addChangeListener(listener);
   }
+
+  @override
   void removeChangeListener(VoidCallback listener) {
     backgroundImage?._removeChangeListener(listener);
   }
@@ -917,6 +957,7 @@
     return borderRadius > shortestSide ? shortestSide : borderRadius;
   }
 
+  @override
   bool hitTest(Size size, Point position) {
     assert(shape != null);
     assert((Point.origin & size).contains(position));
@@ -935,6 +976,7 @@
     }
   }
 
+  @override
   _BoxDecorationPainter createBoxPainter() => new _BoxDecorationPainter(this);
 }
 
@@ -1136,6 +1178,7 @@
   }
 
   /// Paint the box decoration into the given location on the given canvas
+  @override
   void paint(Canvas canvas, Rect rect) {
     _paintShadows(canvas, rect);
     _paintBackgroundColor(canvas, rect);
diff --git a/packages/flutter/lib/src/painting/colors.dart b/packages/flutter/lib/src/painting/colors.dart
index 66b2042..0aee048 100644
--- a/packages/flutter/lib/src/painting/colors.dart
+++ b/packages/flutter/lib/src/painting/colors.dart
@@ -101,6 +101,7 @@
     );
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -113,7 +114,9 @@
         && typedOther.value == value;
   }
 
+  @override
   int get hashCode => hashValues(alpha, hue, saturation, value);
 
+  @override
   String toString() => "HSVColor($alpha, $hue, $saturation, $value)";
 }
diff --git a/packages/flutter/lib/src/painting/decoration.dart b/packages/flutter/lib/src/painting/decoration.dart
index 8600aa6..7865343 100644
--- a/packages/flutter/lib/src/painting/decoration.dart
+++ b/packages/flutter/lib/src/painting/decoration.dart
@@ -20,6 +20,8 @@
   void addChangeListener(VoidCallback listener) { assert(false); }
   void removeChangeListener(VoidCallback listener) { assert(false); }
   BoxPainter createBoxPainter();
+
+  @override
   String toString([String prefix = '']) => '$prefix$runtimeType';
 }
 
diff --git a/packages/flutter/lib/src/painting/edge_insets.dart b/packages/flutter/lib/src/painting/edge_insets.dart
index 767ea68..b3c914c 100644
--- a/packages/flutter/lib/src/painting/edge_insets.dart
+++ b/packages/flutter/lib/src/painting/edge_insets.dart
@@ -135,6 +135,7 @@
   /// An EdgeInsets with zero offsets in each direction.
   static const EdgeInsets zero = const EdgeInsets.TRBL(0.0, 0.0, 0.0, 0.0);
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -147,7 +148,9 @@
            left == typedOther.left;
   }
 
+  @override
   int get hashCode => hashValues(top, left, bottom, right);
 
+  @override
   String toString() => "EdgeInsets($top, $right, $bottom, $left)";
 }
diff --git a/packages/flutter/lib/src/painting/text_editing.dart b/packages/flutter/lib/src/painting/text_editing.dart
index e1c50dd..8776902 100644
--- a/packages/flutter/lib/src/painting/text_editing.dart
+++ b/packages/flutter/lib/src/painting/text_editing.dart
@@ -51,6 +51,7 @@
     return text.substring(start, end);
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -61,11 +62,13 @@
         && typedOther.end == end;
   }
 
+  @override
   int get hashCode => hashValues(
     start.hashCode,
     end.hashCode
   );
 
+  @override
   String toString() => 'TextRange(start: $start, end: $end)';
 }
 
@@ -136,10 +139,12 @@
   /// Might be larger than, smaller than, or equal to base.
   TextPosition get extent => new TextPosition(offset: extentOffset, affinity: affinity);
 
+  @override
   String toString() {
     return '$runtimeType(baseOffset: $baseOffset, extentOffset: $extentOffset, affinity: $affinity, isDirectional: $isDirectional)';
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -152,6 +157,7 @@
         && typedOther.isDirectional == isDirectional;
   }
 
+  @override
   int get hashCode => hashValues(
     baseOffset.hashCode,
     extentOffset.hashCode,
diff --git a/packages/flutter/lib/src/painting/text_painter.dart b/packages/flutter/lib/src/painting/text_painter.dart
index 248ef9c..f42390c 100644
--- a/packages/flutter/lib/src/painting/text_painter.dart
+++ b/packages/flutter/lib/src/painting/text_painter.dart
@@ -113,6 +113,7 @@
     return buffer.toString();
   }
 
+  @override
   String toString([String prefix = '']) {
     StringBuffer buffer = new StringBuffer();
     buffer.writeln('$prefix$runtimeType:');
@@ -158,6 +159,7 @@
     return true;
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -169,6 +171,8 @@
         && typedOther.recognizer == recognizer
         && _deepEquals(typedOther.children, children);
   }
+
+  @override
   int get hashCode => hashValues(style, text, recognizer, hashList(children));
 }
 
diff --git a/packages/flutter/lib/src/painting/text_style.dart b/packages/flutter/lib/src/painting/text_style.dart
index b832214..8f28071 100644
--- a/packages/flutter/lib/src/painting/text_style.dart
+++ b/packages/flutter/lib/src/painting/text_style.dart
@@ -176,6 +176,7 @@
     );
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -198,6 +199,7 @@
            decorationStyle == typedOther.decorationStyle;
   }
 
+  @override
   int get hashCode {
     return hashValues(
       inherit,
@@ -217,6 +219,7 @@
     );
   }
 
+  @override
   String toString([String prefix = '']) {
     List<String> result = <String>[];
     result.add('${prefix}inherit: $inherit');
diff --git a/packages/flutter/lib/src/rendering/auto_layout.dart b/packages/flutter/lib/src/rendering/auto_layout.dart
index d1aff44..fd8793f 100644
--- a/packages/flutter/lib/src/rendering/auto_layout.dart
+++ b/packages/flutter/lib/src/rendering/auto_layout.dart
@@ -179,6 +179,7 @@
       _explicitConstraints.clear();
   }
 
+  @override
   void adoptChild(RenderObject child) {
     // Make sure to call super first to setup the parent data
     super.adoptChild(child);
@@ -187,6 +188,7 @@
     assert(child.parentData == childParentData);
   }
 
+  @override
   void dropChild(RenderObject child) {
     final AutoLayoutParentData childParentData = child.parentData;
     childParentData._removeImplicitConstraints();
@@ -194,19 +196,23 @@
     super.dropChild(child);
   }
 
+  @override
   void setupParentData(RenderObject child) {
     if (child.parentData is! AutoLayoutParentData)
       child.parentData = new AutoLayoutParentData(child);
   }
 
+  @override
   bool get sizedByParent => true;
 
+  @override
   void performResize() {
     size = constraints.biggest;
   }
 
   Size _previousSize;
 
+  @override
   void performLayout() {
     bool needToFlushUpdates = false;
 
@@ -241,10 +247,12 @@
     }
   }
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     return defaultHitTestChildren(result, position: position);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     defaultPaint(context, offset);
   }
diff --git a/packages/flutter/lib/src/rendering/binding.dart b/packages/flutter/lib/src/rendering/binding.dart
index 8fddbf5..41d2307 100644
--- a/packages/flutter/lib/src/rendering/binding.dart
+++ b/packages/flutter/lib/src/rendering/binding.dart
@@ -22,6 +22,7 @@
 abstract class Renderer extends Object with Scheduler, Services
   implements HitTestable {
 
+  @override
   void initInstances() {
     super.initInstances();
     _instance = this;
@@ -90,6 +91,7 @@
     }
   }
 
+  @override
   void hitTest(HitTestResult result, Point position) {
     assert(renderView != null);
     renderView.hitTest(result, position: position);
diff --git a/packages/flutter/lib/src/rendering/block.dart b/packages/flutter/lib/src/rendering/block.dart
index a7b9090..834e8ff 100644
--- a/packages/flutter/lib/src/rendering/block.dart
+++ b/packages/flutter/lib/src/rendering/block.dart
@@ -39,12 +39,14 @@
     addAll(children);
   }
 
+  @override
   void setupParentData(RenderBox child) {
     if (child.parentData is! BlockParentData)
       child.parentData = new BlockParentData();
   }
 
   /// The direction to use as the main axis.
+  @override
   Axis get mainAxis => _mainAxis;
   Axis _mainAxis;
   void set mainAxis (Axis value) {
@@ -95,6 +97,7 @@
         math.max(minExtent, parentData.offset.dx + child.size.width);
   }
 
+  @override
   void performLayout() {
     BoxConstraints innerConstraints = _getInnerConstraints(constraints);
     double position = 0.0;
@@ -113,6 +116,7 @@
     assert(!size.isInfinite);
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('mainAxis: $mainAxis');
@@ -156,6 +160,7 @@
     return constrainer(math.max(extent, minExtent));
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (isVertical) {
@@ -168,6 +173,7 @@
     return _getIntrinsicMainAxis(constraints, constraints.constrainWidth);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (isVertical) {
@@ -180,6 +186,7 @@
     return _getIntrinsicMainAxis(constraints, constraints.constrainWidth);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (isVertical)
@@ -191,6 +198,7 @@
     );
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (isVertical)
@@ -202,10 +210,12 @@
     );
   }
 
+  @override
   double computeDistanceToActualBaseline(TextBaseline baseline) {
     return defaultComputeDistanceToFirstActualBaseline(baseline);
   }
 
+  @override
   void performLayout() {
     assert((isVertical ? constraints.maxHeight >= double.INFINITY : constraints.maxWidth >= double.INFINITY) &&
            'RenderBlock does not clip or resize its children, so it must be placed in a parent that does not constrain '
@@ -213,10 +223,12 @@
     super.performLayout();
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     defaultPaint(context, offset);
   }
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     return defaultHitTestChildren(result, position: position);
   }
@@ -254,6 +266,8 @@
        super(children: children, mainAxis: mainAxis, itemExtent: itemExtent, minExtent: minExtent);
 
   bool _inCallback = false;
+
+  @override
   bool get isRepaintBoundary => true;
 
   /// Called during [layout] to determine the block's children.
@@ -322,11 +336,13 @@
     markNeedsPaint();
   }
 
+  @override
   void attach() {
     super.attach();
     _overlayPainter?.attach(this);
   }
 
+  @override
   void detach() {
     super.detach();
     _overlayPainter?.detach();
@@ -366,6 +382,7 @@
     return result;
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (isVertical)
@@ -373,6 +390,7 @@
     return constraints.constrainWidth(minExtent);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (isVertical)
@@ -380,6 +398,7 @@
     return _getIntrinsicDimension(constraints, totalExtentCallback, new BoxConstraints(minWidth: minExtent).enforce(constraints).constrainWidth);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (!isVertical)
@@ -387,6 +406,7 @@
     return constraints.constrainHeight(0.0);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (!isVertical)
@@ -399,6 +419,7 @@
   // scroll the RenderBlockViewport, it would shift in its parent if
   // the parent was baseline-aligned, which makes no sense.
 
+  @override
   void performLayout() {
     if (_callback != null) {
       try {
@@ -422,10 +443,12 @@
     overlayPainter?.paint(context, offset);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     context.pushClipRect(needsCompositing, offset, Point.origin & size, _paintContents);
   }
 
+  @override
   void applyPaintTransform(RenderBox child, Matrix4 transform) {
     if (isVertical)
       transform.translate(0.0, startOffset);
@@ -434,8 +457,10 @@
     super.applyPaintTransform(child, transform);
   }
 
+  @override
   Rect describeApproximatePaintClip(RenderObject child) => Point.origin & size;
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     if (isVertical)
       return defaultHitTestChildren(result, position: position + new Offset(0.0, -startOffset));
@@ -443,6 +468,7 @@
       return defaultHitTestChildren(result, position: position + new Offset(-startOffset, 0.0));
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('startOffset: $startOffset');
diff --git a/packages/flutter/lib/src/rendering/box.dart b/packages/flutter/lib/src/rendering/box.dart
index caf8111..6af4b76 100644
--- a/packages/flutter/lib/src/rendering/box.dart
+++ b/packages/flutter/lib/src/rendering/box.dart
@@ -211,6 +211,7 @@
   bool get hasTightHeight => minHeight >= maxHeight;
 
   /// Whether there is exactly one size that satifies the constraints.
+  @override
   bool get isTight => hasTightWidth && hasTightHeight;
 
   /// Whether there is an upper bound on the maximum width.
@@ -293,6 +294,7 @@
   /// normalized and have undefined behavior when they are not. In
   /// checked mode, many of these APIs will assert if the constraints
   /// are not normalized.
+  @override
   bool get isNormalized {
     return minWidth >= 0.0 &&
            minWidth <= maxWidth &&
@@ -300,6 +302,7 @@
            minHeight <= maxHeight;
   }
 
+  @override
   bool get debugAssertIsNormalized {
     assert(() {
       if (minWidth < 0.0 && minHeight < 0.0)
@@ -328,6 +331,7 @@
     );
   }
 
+  @override
   bool operator ==(dynamic other) {
     assert(debugAssertIsNormalized);
     if (identical(this, other))
@@ -342,11 +346,13 @@
            maxHeight == typedOther.maxHeight;
   }
 
+  @override
   int get hashCode {
     assert(debugAssertIsNormalized);
     return hashValues(minWidth, maxWidth, minHeight, maxHeight);
   }
 
+  @override
   String toString() {
     String annotation = isNormalized ? '' : '; NOT NORMALIZED';
     if (minWidth == double.INFINITY && minHeight == double.INFINITY)
@@ -369,11 +375,13 @@
 class BoxHitTestEntry extends HitTestEntry {
   const BoxHitTestEntry(RenderBox target, this.localPosition) : super(target);
 
+  @override
   RenderBox get target => super.target;
 
   /// The position of the hit test in the local coordinates of [target].
   final Point localPosition;
 
+  @override
   String toString() => '${target.runtimeType}@$localPosition';
 }
 
@@ -387,6 +395,7 @@
     _offset = value;
   }
 
+  @override
   String toString() => 'offset=$offset';
 }
 
@@ -413,7 +422,7 @@
 /// width value (and pass true for parentUsesSize). After the child determines
 /// its height, use the child's height to determine your size.
 abstract class RenderBox extends RenderObject {
-
+  @override
   void setupParentData(RenderObject child) {
     if (child.parentData is! BoxParentData)
       child.parentData = new BoxParentData();
@@ -512,8 +521,10 @@
     assert(() { debugAssertDoesMeetConstraints(); return true; });
   }
 
+  @override
   Rect get semanticBounds => Point.origin & size;
 
+  @override
   void debugResetSize() {
     // updates the value of size._canBeUsedByParent if necessary
     size = size;
@@ -593,7 +604,10 @@
   }
 
   /// The box constraints most recently received from the parent.
+  @override
   BoxConstraints get constraints => super.constraints;
+
+  @override
   void debugAssertDoesMeetConstraints() {
     assert(constraints != null);
     assert(_size != null);
@@ -681,6 +695,7 @@
     }
   }
 
+  @override
   void markNeedsLayout() {
     if (_cachedBaselines != null && _cachedBaselines.isNotEmpty) {
       // if we have cached data, then someone must have used our data
@@ -699,11 +714,15 @@
     }
     super.markNeedsLayout();
   }
+
+  @override
   void performResize() {
     // default behavior for subclasses that have sizedByParent = true
     size = constraints.constrain(Size.zero);
     assert(!size.isInfinite);
   }
+
+  @override
   void performLayout() {
     assert(() {
       if (!sizedByParent) {
@@ -759,6 +778,7 @@
   ///
   /// The RenderBox implementation takes care of adjusting the matrix for the
   /// position of the given child.
+  @override
   void applyPaintTransform(RenderObject child, Matrix4 transform) {
     assert(child.parent == this);
     BoxParentData childParentData = child.parentData;
@@ -811,9 +831,12 @@
   /// can lead to undefined behavior.
   ///
   /// The returned paint bounds are in the local coordinate system of this box.
+  @override
   Rect get paintBounds => Point.origin & size;
 
   int _debugActivePointers = 0;
+
+  @override
   void handleEvent(PointerEvent event, HitTestEntry entry) {
     super.handleEvent(event, entry);
     assert(() {
@@ -829,6 +852,7 @@
     });
   }
 
+  @override
   void debugPaint(PaintingContext context, Offset offset) {
     assert(() {
       if (debugPaintSizeEnabled)
@@ -888,6 +912,7 @@
     });
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('size: ${ hasSize ? size : "MISSING" }');
@@ -974,5 +999,6 @@
 class FractionalOffsetTween extends Tween<FractionalOffset> {
   FractionalOffsetTween({ FractionalOffset begin, FractionalOffset end }) : super(begin: begin, end: end);
 
+  @override
   FractionalOffset lerp(double t) => FractionalOffset.lerp(begin, end, t);
 }
diff --git a/packages/flutter/lib/src/rendering/child_view.dart b/packages/flutter/lib/src/rendering/child_view.dart
index ca61732..94c7784 100644
--- a/packages/flutter/lib/src/rendering/child_view.dart
+++ b/packages/flutter/lib/src/rendering/child_view.dart
@@ -170,25 +170,32 @@
       markNeedsLayout();
   }
 
+  @override
   void attach() {
     super.attach();
     _child?._attach();
   }
 
+  @override
   void detach() {
     _child?._detach();
     super.detach();
   }
 
+  @override
   bool get alwaysNeedsCompositing => true;
+
+  @override
   bool get sizedByParent => true;
 
+  @override
   void performResize() {
     size = constraints.biggest;
   }
 
   TextPainter _debugErrorMessage;
 
+  @override
   void performLayout() {
     if (_child != null) {
       _child._layout(size: size, scale: scale).then(_handleLayoutInfoChanged);
@@ -215,8 +222,10 @@
     markNeedsPaint();
   }
 
+  @override
   bool hitTestSelf(Point position) => true;
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     assert(needsCompositing);
     if (_layoutInfo != null)
@@ -230,6 +239,7 @@
     });
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('child: $child');
diff --git a/packages/flutter/lib/src/rendering/custom_layout.dart b/packages/flutter/lib/src/rendering/custom_layout.dart
index d5d0608..605a120 100644
--- a/packages/flutter/lib/src/rendering/custom_layout.dart
+++ b/packages/flutter/lib/src/rendering/custom_layout.dart
@@ -12,6 +12,7 @@
   /// An object representing the identity of this child.
   Object id;
 
+  @override
   String toString() => '${super.toString()}; id=$id';
 }
 
@@ -191,6 +192,7 @@
   /// debugging data printed by [debugDumpRenderTree] and friends.
   ///
   /// By default, returns the [runtimeType] of the class.
+  @override
   String toString() => '$runtimeType';
 }
 
@@ -211,6 +213,7 @@
     addAll(children);
   }
 
+  @override
   void setupParentData(RenderBox child) {
     if (child.parentData is! MultiChildLayoutParentData)
       child.parentData = new MultiChildLayoutParentData();
@@ -233,31 +236,38 @@
     return constraints.constrain(_delegate.getSize(constraints));
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     return _getSize(constraints).width;
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     return _getSize(constraints).width;
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     return _getSize(constraints).height;
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     return _getSize(constraints).height;
   }
 
+  @override
   void performLayout() {
     size = _getSize(constraints);
     delegate._callPerformLayout(size, firstChild);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     defaultPaint(context, offset);
   }
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     return defaultHitTestChildren(result, position: position);
   }
diff --git a/packages/flutter/lib/src/rendering/editable_line.dart b/packages/flutter/lib/src/rendering/editable_line.dart
index 4c07836..013e7e9 100644
--- a/packages/flutter/lib/src/rendering/editable_line.dart
+++ b/packages/flutter/lib/src/rendering/editable_line.dart
@@ -131,29 +131,36 @@
     return _layoutTemplate.height;
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return constraints.constrainWidth(0.0);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return constraints.constrainWidth(0.0);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return constraints.constrainHeight(_preferredHeight);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return constraints.constrainHeight(_preferredHeight);
   }
 
+  @override
   bool hitTestSelf(Point position) => true;
 
   TapGestureRecognizer _tap;
+
+  @override
   void handleEvent(PointerEvent event, BoxHitTestEntry entry) {
     if (event is PointerDownEvent && onSelectionChanged != null)
       _tap.addPointer(event);
@@ -201,6 +208,7 @@
 
   Rect _caretPrototype;
 
+  @override
   void performLayout() {
     Size oldSize = hasSize ? size : null;
     size = new Size(constraints.maxWidth, constraints.constrainHeight(_preferredHeight));
@@ -250,6 +258,7 @@
 
   bool get _hasVisualOverflow => _contentSize.width > size.width;
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (_hasVisualOverflow)
       context.pushClipRect(needsCompositing, offset, Point.origin & size, _paintContents);
@@ -257,5 +266,6 @@
       _paintContents(context, offset);
   }
 
+  @override
   Rect describeApproximatePaintClip(RenderObject child) => _hasVisualOverflow ? Point.origin & size : null;
 }
diff --git a/packages/flutter/lib/src/rendering/error.dart b/packages/flutter/lib/src/rendering/error.dart
index e6c3d00..a86be46 100644
--- a/packages/flutter/lib/src/rendering/error.dart
+++ b/packages/flutter/lib/src/rendering/error.dart
@@ -53,26 +53,33 @@
 
   ui.Paragraph _paragraph;
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     return constraints.constrainWidth(0.0);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     return constraints.constrainWidth(_kMaxWidth);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     return constraints.constrainHeight(0.0);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     return constraints.constrainHeight(_kMaxHeight);
   }
 
+  @override
   bool get sizedByParent => true;
 
+  @override
   bool hitTestSelf(Point position) => true;
 
+  @override
   void performResize() {
     size = constraints.constrain(const Size(_kMaxWidth, _kMaxHeight));
   }
@@ -92,6 +99,7 @@
     lineHeight: 0.25 // TODO(ianh): https://github.com/flutter/flutter/issues/2460 will affect this
   );
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     try {
       context.canvas.drawRect(offset & size, new Paint() .. color = backgroundColor);
diff --git a/packages/flutter/lib/src/rendering/flex.dart b/packages/flutter/lib/src/rendering/flex.dart
index 6a20573..05c8a5b 100644
--- a/packages/flutter/lib/src/rendering/flex.dart
+++ b/packages/flutter/lib/src/rendering/flex.dart
@@ -17,6 +17,7 @@
   /// according to the flex factors of the flexible children.
   int flex;
 
+  @override
   String toString() => '${super.toString()}; flex=$flex';
 }
 
@@ -134,6 +135,7 @@
   /// Set during layout if overflow occurred on the main axis
   double _overflow;
 
+  @override
   void setupParentData(RenderBox child) {
     if (child.parentData is! FlexParentData)
       child.parentData = new FlexParentData();
@@ -278,6 +280,7 @@
     }
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     return _getIntrinsicSize(
       constraints: constraints,
@@ -286,6 +289,7 @@
     );
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     return _getIntrinsicSize(
       constraints: constraints,
@@ -294,6 +298,7 @@
     );
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     return _getIntrinsicSize(
       constraints: constraints,
@@ -302,6 +307,7 @@
     );
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     return _getIntrinsicSize(
       constraints: constraints,
@@ -309,6 +315,7 @@
       childSize: (RenderBox child, BoxConstraints innerConstraints) => child.getMaxIntrinsicHeight(innerConstraints));
   }
 
+  @override
   double computeDistanceToActualBaseline(TextBaseline baseline) {
     if (_direction == FlexDirection.horizontal)
       return defaultComputeDistanceToHighestActualBaseline(baseline);
@@ -328,6 +335,7 @@
     return (_direction == FlexDirection.horizontal) ? child.size.width : child.size.height;
   }
 
+  @override
   void performLayout() {
     // Originally based on http://www.w3.org/TR/css-flexbox-1/ Section 9.7 Resolving Flexible Lengths
 
@@ -537,10 +545,12 @@
     }
   }
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     return defaultHitTestChildren(result, position: position);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (_overflow <= 0.0) {
       defaultPaint(context, offset);
@@ -583,8 +593,10 @@
     });
   }
 
+  @override
   Rect describeApproximatePaintClip(RenderObject child) => _overflow > 0.0 ? Point.origin & size : null;
 
+  @override
   String toString() {
     String header = super.toString();
     if (_overflow is double && _overflow > 0.0)
@@ -592,6 +604,7 @@
     return header;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('direction: $_direction');
diff --git a/packages/flutter/lib/src/rendering/grid.dart b/packages/flutter/lib/src/rendering/grid.dart
index 6ded3db..ebaa929 100644
--- a/packages/flutter/lib/src/rendering/grid.dart
+++ b/packages/flutter/lib/src/rendering/grid.dart
@@ -205,6 +205,7 @@
   // Insets for the entire grid.
   final EdgeInsets padding;
 
+  @override
   GridChildPlacement getChildPlacement(GridSpecification specification, int index, Object placementData) {
     final int columnCount = specification.columnOffsets.length - 1;
     return new GridChildPlacement(
@@ -213,6 +214,7 @@
     );
   }
 
+  @override
   bool shouldRelayout(GridDelegateWithInOrderChildPlacement oldDelegate) {
     return columnSpacing != oldDelegate.columnSpacing
         || rowSpacing != oldDelegate.rowSpacing
@@ -240,6 +242,7 @@
   /// The ratio of the width to the height of each tile in the grid.
   final double tileAspectRatio;
 
+  @override
   GridSpecification getGridSpecification(BoxConstraints constraints, int childCount) {
     assert(constraints.maxWidth < double.INFINITY);
     int rowCount = (childCount / columnCount).ceil();
@@ -256,16 +259,19 @@
     );
   }
 
+  @override
   bool shouldRelayout(FixedColumnCountGridDelegate oldDelegate) {
     return columnCount != oldDelegate.columnCount
         || tileAspectRatio != oldDelegate.tileAspectRatio
         || super.shouldRelayout(oldDelegate);
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints, int childCount) {
     return constraints.constrainWidth(0.0);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints, int childCount) {
     return constraints.constrainWidth(0.0);
   }
@@ -297,6 +303,7 @@
   /// The ratio of the width to the height of each tile in the grid.
   final double tileAspectRatio;
 
+  @override
   GridSpecification getGridSpecification(BoxConstraints constraints, int childCount) {
     assert(constraints.maxWidth < double.INFINITY);
     final double gridWidth = math.max(0.0, constraints.maxWidth - padding.horizontal);
@@ -315,16 +322,19 @@
     );
   }
 
+  @override
   bool shouldRelayout(MaxTileWidthGridDelegate oldDelegate) {
     return maxTileWidth != oldDelegate.maxTileWidth
         || tileAspectRatio != oldDelegate.tileAspectRatio
         || super.shouldRelayout(oldDelegate);
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints, int childCount) {
     return constraints.constrainWidth(0.0);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints, int childCount) {
     return constraints.constrainWidth(maxTileWidth * childCount);
   }
@@ -335,6 +345,7 @@
   /// Opaque data passed to the getChildPlacement method of the grid's [GridDelegate].
   Object placementData;
 
+  @override
   String toString() => '${super.toString()}; placementData=$placementData';
 }
 
@@ -384,6 +395,7 @@
     _delegate = newDelegate;
   }
 
+  @override
   void set mainAxis(Axis value) {
     assert(() {
       if (value != Axis.vertical)
@@ -393,6 +405,7 @@
     super.mainAxis = value;
   }
 
+  @override
   int get virtualChildCount => super.virtualChildCount ?? childCount;
 
   /// The virtual index of the first child.
@@ -409,31 +422,37 @@
     markNeedsLayout();
   }
 
+  @override
   void setupParentData(RenderBox child) {
     if (child.parentData is! GridParentData)
       child.parentData = new GridParentData();
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return _delegate.getMinIntrinsicWidth(constraints, virtualChildCount);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return _delegate.getMaxIntrinsicWidth(constraints, virtualChildCount);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return _delegate.getMinIntrinsicHeight(constraints, virtualChildCount);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return _delegate.getMaxIntrinsicHeight(constraints, virtualChildCount);
   }
 
+  @override
   double computeDistanceToActualBaseline(TextBaseline baseline) {
     return defaultComputeDistanceToHighestActualBaseline(baseline);
   }
@@ -453,6 +472,7 @@
     }
   }
 
+  @override
   void performLayout() {
     _updateGridSpecification();
     final Size gridSize = _specification.gridSize;
diff --git a/packages/flutter/lib/src/rendering/image.dart b/packages/flutter/lib/src/rendering/image.dart
index 8ac1bfb..91e2ece 100644
--- a/packages/flutter/lib/src/rendering/image.dart
+++ b/packages/flutter/lib/src/rendering/image.dart
@@ -203,6 +203,7 @@
     return constraints.constrain(new Size(width, height));
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (_width == null && _height == null)
@@ -210,11 +211,13 @@
     return _sizeForConstraints(constraints).width;
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return _sizeForConstraints(constraints).width;
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (_width == null && _height == null)
@@ -222,17 +225,21 @@
     return _sizeForConstraints(constraints).height;
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return _sizeForConstraints(constraints).height;
   }
 
+  @override
   bool hitTestSelf(Point position) => true;
 
+  @override
   void performLayout() {
     size = _sizeForConstraints(constraints);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (_image == null)
       return;
@@ -248,6 +255,7 @@
     );
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('image: $image');
diff --git a/packages/flutter/lib/src/rendering/layer.dart b/packages/flutter/lib/src/rendering/layer.dart
index 9d3b3c2..2f1ea1c 100644
--- a/packages/flutter/lib/src/rendering/layer.dart
+++ b/packages/flutter/lib/src/rendering/layer.dart
@@ -70,6 +70,7 @@
   /// origin of the builder's coordinate system.
   void addToScene(ui.SceneBuilder builder, Offset layerOffset);
 
+  @override
   String toString() => '$runtimeType';
 
   dynamic debugOwner;
@@ -102,6 +103,7 @@
   /// The picture's coodinate system matches this layer's coodinate system
   ui.Picture picture;
 
+  @override
   void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
     builder.addPicture(layerOffset, picture);
   }
@@ -114,6 +116,7 @@
   double devicePixelRatio;
   mojom.ViewLayoutInfo layoutInfo;
 
+  @override
   void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
     builder.addChildScene(
       offset + layerOffset,
@@ -124,6 +127,7 @@
     );
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('offset: $offset');
@@ -150,6 +154,7 @@
 
   final int rasterizerThreshold;
 
+  @override
   void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
     assert(optionsMask != null);
     builder.addPerformanceOverlay(optionsMask, overlayRect.shift(layerOffset));
@@ -243,6 +248,7 @@
     _lastChild = null;
   }
 
+  @override
   void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
     addChildrenToScene(builder, layerOffset);
   }
@@ -256,6 +262,7 @@
     }
   }
 
+  @override
   String debugDescribeChildren(String prefix) {
     String result = '$prefix \u2502\n';
     if (_firstChild != null) {
@@ -281,10 +288,12 @@
   /// Offset from parent in the parent's coordinate system.
   Offset offset;
 
+  @override
   void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
     addChildrenToScene(builder, offset + layerOffset);
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('offset: $offset');
@@ -301,12 +310,14 @@
   // TODO(abarth): Why is the rectangle in the parent's coordinate system
   // instead of in the coordinate system of this layer?
 
+  @override
   void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
     builder.pushClipRect(clipRect.shift(layerOffset));
     addChildrenToScene(builder, layerOffset);
     builder.pop();
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('clipRect: $clipRect');
@@ -322,12 +333,14 @@
   // TODO(abarth): Why is the rounded-rect in the parent's coordinate system
   // instead of in the coordinate system of this layer?
 
+  @override
   void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
     builder.pushClipRRect(clipRRect.shift(layerOffset));
     addChildrenToScene(builder, layerOffset);
     builder.pop();
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('clipRRect: $clipRRect');
@@ -343,12 +356,14 @@
   // TODO(abarth): Why is the path in the parent's coordinate system instead of
   // in the coordinate system of this layer?
 
+  @override
   void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
     builder.pushClipPath(clipPath.shift(layerOffset));
     addChildrenToScene(builder, layerOffset);
     builder.pop();
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('clipPath: $clipPath');
@@ -362,6 +377,7 @@
   /// The matrix to apply
   Matrix4 transform;
 
+  @override
   void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
     Matrix4 offsetTransform = new Matrix4.identity();
     offsetTransform.translate(offset.dx + layerOffset.dx, offset.dy + layerOffset.dy);
@@ -370,6 +386,7 @@
     builder.pop();
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('transform:');
@@ -387,12 +404,14 @@
   /// transparent and 255 is fully opaque.
   int alpha;
 
+  @override
   void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
     builder.pushOpacity(alpha);
     addChildrenToScene(builder, layerOffset);
     builder.pop();
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('alpha: $alpha');
@@ -412,12 +431,14 @@
   /// The tranfer mode to apply when blending the shader with the children.
   TransferMode transferMode;
 
+  @override
   void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
     builder.pushShaderMask(shader, maskRect.shift(layerOffset), transferMode);
     addChildrenToScene(builder, layerOffset);
     builder.pop();
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('shader: $shader');
diff --git a/packages/flutter/lib/src/rendering/list.dart b/packages/flutter/lib/src/rendering/list.dart
index 2e04d1c..abea020 100644
--- a/packages/flutter/lib/src/rendering/list.dart
+++ b/packages/flutter/lib/src/rendering/list.dart
@@ -54,6 +54,7 @@
     markNeedsLayout();
   }
 
+  @override
   void setupParentData(RenderBox child) {
     if (child.parentData is! ListParentData)
       child.parentData = new ListParentData();
@@ -90,10 +91,12 @@
     }
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     return _getIntrinsicWidth(constraints);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     return _getIntrinsicWidth(constraints);
   }
@@ -108,14 +111,17 @@
     }
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     return _getIntrinsicHeight(constraints);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     return _getIntrinsicHeight(constraints);
   }
 
+  @override
   void performLayout() {
     switch (mainAxis) {
       case Axis.vertical:
diff --git a/packages/flutter/lib/src/rendering/object.dart b/packages/flutter/lib/src/rendering/object.dart
index 56b650b..266bc2a 100644
--- a/packages/flutter/lib/src/rendering/object.dart
+++ b/packages/flutter/lib/src/rendering/object.dart
@@ -30,6 +30,7 @@
   /// Called when the RenderObject is removed from the tree.
   void detach() { }
 
+  @override
   String toString() => '<none>';
 }
 
@@ -469,6 +470,7 @@
   bool _debugCompiled = false;
   Iterable<SemanticsNode> compile({ _SemanticsGeometry geometry, SemanticsNode currentSemantics, SemanticsNode parentSemantics });
 
+  @override
   String toString() => '$runtimeType($hashCode)';
 }
 
@@ -482,6 +484,7 @@
     assert(owner._semantics != null);
   }
 
+  @override
   Iterable<SemanticsNode> compile({ _SemanticsGeometry geometry, SemanticsNode currentSemantics, SemanticsNode parentSemantics }) sync* {
     assert(!_debugCompiled);
     assert(() { _debugCompiled = true; return true; });
@@ -506,6 +509,7 @@
 
   bool get haveConcreteNode => true;
 
+  @override
   Iterable<SemanticsNode> compile({ _SemanticsGeometry geometry, SemanticsNode currentSemantics, SemanticsNode parentSemantics }) sync* {
     assert(!_debugCompiled);
     assert(() { _debugCompiled = true; return true; });
@@ -537,6 +541,7 @@
     Iterable<_SemanticsFragment> children
   }) : super(owner: owner, annotators: annotators, children: children);
 
+  @override
   SemanticsNode establishSemanticsNode(_SemanticsGeometry geometry, SemanticsNode currentSemantics, SemanticsNode parentSemantics) {
     assert(_ancestorChain.length == 1);
     assert(geometry == null);
@@ -552,6 +557,7 @@
     return node;
   }
 
+  @override
   _SemanticsGeometry createSemanticsGeometryForChild(_SemanticsGeometry geometry) {
     return new _SemanticsGeometry();
   }
@@ -564,6 +570,7 @@
     Iterable<_SemanticsFragment> children
   }) : super(owner: owner, annotators: annotators, children: children);
 
+  @override
   SemanticsNode establishSemanticsNode(_SemanticsGeometry geometry, SemanticsNode currentSemantics, SemanticsNode parentSemantics) {
     owner._semantics ??= new SemanticsNode(
       handler: owner is SemanticActionHandler ? owner as dynamic : null
@@ -578,6 +585,7 @@
     return node;
   }
 
+  @override
   _SemanticsGeometry createSemanticsGeometryForChild(_SemanticsGeometry geometry) {
     return new _SemanticsGeometry.withClipFrom(geometry);
   }
@@ -590,9 +598,11 @@
     Iterable<_SemanticsFragment> children
   }) : super(owner: owner, annotators: annotators, children: children);
 
+  @override
   bool get haveConcreteNode => _haveConcreteNode;
   bool _haveConcreteNode;
 
+  @override
   SemanticsNode establishSemanticsNode(_SemanticsGeometry geometry, SemanticsNode currentSemantics, SemanticsNode parentSemantics) {
     SemanticsNode node;
     assert(_haveConcreteNode == null);
@@ -616,6 +626,7 @@
     return node;
   }
 
+  @override
   _SemanticsGeometry createSemanticsGeometryForChild(_SemanticsGeometry geometry) {
     if (haveConcreteNode)
       return new _SemanticsGeometry.withClipFrom(geometry);
@@ -632,6 +643,7 @@
     assert(children.length > 1);
   }
 
+  @override
   Iterable<SemanticsNode> compile({ _SemanticsGeometry geometry, SemanticsNode currentSemantics, SemanticsNode parentSemantics }) sync* {
     assert(!_debugCompiled);
     assert(() { _debugCompiled = true; return true; });
@@ -691,6 +703,7 @@
   ///
   /// Only for use by subclasses when changing their child lists. Calling this
   /// in other cases will lead to an inconsistent tree and probably cause crashes.
+  @override
   void adoptChild(RenderObject child) {
     assert(debugCanPerformMutations);
     assert(child != null);
@@ -704,6 +717,7 @@
   ///
   /// Only for use by subclasses when changing their child lists. Calling this
   /// in other cases will lead to an inconsistent tree and probably cause crashes.
+  @override
   void dropChild(RenderObject child) {
     assert(debugCanPerformMutations);
     assert(child != null);
@@ -1651,6 +1665,7 @@
   // EVENTS
 
   /// Override this function to handle pointer events that hit this render object.
+  @override
   void handleEvent(PointerEvent event, HitTestEntry entry) { }
 
 
@@ -1675,6 +1690,7 @@
 
 
   /// Returns a human understandable name.
+  @override
   String toString() {
     String header = '$runtimeType';
     if (_relayoutSubtreeRoot != null && _relayoutSubtreeRoot != this) {
@@ -1759,20 +1775,28 @@
     if (_child != null)
       adoptChild(_child);
   }
+
+  @override
   void attach() {
     super.attach();
     if (_child != null)
       _child.attach();
   }
+
+  @override
   void detach() {
     super.detach();
     if (_child != null)
       _child.detach();
   }
+
+  @override
   void visitChildren(RenderObjectVisitor visitor) {
     if (_child != null)
       visitor(_child);
   }
+
+  @override
   String debugDescribeChildren(String prefix) {
     if (child != null)
       return '$prefix \u2502\n${child.toStringDeep('$prefix \u2514\u2500child: ', '$prefix  ')}';
@@ -1788,6 +1812,7 @@
   ChildType nextSibling;
 
   /// Clear the sibling pointers.
+  @override
   void detach() {
     super.detach();
     if (previousSibling != null) {
@@ -1971,6 +1996,7 @@
     markNeedsLayout();
   }
 
+  @override
   void attach() {
     super.attach();
     ChildType child = _firstChild;
@@ -1981,6 +2007,7 @@
     }
   }
 
+  @override
   void detach() {
     super.detach();
     ChildType child = _firstChild;
@@ -1991,6 +2018,7 @@
     }
   }
 
+  @override
   void redepthChildren() {
     ChildType child = _firstChild;
     while (child != null) {
@@ -2000,6 +2028,7 @@
     }
   }
 
+  @override
   void visitChildren(RenderObjectVisitor visitor) {
     ChildType child = _firstChild;
     while (child != null) {
@@ -2021,6 +2050,7 @@
     return childParentData.nextSibling;
   }
 
+  @override
   String debugDescribeChildren(String prefix) {
     String result = '$prefix \u2502\n';
     if (_firstChild != null) {
@@ -2044,6 +2074,9 @@
 /// Error thrown when the rendering library encounters a contract violation.
 class RenderingError extends AssertionError {
   RenderingError(this.message);
+
   final String message;
+
+  @override
   String toString() => message;
 }
diff --git a/packages/flutter/lib/src/rendering/overflow.dart b/packages/flutter/lib/src/rendering/overflow.dart
index 2d129c4..9222496 100644
--- a/packages/flutter/lib/src/rendering/overflow.dart
+++ b/packages/flutter/lib/src/rendering/overflow.dart
@@ -28,42 +28,50 @@
     markNeedsLayout();
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return constraints.constrainWidth(_requestedSize.width);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return constraints.constrainWidth(_requestedSize.width);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return constraints.constrainHeight(_requestedSize.height);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return constraints.constrainHeight(_requestedSize.height);
   }
 
+  @override
   double computeDistanceToActualBaseline(TextBaseline baseline) {
     if (child != null)
       return child.getDistanceToActualBaseline(baseline);
     return super.computeDistanceToActualBaseline(baseline);
   }
 
+  @override
   void performLayout() {
     size = constraints.constrain(_requestedSize);
     if (child != null)
       child.layout(constraints);
   }
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     return child?.hitTest(result, position: position) ?? false;
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (child != null)
       context.paintChild(child, offset);
@@ -78,23 +86,38 @@
     this.child = child;
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) => constraints.minWidth;
+
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) => constraints.minWidth;
+
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) => constraints.minHeight;
+
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) => constraints.minHeight;
 
+  @override
   bool get sizedByParent => true;
 
+  @override
   void performResize() {
     size = constraints.smallest;
   }
 
+  @override
   void performLayout() {
     if (child != null)
       child.layout(constraints);
   }
 
+  @override
   bool hitTest(HitTestResult result, { Point position }) => false;
+
+  @override
   void paint(PaintingContext context, Offset offset) { }
+
+  @override
   void visitChildrenForSemantics(RenderObjectVisitor visitor) { }
 }
diff --git a/packages/flutter/lib/src/rendering/paragraph.dart b/packages/flutter/lib/src/rendering/paragraph.dart
index b158b53..c3ae986 100644
--- a/packages/flutter/lib/src/rendering/paragraph.dart
+++ b/packages/flutter/lib/src/rendering/paragraph.dart
@@ -52,11 +52,13 @@
     _constraintsForCurrentLayout = constraints;
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     _layoutText(constraints);
     return constraints.constrainWidth(_textPainter.minIntrinsicWidth);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     _layoutText(constraints);
     return constraints.constrainWidth(_textPainter.maxIntrinsicWidth);
@@ -67,24 +69,29 @@
     return constraints.constrainHeight(_textPainter.size.height);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return _getIntrinsicHeight(constraints);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return _getIntrinsicHeight(constraints);
   }
 
+  @override
   double computeDistanceToActualBaseline(TextBaseline baseline) {
     assert(!needsLayout);
     _layoutText(constraints);
     return _textPainter.computeDistanceToActualBaseline(baseline);
   }
 
+  @override
   bool hitTestSelf(Point position) => true;
 
+  @override
   void handleEvent(PointerEvent event, BoxHitTestEntry entry) {
     if (event is! PointerDownEvent)
       return;
@@ -95,11 +102,13 @@
     span?.recognizer?.addPointer(event);
   }
 
+  @override
   void performLayout() {
     _layoutText(constraints);
     size = constraints.constrain(_textPainter.size);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     // Ideally we could compute the min/max intrinsic width/height with a
     // non-destructive operation. However, currently, computing these values
@@ -112,12 +121,14 @@
     _textPainter.paint(context.canvas, offset);
   }
 
+  @override
   Iterable<SemanticAnnotator> getSemanticAnnotators() sync* {
     yield (SemanticsNode node) {
       node.label = text.toPlainText();
     };
   }
 
+  @override
   String debugDescribeChildren(String prefix) {
     return '$prefix \u2558\u2550\u2566\u2550\u2550 text \u2550\u2550\u2550\n'
            '${text.toString("$prefix   \u2551 ")}\n'
diff --git a/packages/flutter/lib/src/rendering/performance_overlay.dart b/packages/flutter/lib/src/rendering/performance_overlay.dart
index 700ea10..b70d371 100644
--- a/packages/flutter/lib/src/rendering/performance_overlay.dart
+++ b/packages/flutter/lib/src/rendering/performance_overlay.dart
@@ -66,13 +66,18 @@
     markNeedsPaint();
   }
 
+  @override
   bool get sizedByParent => true;
+
+  @override
   bool get alwaysNeedsCompositing => true;
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     return constraints.constrainWidth(0.0);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     return constraints.constrainWidth(0.0);
   }
@@ -89,18 +94,22 @@
     return result;
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     return constraints.constrainHeight(intrinsicHeight);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     return constraints.constrainHeight(intrinsicHeight);
   }
 
+  @override
   void performResize() {
     size = constraints.constrain(new Size(double.INFINITY, intrinsicHeight));
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     assert(needsCompositing);
     context.pushPerformanceOverlay(offset, optionsMask, rasterizerThreshold, size);
diff --git a/packages/flutter/lib/src/rendering/proxy_box.dart b/packages/flutter/lib/src/rendering/proxy_box.dart
index 70d04cb..c9e354d 100644
--- a/packages/flutter/lib/src/rendering/proxy_box.dart
+++ b/packages/flutter/lib/src/rendering/proxy_box.dart
@@ -34,6 +34,7 @@
     this.child = child;
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -41,6 +42,7 @@
     return super.getMinIntrinsicWidth(constraints);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -48,6 +50,7 @@
     return super.getMaxIntrinsicWidth(constraints);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -55,6 +58,7 @@
     return super.getMinIntrinsicHeight(constraints);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -62,12 +66,14 @@
     return super.getMaxIntrinsicHeight(constraints);
   }
 
+  @override
   double computeDistanceToActualBaseline(TextBaseline baseline) {
     if (child != null)
       return child.getDistanceToActualBaseline(baseline);
     return super.computeDistanceToActualBaseline(baseline);
   }
 
+  @override
   void performLayout() {
     if (child != null) {
       child.layout(constraints, parentUsesSize: true);
@@ -77,10 +83,12 @@
     }
   }
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     return child?.hitTest(result, position: position) ?? false;
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (child != null)
       context.paintChild(child, offset);
@@ -113,6 +121,7 @@
 
   HitTestBehavior behavior;
 
+  @override
   bool hitTest(HitTestResult result, { Point position }) {
     bool hitTarget = false;
     if (position.x >= 0.0 && position.x < size.width &&
@@ -124,8 +133,10 @@
     return hitTarget;
   }
 
+  @override
   bool hitTestSelf(Point position) => behavior == HitTestBehavior.opaque;
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     switch (behavior) {
@@ -173,6 +184,7 @@
     markNeedsLayout();
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -180,6 +192,7 @@
     return _additionalConstraints.enforce(constraints).constrainWidth(0.0);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -187,6 +200,7 @@
     return _additionalConstraints.enforce(constraints).constrainWidth(0.0);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -194,6 +208,7 @@
     return _additionalConstraints.enforce(constraints).constrainHeight(0.0);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -201,6 +216,7 @@
     return _additionalConstraints.enforce(constraints).constrainHeight(0.0);
   }
 
+  @override
   void performLayout() {
     if (child != null) {
       child.layout(_additionalConstraints.enforce(constraints), parentUsesSize: true);
@@ -210,6 +226,7 @@
     }
   }
 
+  @override
   void debugPaintSize(PaintingContext context, Offset offset) {
     super.debugPaintSize(context, offset);
     assert(() {
@@ -223,6 +240,7 @@
     });
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('additionalConstraints: $additionalConstraints');
@@ -301,6 +319,7 @@
     );
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -308,6 +327,7 @@
     return _getInnerConstraints(constraints).constrainWidth(0.0);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -315,6 +335,7 @@
     return _getInnerConstraints(constraints).constrainWidth(0.0);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -322,6 +343,7 @@
     return _getInnerConstraints(constraints).constrainHeight(0.0);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -329,6 +351,7 @@
     return _getInnerConstraints(constraints).constrainHeight(0.0);
   }
 
+  @override
   void performLayout() {
     if (child != null) {
       child.layout(_getInnerConstraints(constraints), parentUsesSize: true);
@@ -338,6 +361,7 @@
     }
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('widthFactor: ${_widthFactor ?? "pass-through"}');
@@ -393,18 +417,22 @@
     markNeedsLayout();
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     return constraints.minWidth;
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     return constraints.maxWidth;
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     return constraints.minHeight;
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     return constraints.maxHeight;
   }
@@ -468,12 +496,14 @@
     return constraints.constrain(new Size(width, height));
   }
 
+  @override
   void performLayout() {
     size = _applyAspectRatio(constraints);
     if (child != null)
       child.layout(new BoxConstraints.tight(size));
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('aspectRatio: $aspectRatio');
@@ -535,11 +565,13 @@
     return constraints.tighten(width: _applyStep(width, _stepWidth));
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return getMaxIntrinsicWidth(constraints);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child == null)
@@ -548,6 +580,7 @@
     return constraints.constrainWidth(_applyStep(childResult, _stepWidth));
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child == null)
@@ -556,6 +589,7 @@
     return constraints.constrainHeight(_applyStep(childResult, _stepHeight));
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child == null)
@@ -564,6 +598,7 @@
     return constraints.constrainHeight(_applyStep(childResult, _stepHeight));
   }
 
+  @override
   void performLayout() {
     if (child != null) {
       BoxConstraints childConstraints = _getInnerConstraints(constraints);
@@ -576,6 +611,7 @@
     }
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('stepWidth: $stepWidth');
@@ -605,6 +641,7 @@
     return constraints.tighten(height: height);
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child == null)
@@ -612,6 +649,7 @@
     return child.getMinIntrinsicWidth(_getInnerConstraints(constraints));
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child == null)
@@ -619,11 +657,13 @@
     return child.getMaxIntrinsicWidth(_getInnerConstraints(constraints));
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return getMaxIntrinsicHeight(constraints);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child == null)
@@ -631,6 +671,7 @@
     return child.getMaxIntrinsicHeight(constraints);
   }
 
+  @override
   void performLayout() {
     if (child != null) {
       child.layout(_getInnerConstraints(constraints), parentUsesSize: true);
@@ -657,6 +698,7 @@
     assert(opacity >= 0.0 && opacity <= 1.0);
   }
 
+  @override
   bool get alwaysNeedsCompositing => child != null && (_alpha != 0 && _alpha != 255);
 
   /// The fraction to scale the child's alpha value.
@@ -679,6 +721,7 @@
 
   int _alpha;
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (child != null) {
       if (_alpha == 0)
@@ -692,11 +735,13 @@
     }
   }
 
+  @override
   void visitChildrenForSemantics(RenderObjectVisitor visitor) {
     if (child != null && _alpha != 0)
       visitor(child);
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('opacity: ${opacity.toStringAsFixed(1)}');
@@ -729,8 +774,10 @@
     markNeedsPaint();
   }
 
+  @override
   bool get alwaysNeedsCompositing => child != null;
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (child != null) {
       assert(needsCompositing);
@@ -788,6 +835,7 @@
   T get _defaultClip;
   T get _clip => _clipper?.getClip(size) ?? _defaultClip;
 
+  @override
   Rect describeApproximatePaintClip(RenderObject child) => _clipper?.getApproximateClipRect(size) ?? Point.origin & size;
 }
 
@@ -800,8 +848,10 @@
     CustomClipper<Rect> clipper
   }) : super(child: child, clipper: clipper);
 
+  @override
   Rect get _defaultClip => Point.origin & size;
 
+  @override
   bool hitTest(HitTestResult result, { Point position }) {
     if (_clipper != null) {
       Rect clipRect = _clip;
@@ -811,6 +861,7 @@
     return super.hitTest(result, position: position);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (child != null)
       context.pushClipRect(needsCompositing, offset, _clip, super.paint);
@@ -863,6 +914,7 @@
   // TODO(ianh): either convert this to the CustomClipper world, or
   // TODO(ianh): implement describeApproximatePaintClip for this class
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (child != null) {
       Rect rect = Point.origin & size;
@@ -893,8 +945,10 @@
     return _cachedPath;
   }
 
+  @override
   Rect get _defaultClip => Point.origin & size;
 
+  @override
   bool hitTest(HitTestResult result, { Point position }) {
     Rect clipBounds = _clip;
     Point center = clipBounds.center;
@@ -907,6 +961,7 @@
     return super.hitTest(result, position: position);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (child != null) {
       Rect clipBounds = _clip;
@@ -979,20 +1034,24 @@
       _decoration.removeChangeListener(markNeedsPaint);
   }
 
+  @override
   void attach() {
     super.attach();
     _addListenerIfNeeded();
   }
 
+  @override
   void detach() {
     _removeListenerIfNeeded();
     super.detach();
   }
 
+  @override
   bool hitTestSelf(Point position) {
     return _decoration.hitTest(size, position);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     assert(size.width != null);
     assert(size.height != null);
@@ -1004,6 +1063,7 @@
       _painter.paint(context.canvas, offset & size);
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('decoration:');
@@ -1130,6 +1190,7 @@
     return result;
   }
 
+  @override
   bool hitTest(HitTestResult result, { Point position }) {
     if (transformHitTests) {
       Matrix4 inverse;
@@ -1147,6 +1208,7 @@
     return super.hitTest(result, position: position);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (child != null) {
       Matrix4 transform = _effectiveTransform;
@@ -1158,11 +1220,13 @@
     }
   }
 
+  @override
   void applyPaintTransform(RenderBox child, Matrix4 transform) {
     transform.multiply(_effectiveTransform);
     super.applyPaintTransform(child, transform);
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('transform matrix:');
@@ -1206,6 +1270,7 @@
   /// always honor the transformation, regardless of the value of this property.
   bool transformHitTests;
 
+  @override
   bool hitTest(HitTestResult result, { Point position }) {
     assert(!needsLayout);
     if (transformHitTests)
@@ -1213,17 +1278,20 @@
     return super.hitTest(result, position: position);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     assert(!needsLayout);
     if (child != null)
       super.paint(context, offset + translation.alongSize(size));
   }
 
+  @override
   void applyPaintTransform(RenderBox child, Matrix4 transform) {
     transform.translate(translation.dx * size.width, translation.dy * size.height);
     super.applyPaintTransform(child, transform);
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('translation: $translation');
@@ -1290,12 +1358,14 @@
     }
   }
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     if (_foregroundPainter != null && (_foregroundPainter.hitTest(position) ?? false))
       return true;
     return super.hitTestChildren(result, position: position);
   }
 
+  @override
   bool hitTestSelf(Point position) {
     return _painter != null && (_painter.hitTest(position) ?? true);
   }
@@ -1340,6 +1410,7 @@
     canvas.restore();
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (_painter != null)
       _paintWithPainter(context.canvas, offset, _painter);
@@ -1370,6 +1441,7 @@
   PointerUpEventListener onPointerUp;
   PointerCancelEventListener onPointerCancel;
 
+  @override
   void handleEvent(PointerEvent event, HitTestEntry entry) {
     if (onPointerDown != null && event is PointerDownEvent)
       return onPointerDown(event);
@@ -1381,6 +1453,7 @@
       return onPointerCancel(event);
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     List<String> listeners = <String>[];
@@ -1409,6 +1482,8 @@
 /// for the surround tree.
 class RenderRepaintBoundary extends RenderProxyBox {
   RenderRepaintBoundary({ RenderBox child }) : super(child);
+
+  @override
   bool get isRepaintBoundary => true;
 }
 
@@ -1455,6 +1530,7 @@
 
   bool get _effectiveIgnoringSemantics => ignoringSemantics == null ? ignoring : ignoringSemantics;
 
+  @override
   bool hitTest(HitTestResult result, { Point position }) {
     return ignoring ? false : super.hitTest(result, position: position);
   }
@@ -1462,11 +1538,13 @@
   // TODO(ianh): figure out a way to still include labels and flags in
   // descendants, just make them non-interactive, even when
   // _effectiveIgnoringSemantics is true
+  @override
   void visitChildrenForSemantics(RenderObjectVisitor visitor) {
     if (child != null && !_effectiveIgnoringSemantics)
       visitor(child);
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('ignoring: $ignoring');
@@ -1485,6 +1563,7 @@
   /// Opaque meta data ignored by the render tree
   dynamic metaData;
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('metaData: $metaData');
@@ -1562,6 +1641,7 @@
   /// leftwards drag.
   double scrollFactor;
 
+  @override
   bool get hasSemantics {
     return onTap != null
         || onLongPress != null
@@ -1569,6 +1649,7 @@
         || onVerticalDragUpdate != null;
   }
 
+  @override
   Iterable<SemanticAnnotator> getSemanticAnnotators() sync* {
     if (hasSemantics) {
       yield (SemanticsNode semantics) {
@@ -1580,31 +1661,37 @@
     }
   }
 
+  @override
   void handleSemanticTap() {
     if (onTap != null)
       onTap();
   }
 
+  @override
   void handleSemanticLongPress() {
     if (onLongPress != null)
       onLongPress();
   }
 
+  @override
   void handleSemanticScrollLeft() {
     if (onHorizontalDragUpdate != null)
       onHorizontalDragUpdate(size.width * -scrollFactor);
   }
 
+  @override
   void handleSemanticScrollRight() {
     if (onHorizontalDragUpdate != null)
       onHorizontalDragUpdate(size.width * scrollFactor);
   }
 
+  @override
   void handleSemanticScrollUp() {
     if (onVerticalDragUpdate != null)
       onVerticalDragUpdate(size.height * -scrollFactor);
   }
 
+  @override
   void handleSemanticScrollDown() {
     if (onVerticalDragUpdate != null)
       onVerticalDragUpdate(size.height * scrollFactor);
@@ -1668,8 +1755,10 @@
     markNeedsSemanticsUpdate(onlyChanges: (value != null) == hadValue);
   }
 
+  @override
   bool get hasSemantics => container;
 
+  @override
   Iterable<SemanticAnnotator> getSemanticAnnotators() sync* {
     if (checked != null) {
       yield (SemanticsNode semantics) {
@@ -1694,6 +1783,8 @@
 /// and the gesture detector that goes with them.
 class RenderMergeSemantics extends RenderProxyBox {
   RenderMergeSemantics({ RenderBox child }) : super(child);
+
+  @override
   Iterable<SemanticAnnotator> getSemanticAnnotators() sync* {
     yield (SemanticsNode node) { node.mergeAllDescendantsIntoThisNode = true; };
   }
@@ -1705,5 +1796,7 @@
 /// to it (e.g. text included only for the visual effect).
 class RenderExcludeSemantics extends RenderProxyBox {
   RenderExcludeSemantics({ RenderBox child }) : super(child);
+
+  @override
   void visitChildrenForSemantics(RenderObjectVisitor visitor) { }
 }
diff --git a/packages/flutter/lib/src/rendering/rotated_box.dart b/packages/flutter/lib/src/rendering/rotated_box.dart
index 18a151d..059362f 100644
--- a/packages/flutter/lib/src/rendering/rotated_box.dart
+++ b/packages/flutter/lib/src/rendering/rotated_box.dart
@@ -39,6 +39,7 @@
 
   bool get _isVertical => quarterTurns % 2 == 1;
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -46,6 +47,7 @@
     return super.getMinIntrinsicWidth(constraints);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -53,6 +55,7 @@
     return super.getMaxIntrinsicWidth(constraints);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -60,6 +63,7 @@
     return super.getMinIntrinsicHeight(constraints);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -69,6 +73,7 @@
 
   Matrix4 _paintTransform;
 
+  @override
   void performLayout() {
     _paintTransform = null;
     if (child != null) {
@@ -83,6 +88,7 @@
     }
   }
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     assert(_paintTransform != null || needsLayout || child == null);
     if (child == null || _paintTransform == null)
@@ -97,11 +103,13 @@
     context.paintChild(child, offset);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (child != null)
       context.pushTransform(needsCompositing, offset, _paintTransform, _paintChild);
   }
 
+  @override
   void applyPaintTransform(RenderBox child, Matrix4 transform) {
     if (_paintTransform != null)
       transform.multiply(_paintTransform);
diff --git a/packages/flutter/lib/src/rendering/semantics.dart b/packages/flutter/lib/src/rendering/semantics.dart
index 1d9c156..bbf047f 100644
--- a/packages/flutter/lib/src/rendering/semantics.dart
+++ b/packages/flutter/lib/src/rendering/semantics.dart
@@ -237,7 +237,10 @@
       _markDirty();
   }
 
+  @override
   SemanticsNode get parent => super.parent;
+
+  @override
   void redepthChildren() {
     if (_children != null) {
       for (SemanticsNode child in _children)
@@ -261,6 +264,7 @@
   static Map<int, SemanticsNode> _nodes = <int, SemanticsNode>{};
   static Set<SemanticsNode> _detachedNodes = new Set<SemanticsNode>();
 
+  @override
   void attach() {
     super.attach();
     assert(!_nodes.containsKey(_id));
@@ -273,6 +277,8 @@
         child.attach();
     }
   }
+
+  @override
   void detach() {
     super.detach();
     assert(_nodes.containsKey(_id));
@@ -440,6 +446,7 @@
     return result._actionHandler;
   }
 
+  @override
   String toString() {
     return '$runtimeType($_id'
              '${_dirty ? " (${ _dirtyNodes.contains(this) ? 'dirty' : 'STALE' })" : ""}'
@@ -469,24 +476,37 @@
 }
 
 class SemanticsServer extends mojom.SemanticsServer {
+  @override
   void addSemanticsListener(mojom.SemanticsListenerProxy listener) {
     SemanticsNode.addListener(listener.ptr);
   }
+
+  @override
   void tap(int nodeID) {
     SemanticsNode.getSemanticActionHandlerForId(nodeID, neededFlag: _SemanticFlags.canBeTapped)?.handleSemanticTap();
   }
+
+  @override
   void longPress(int nodeID) {
     SemanticsNode.getSemanticActionHandlerForId(nodeID, neededFlag: _SemanticFlags.canBeLongPressed)?.handleSemanticLongPress();
   }
+
+  @override
   void scrollLeft(int nodeID) {
     SemanticsNode.getSemanticActionHandlerForId(nodeID, neededFlag: _SemanticFlags.canBeScrolledHorizontally)?.handleSemanticScrollLeft();
   }
+
+  @override
   void scrollRight(int nodeID) {
     SemanticsNode.getSemanticActionHandlerForId(nodeID, neededFlag: _SemanticFlags.canBeScrolledHorizontally)?.handleSemanticScrollRight();
   }
+
+  @override
   void scrollUp(int nodeID) {
     SemanticsNode.getSemanticActionHandlerForId(nodeID, neededFlag: _SemanticFlags.canBeScrolledVertically)?.handleSemanticScrollUp();
   }
+
+  @override
   void scrollDown(int nodeID) {
     SemanticsNode.getSemanticActionHandlerForId(nodeID, neededFlag: _SemanticFlags.canBeScrolledVertically)?.handleSemanticScrollDown();
   }
diff --git a/packages/flutter/lib/src/rendering/shifted_box.dart b/packages/flutter/lib/src/rendering/shifted_box.dart
index 744b10c..ec37a33 100644
--- a/packages/flutter/lib/src/rendering/shifted_box.dart
+++ b/packages/flutter/lib/src/rendering/shifted_box.dart
@@ -15,6 +15,7 @@
     this.child = child;
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -22,6 +23,7 @@
     return super.getMinIntrinsicWidth(constraints);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -29,6 +31,7 @@
     return super.getMaxIntrinsicWidth(constraints);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -36,6 +39,7 @@
     return super.getMinIntrinsicHeight(constraints);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -43,6 +47,7 @@
     return super.getMaxIntrinsicHeight(constraints);
   }
 
+  @override
   double computeDistanceToActualBaseline(TextBaseline baseline) {
     double result;
     if (child != null) {
@@ -57,6 +62,7 @@
     return result;
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (child != null) {
       final BoxParentData childParentData = child.parentData;
@@ -64,6 +70,7 @@
     }
   }
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     if (child != null) {
       final BoxParentData childParentData = child.parentData;
@@ -103,6 +110,7 @@
     markNeedsLayout();
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     double totalPadding = padding.left + padding.right;
@@ -111,6 +119,7 @@
     return constraints.constrainWidth(totalPadding);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     double totalPadding = padding.left + padding.right;
@@ -119,6 +128,7 @@
     return constraints.constrainWidth(totalPadding);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     double totalPadding = padding.top + padding.bottom;
@@ -127,6 +137,7 @@
     return constraints.constrainHeight(totalPadding);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     double totalPadding = padding.top + padding.bottom;
@@ -135,6 +146,7 @@
     return constraints.constrainHeight(totalPadding);
   }
 
+  @override
   void performLayout() {
     assert(padding != null);
     if (child == null) {
@@ -154,6 +166,7 @@
     ));
   }
 
+  @override
   void debugPaintSize(PaintingContext context, Offset offset) {
     super.debugPaintSize(context, offset);
     assert(() {
@@ -198,6 +211,7 @@
     });
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('padding: $padding');
@@ -274,6 +288,7 @@
     markNeedsLayout();
   }
 
+  @override
   void performLayout() {
     final bool shrinkWrapWidth = _widthFactor != null || constraints.maxWidth == double.INFINITY;
     final bool shrinkWrapHeight = _heightFactor != null || constraints.maxHeight == double.INFINITY;
@@ -290,6 +305,7 @@
     }
   }
 
+  @override
   void debugPaintSize(PaintingContext context, Offset offset) {
     super.debugPaintSize(context, offset);
     assert(() {
@@ -347,6 +363,7 @@
     });
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('alignment: $alignment');
@@ -461,32 +478,39 @@
     );
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return constraints.minWidth;
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return constraints.minWidth;
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return constraints.minHeight;
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return constraints.minHeight;
   }
 
+  @override
   bool get sizedByParent => true;
 
+  @override
   void performResize() {
     size = constraints.biggest;
   }
 
+  @override
   void performLayout() {
     if (child != null) {
       child.layout(_getInnerConstraints(constraints), parentUsesSize: true);
@@ -495,6 +519,7 @@
     }
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('minWidth: ${minWidth ?? "use parent minWidth constraint"}');
@@ -550,32 +575,39 @@
     return constraints.constrain(_delegate.getSize(constraints));
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return _getSize(constraints).width;
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return _getSize(constraints).width;
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return _getSize(constraints).height;
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     return _getSize(constraints).height;
   }
 
+  @override
   bool get sizedByParent => true;
 
+  @override
   void performResize() {
     size = _getSize(constraints);
   }
 
+  @override
   void performLayout() {
     if (child != null) {
       BoxConstraints childConstraints = delegate.getConstraintsForChild(constraints);
@@ -624,6 +656,7 @@
     markNeedsLayout();
   }
 
+  @override
   void performLayout() {
     if (child != null) {
       child.layout(constraints.loosen(), parentUsesSize: true);
@@ -636,6 +669,7 @@
     }
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('baseline: $baseline');
diff --git a/packages/flutter/lib/src/rendering/stack.dart b/packages/flutter/lib/src/rendering/stack.dart
index 8bf2f3e..d360f5c 100644
--- a/packages/flutter/lib/src/rendering/stack.dart
+++ b/packages/flutter/lib/src/rendering/stack.dart
@@ -114,6 +114,7 @@
     );
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -126,8 +127,10 @@
            bottom == typedOther.bottom;
   }
 
+  @override
   int get hashCode => hashValues(left, top, right, bottom);
 
+  @override
   String toString() => "RelativeRect.fromLTRB(${left?.toStringAsFixed(1)}, ${top?.toStringAsFixed(1)}, ${right?.toStringAsFixed(1)}, ${bottom?.toStringAsFixed(1)})";
 }
 
@@ -172,6 +175,7 @@
   /// children in the stack.
   bool get isPositioned => top != null || right != null || bottom != null || left != null || width != null || height != null;
 
+  @override
   String toString() {
     List<String> values = <String>[];
     if (top != null)
@@ -205,6 +209,7 @@
 
   bool _hasVisualOverflow = false;
 
+  @override
   void setupParentData(RenderBox child) {
     if (child.parentData is! StackParentData)
       child.parentData = new StackParentData();
@@ -219,6 +224,7 @@
     }
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     double width = constraints.minWidth;
@@ -234,6 +240,7 @@
     return width;
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     bool hasNonPositionedChildren = false;
@@ -254,6 +261,7 @@
     return width;
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     double height = constraints.minHeight;
@@ -269,6 +277,7 @@
     return height;
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     bool hasNonPositionedChildren = false;
@@ -289,10 +298,12 @@
     return height;
   }
 
+  @override
   double computeDistanceToActualBaseline(TextBaseline baseline) {
     return defaultComputeDistanceToHighestActualBaseline(baseline);
   }
 
+  @override
   void performLayout() {
     _hasVisualOverflow = false;
     bool hasNonPositionedChildren = false;
@@ -375,12 +386,14 @@
     }
   }
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     return defaultHitTestChildren(result, position: position);
   }
 
   void paintStack(PaintingContext context, Offset offset);
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (_hasVisualOverflow) {
       context.pushClipRect(needsCompositing, offset, Point.origin & size, paintStack);
@@ -389,6 +402,7 @@
     }
   }
 
+  @override
   Rect describeApproximatePaintClip(RenderObject child) => _hasVisualOverflow ? Point.origin & size : null;
 }
 
@@ -431,6 +445,7 @@
    alignment: alignment
  );
 
+  @override
   void paintStack(PaintingContext context, Offset offset) {
     defaultPaint(context, offset);
   }
@@ -476,6 +491,7 @@
     return child;
   }
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     if (firstChild == null)
       return false;
@@ -487,6 +503,7 @@
     return child.hitTest(result, position: transformed);
   }
 
+  @override
   void paintStack(PaintingContext context, Offset offset) {
     if (firstChild == null)
       return;
diff --git a/packages/flutter/lib/src/rendering/view.dart b/packages/flutter/lib/src/rendering/view.dart
index 9a982ad..df99ec1 100644
--- a/packages/flutter/lib/src/rendering/view.dart
+++ b/packages/flutter/lib/src/rendering/view.dart
@@ -26,6 +26,7 @@
   /// The orientation of the output surface (aspirational).
   final int orientation;
 
+  @override
   String toString() => '$size';
 }
 
@@ -77,12 +78,15 @@
 
   // We never call layout() on this class, so this should never get
   // checked. (This class is laid out using scheduleInitialLayout().)
+  @override
   void debugAssertDoesMeetConstraints() { assert(false); }
 
+  @override
   void performResize() {
     assert(false);
   }
 
+  @override
   void performLayout() {
     if (configuration.orientation != _orientation) {
       if (_orientation != null && child != null)
@@ -96,6 +100,7 @@
       child.layout(new BoxConstraints.tight(_size));
   }
 
+  @override
   void rotate({ int oldAngle, int newAngle, Duration time }) {
     assert(false); // nobody tells the screen to rotate, the whole rotate() dance is started from our performResize()
   }
@@ -107,8 +112,10 @@
     return true;
   }
 
+  @override
   bool get isRepaintBoundary => true;
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (child != null)
       context.paintChild(child, offset);
@@ -138,9 +145,13 @@
     }
   }
 
+  @override
   Rect get paintBounds => Point.origin & size;
+
+  @override
   Rect get semanticBounds => Point.origin & size;
 
+  @override
   void debugFillDescription(List<String> description) {
     // call to ${super.debugFillDescription(prefix)} is omitted because the root superclasses don't include any interesting information for this class
     description.add('window size: ${ui.window.size} (in device pixels)');
diff --git a/packages/flutter/lib/src/rendering/viewport.dart b/packages/flutter/lib/src/rendering/viewport.dart
index eb4b3f4..d56b230 100644
--- a/packages/flutter/lib/src/rendering/viewport.dart
+++ b/packages/flutter/lib/src/rendering/viewport.dart
@@ -55,6 +55,7 @@
     }
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -65,8 +66,10 @@
            containerSize == typedOther.containerSize;
   }
 
+  @override
   int get hashCode => hashValues(contentSize, containerSize);
 
+  @override
   String toString() => 'ViewportDimensions(container: $containerSize, content: $contentSize)';
 }
 
@@ -125,6 +128,7 @@
   /// If the viewport is scrollable in a particular direction (e.g., vertically),
   /// the child is given layout constraints that are fully unconstrainted in
   /// that direction (e.g., the child can be as tall as it wants).
+  @override
   Axis get mainAxis => _mainAxis;
   Axis _mainAxis;
   void set mainAxis(Axis value) {
@@ -163,11 +167,13 @@
     markNeedsPaint();
   }
 
+  @override
   void attach() {
     super.attach();
     _overlayPainter?.attach(this);
   }
 
+  @override
   void detach() {
     super.detach();
     _overlayPainter?.detach();
@@ -190,11 +196,13 @@
     );
   }
 
+  @override
   void applyPaintTransform(RenderBox child, Matrix4 transform) {
     final Offset effectivePaintOffset = _effectivePaintOffset;
     super.applyPaintTransform(child, transform.translate(effectivePaintOffset.dx, effectivePaintOffset.dy));
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('paintOffset: $paintOffset');
@@ -243,6 +251,7 @@
     return innerConstraints;
   }
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -250,6 +259,7 @@
     return super.getMinIntrinsicWidth(constraints);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -257,6 +267,7 @@
     return super.getMaxIntrinsicWidth(constraints);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -264,6 +275,7 @@
     return super.getMinIntrinsicHeight(constraints);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     assert(constraints.debugAssertIsNormalized);
     if (child != null)
@@ -276,6 +288,7 @@
   // scroll the RenderViewport, it would shift in its parent if the
   // parent was baseline-aligned, which makes no sense.
 
+  @override
   void performLayout() {
     ViewportDimensions oldDimensions = dimensions;
     if (child != null) {
@@ -298,6 +311,7 @@
     return paintOffset < Offset.zero || !(Offset.zero & size).contains((paintOffset & child.size).bottomRight);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     if (child != null) {
       final Offset effectivePaintOffset = _effectivePaintOffset;
@@ -315,12 +329,14 @@
     }
   }
 
+  @override
   Rect describeApproximatePaintClip(RenderObject child) {
     if (child != null && _shouldClipAtPaintOffset(_effectivePaintOffset))
       return Point.origin & size;
     return null;
   }
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     if (child != null) {
       assert(child.parentData is BoxParentData);
@@ -367,6 +383,7 @@
     markNeedsLayout();
   }
 
+  @override
   bool hitTestChildren(HitTestResult result, { Point position }) {
     return defaultHitTestChildren(result, position: position + -_effectivePaintOffset);
   }
@@ -376,12 +393,15 @@
     _overlayPainter?.paint(context, offset);
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     context.pushClipRect(needsCompositing, offset, Point.origin & size, _paintContents);
   }
 
+  @override
   Rect describeApproximatePaintClip(RenderObject child) => Point.origin & size;
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('virtual child count: $virtualChildCount');
diff --git a/packages/flutter/lib/src/scheduler/scheduler.dart b/packages/flutter/lib/src/scheduler/scheduler.dart
index 4a32f86..998c4a0 100644
--- a/packages/flutter/lib/src/scheduler/scheduler.dart
+++ b/packages/flutter/lib/src/scheduler/scheduler.dart
@@ -91,6 +91,7 @@
 abstract class Scheduler extends BindingBase {
   /// Requires clients to use the [scheduler] singleton
 
+  @override
   void initInstances() {
     super.initInstances();
     _instance = this;
diff --git a/packages/flutter/lib/src/services/assertions.dart b/packages/flutter/lib/src/services/assertions.dart
index 26aaab3..7d159e1 100644
--- a/packages/flutter/lib/src/services/assertions.dart
+++ b/packages/flutter/lib/src/services/assertions.dart
@@ -4,6 +4,9 @@
 
 class FlutterError extends AssertionError {
   FlutterError(this.message);
+
   final String message;
+
+  @override
   String toString() => message;
 }
diff --git a/packages/flutter/lib/src/services/asset_bundle.dart b/packages/flutter/lib/src/services/asset_bundle.dart
index 43df8f9..d6977cf 100644
--- a/packages/flutter/lib/src/services/asset_bundle.dart
+++ b/packages/flutter/lib/src/services/asset_bundle.dart
@@ -21,6 +21,8 @@
   ImageResource loadImage(String key);
   Future<String> loadString(String key);
   Future<core.MojoDataPipeConsumer> load(String key);
+
+  @override
   String toString() => '$runtimeType@$hashCode()';
 }
 
@@ -31,16 +33,20 @@
 
   String _urlFromKey(String key) => _baseUrl.resolve(key).toString();
 
+  @override
   Future<core.MojoDataPipeConsumer> load(String key) async {
     return (await fetchUrl(_urlFromKey(key))).body;
   }
 
+  @override
   ImageResource loadImage(String key) => imageCache.load(_urlFromKey(key));
 
+  @override
   Future<String> loadString(String key) async {
     return (await http.get(_urlFromKey(key))).body;
   }
 
+  @override
   String toString() => '$runtimeType@$hashCode($_baseUrl)';
 }
 
@@ -54,6 +60,7 @@
     return new ImageInfo(image: await decodeImageFromDataPipe(await load(key)));
   }
 
+  @override
   ImageResource loadImage(String key) {
     return imageResourceCache.putIfAbsent(key, () {
       return new ImageResource(fetchImage(key));
@@ -66,6 +73,7 @@
     return new String.fromCharCodes(new Uint8List.view(data.buffer));
   }
 
+  @override
   Future<String> loadString(String key) {
     return _stringCache.putIfAbsent(key, () => _fetchString(key));
   }
@@ -90,6 +98,7 @@
 
   AssetBundleProxy _bundle;
 
+  @override
   Future<core.MojoDataPipeConsumer> load(String key) async {
     return (await _bundle.ptr.getAsStream(key)).assetData;
   }
diff --git a/packages/flutter/lib/src/services/binding.dart b/packages/flutter/lib/src/services/binding.dart
index ff0023c..165b07b 100644
--- a/packages/flutter/lib/src/services/binding.dart
+++ b/packages/flutter/lib/src/services/binding.dart
@@ -34,10 +34,12 @@
     assert(() { _debugInitialized = true; return true; });
   }
 
+  @override
   String toString() => '<$runtimeType>';
 }
 
 abstract class Services extends BindingBase {
+  @override
   void initInstances() {
     super.initInstances();
     new MojoShell();
diff --git a/packages/flutter/lib/src/services/image_cache.dart b/packages/flutter/lib/src/services/image_cache.dart
index cf06a5d..387d7c6 100644
--- a/packages/flutter/lib/src/services/image_cache.dart
+++ b/packages/flutter/lib/src/services/image_cache.dart
@@ -24,6 +24,7 @@
   final String _url;
   final double _scale;
 
+  @override
   Future<ImageInfo> loadImage() async {
     UrlResponse response = await fetchUrl(_url);
     if (response.statusCode >= 400) {
@@ -36,6 +37,7 @@
     );
   }
 
+  @override
   bool operator ==(dynamic other) {
     if (other is! _UrlFetcher)
       return false;
@@ -43,6 +45,7 @@
     return _url == typedOther._url && _scale == typedOther._scale;
   }
 
+  @override
   int get hashCode => hashValues(_url, _scale);
 }
 
diff --git a/packages/flutter/lib/src/services/image_resource.dart b/packages/flutter/lib/src/services/image_resource.dart
index cc8e008..073821c 100644
--- a/packages/flutter/lib/src/services/image_resource.dart
+++ b/packages/flutter/lib/src/services/image_resource.dart
@@ -9,8 +9,11 @@
 
 class ImageInfo {
   ImageInfo({ this.image, this.scale: 1.0 });
+
   final ui.Image image;
   final double scale;
+
+  @override
   String toString() => '$image @ ${scale}x';
 }
 
@@ -89,6 +92,7 @@
     debugPrint('------------------------------------------------------------------------');
   }
 
+  @override
   String toString() {
     StringBuffer result = new StringBuffer();
     result.write('$runtimeType(');
diff --git a/packages/flutter/lib/src/widgets/app.dart b/packages/flutter/lib/src/widgets/app.dart
index d1b91aa..9b280d1 100644
--- a/packages/flutter/lib/src/widgets/app.dart
+++ b/packages/flutter/lib/src/widgets/app.dart
@@ -99,6 +99,7 @@
   /// representative of what will happen in release mode.
   final bool debugShowCheckedModeBanner;
 
+  @override
   WidgetsAppState<WidgetsApp> createState() => new WidgetsAppState<WidgetsApp>();
 }
 
@@ -112,6 +113,7 @@
 
   LocaleQueryData _localeData;
 
+  @override
   void initState() {
     super.initState();
     _navigator = new GlobalObjectKey(this);
@@ -119,11 +121,13 @@
     WidgetFlutterBinding.instance.addObserver(this);
   }
 
+  @override
   void dispose() {
     WidgetFlutterBinding.instance.removeObserver(this);
     super.dispose();
   }
 
+  @override
   bool didPopRoute() {
     assert(mounted);
     NavigatorState navigator = _navigator.currentState;
@@ -135,6 +139,7 @@
     return result;
   }
 
+  @override
   void didChangeMetrics() {
     setState(() {
       // The properties of ui.window have changed. We use them in our build
@@ -142,6 +147,7 @@
     });
   }
 
+  @override
   void didChangeLocale(Locale locale) {
     if (config.onLocaleChanged != null) {
       config.onLocaleChanged(locale).then((LocaleQueryData data) {
@@ -151,10 +157,12 @@
     }
   }
 
+  @override
   void didChangeAppLifecycleState(AppLifecycleState state) { }
 
   NavigatorObserver get navigatorObserver => null;
 
+  @override
   Widget build(BuildContext context) {
     if (config.onLocaleChanged != null && _localeData == null) {
       // If the app expects a locale but we don't yet know the locale, then
diff --git a/packages/flutter/lib/src/widgets/asset_vendor.dart b/packages/flutter/lib/src/widgets/asset_vendor.dart
index 00d6690..69cad02 100644
--- a/packages/flutter/lib/src/widgets/asset_vendor.dart
+++ b/packages/flutter/lib/src/widgets/asset_vendor.dart
@@ -33,6 +33,7 @@
 
   final Map<String, String> keyCache = <String, String>{};
 
+  @override
   Future<core.MojoDataPipeConsumer> load(String key) async {
     if (!keyCache.containsKey(key))
       keyCache[key] = await resolver.resolve(key);
@@ -57,10 +58,12 @@
     resolver: resolver
   );
 
+  @override
   _ResolutionAwareAssetResolver get resolver => super.resolver;
 
   final ImageDecoder _imageDecoder;
 
+  @override
   Future<ImageInfo> fetchImage(String key) async {
     core.MojoDataPipeConsumer pipe = await load(key);
     // At this point the key should be in our key cache, and the image
@@ -93,6 +96,7 @@
     _assetManifest = JSON.decode(json);
   }
 
+  @override
   Future<String> resolve(String name) async {
     _initializer ??= _loadManifest();
     await _initializer;
@@ -146,6 +150,7 @@
       return candidates[lower];
   }
 
+  @override
   String chooseVariant(String main, List<String> candidates) {
     SplayTreeMap<double, String> mapping = new SplayTreeMap<double, String>();
     for (String candidate in candidates)
@@ -205,8 +210,10 @@
   final Widget child;
   final ImageDecoder imageDecoder;
 
+  @override
   _AssetVendorState createState() => new _AssetVendorState();
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('bundle: $bundle');
@@ -230,11 +237,13 @@
     );
   }
 
+  @override
   void initState() {
     super.initState();
     _initBundle();
   }
 
+  @override
   void didUpdateConfig(AssetVendor oldConfig) {
     if (config.bundle != oldConfig.bundle ||
         config.devicePixelRatio != oldConfig.devicePixelRatio) {
@@ -242,10 +251,12 @@
     }
   }
 
+  @override
   Widget build(BuildContext context) {
     return new DefaultAssetBundle(bundle: _bundle, child: config.child);
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('bundle: $_bundle');
diff --git a/packages/flutter/lib/src/widgets/auto_layout.dart b/packages/flutter/lib/src/widgets/auto_layout.dart
index cd4eed3..5e2fab2 100644
--- a/packages/flutter/lib/src/widgets/auto_layout.dart
+++ b/packages/flutter/lib/src/widgets/auto_layout.dart
@@ -19,8 +19,10 @@
 
   final AutoLayoutDelegate delegate;
 
+  @override
   RenderAutoLayout createRenderObject(BuildContext context) => new RenderAutoLayout(delegate: delegate);
 
+  @override
   void updateRenderObject(BuildContext context, RenderAutoLayout renderObject) {
     renderObject.delegate = delegate;
   }
@@ -32,6 +34,7 @@
 
   final AutoLayoutRect rect;
 
+  @override
   void applyParentData(RenderObject renderObject) {
     assert(renderObject.parentData is AutoLayoutParentData);
     final AutoLayoutParentData parentData = renderObject.parentData;
diff --git a/packages/flutter/lib/src/widgets/basic.dart b/packages/flutter/lib/src/widgets/basic.dart
index cb1c88e..300600e 100644
--- a/packages/flutter/lib/src/widgets/basic.dart
+++ b/packages/flutter/lib/src/widgets/basic.dart
@@ -68,12 +68,15 @@
   /// (i.e., invisible).
   final double opacity;
 
+  @override
   RenderOpacity createRenderObject(BuildContext context) => new RenderOpacity(opacity: opacity);
 
+  @override
   void updateRenderObject(BuildContext context, RenderOpacity renderObject) {
     renderObject.opacity = opacity;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('opacity: $opacity');
@@ -94,6 +97,7 @@
   final ShaderCallback shaderCallback;
   final TransferMode transferMode;
 
+  @override
   RenderShaderMask createRenderObject(BuildContext context) {
     return new RenderShaderMask(
       shaderCallback: shaderCallback,
@@ -101,6 +105,7 @@
     );
   }
 
+  @override
   void updateRenderObject(BuildContext context, RenderShaderMask renderObject) {
     renderObject
       ..shaderCallback = shaderCallback
@@ -131,8 +136,10 @@
   /// Where to paint the box decoration.
   final DecorationPosition position;
 
+  @override
   RenderDecoratedBox createRenderObject(BuildContext context) => new RenderDecoratedBox(decoration: decoration, position: position);
 
+  @override
   void updateRenderObject(BuildContext context, RenderDecoratedBox renderObject) {
     renderObject
       ..decoration = decoration
@@ -163,17 +170,20 @@
   /// The painter that paints after the children.
   final CustomPainter foregroundPainter;
 
+  @override
   RenderCustomPaint createRenderObject(BuildContext context) => new RenderCustomPaint(
     painter: painter,
     foregroundPainter: foregroundPainter
   );
 
+  @override
   void updateRenderObject(BuildContext context, RenderCustomPaint renderObject) {
     renderObject
       ..painter = painter
       ..foregroundPainter = foregroundPainter;
   }
 
+  @override
   void didUnmountRenderObject(RenderCustomPaint renderObject) {
     renderObject
       ..painter = null
@@ -190,12 +200,15 @@
   /// If non-null, determines which clip to use.
   final CustomClipper<Rect> clipper;
 
+  @override
   RenderClipRect createRenderObject(BuildContext context) => new RenderClipRect(clipper: clipper);
 
+  @override
   void updateRenderObject(BuildContext context, RenderClipRect renderObject) {
     renderObject.clipper = clipper;
   }
 
+  @override
   void didUnmountRenderObject(RenderClipRect renderObject) {
     renderObject.clipper = null;
   }
@@ -222,8 +235,10 @@
   /// object.
   final double yRadius;
 
+  @override
   RenderClipRRect createRenderObject(BuildContext context) => new RenderClipRRect(xRadius: xRadius, yRadius: yRadius);
 
+  @override
   void updateRenderObject(BuildContext context, RenderClipRRect renderObject) {
     renderObject
       ..xRadius = xRadius
@@ -241,12 +256,15 @@
   /// If non-null, determines which clip to use.
   final CustomClipper<Rect> clipper;
 
+  @override
   RenderClipOval createRenderObject(BuildContext context) => new RenderClipOval(clipper: clipper);
 
+  @override
   void updateRenderObject(BuildContext context, RenderClipOval renderObject) {
     renderObject.clipper = clipper;
   }
 
+  @override
   void didUnmountRenderObject(RenderClipOval renderObject) {
     renderObject.clipper = null;
   }
@@ -281,6 +299,7 @@
   /// Whether to apply the translation when performing hit tests.
   final bool transformHitTests;
 
+  @override
   RenderTransform createRenderObject(BuildContext context) => new RenderTransform(
     transform: transform,
     origin: origin,
@@ -288,6 +307,7 @@
     transformHitTests: transformHitTests
   );
 
+  @override
   void updateRenderObject(BuildContext context, RenderTransform renderObject) {
     renderObject
       ..transform = transform
@@ -311,8 +331,10 @@
   /// Whether to apply the translation when performing hit tests.
   final bool transformHitTests;
 
+  @override
   RenderFractionalTranslation createRenderObject(BuildContext context) => new RenderFractionalTranslation(translation: translation, transformHitTests: transformHitTests);
 
+  @override
   void updateRenderObject(BuildContext context, RenderFractionalTranslation renderObject) {
     renderObject
       ..translation = translation
@@ -334,8 +356,10 @@
   /// The number of clockwise quarter turns the child should be rotated.
   final int quarterTurns;
 
+  @override
   RenderRotatedBox createRenderObject(BuildContext context) => new RenderRotatedBox(quarterTurns: quarterTurns);
 
+  @override
   void updateRenderObject(BuildContext context, RenderRotatedBox renderObject) {
     renderObject.quarterTurns = quarterTurns;
   }
@@ -356,8 +380,10 @@
   /// The amount to pad the child in each dimension.
   final EdgeInsets padding;
 
+  @override
   RenderPadding createRenderObject(BuildContext context) => new RenderPadding(padding: padding);
 
+  @override
   void updateRenderObject(BuildContext context, RenderPadding renderObject) {
     renderObject.padding = padding;
   }
@@ -407,8 +433,10 @@
   /// Can be both greater and less than 1.0 but must be positive.
   final double heightFactor;
 
+  @override
   RenderPositionedBox createRenderObject(BuildContext context) => new RenderPositionedBox(alignment: alignment, widthFactor: widthFactor, heightFactor: heightFactor);
 
+  @override
   void updateRenderObject(BuildContext context, RenderPositionedBox renderObject) {
     renderObject
       ..alignment = alignment
@@ -440,8 +468,10 @@
 
   final SingleChildLayoutDelegate delegate;
 
+  @override
   RenderCustomSingleChildLayoutBox createRenderObject(BuildContext context) => new RenderCustomSingleChildLayoutBox(delegate: delegate);
 
+  @override
   void updateRenderObject(BuildContext context, RenderCustomSingleChildLayoutBox renderObject) {
     renderObject.delegate = delegate;
   }
@@ -461,6 +491,7 @@
   /// An object representing the identity of this child.
   final Object id;
 
+  @override
   void applyParentData(RenderObject renderObject) {
     assert(renderObject.parentData is MultiChildLayoutParentData);
     final MultiChildLayoutParentData parentData = renderObject.parentData;
@@ -472,6 +503,7 @@
     }
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('id: $id');
@@ -498,10 +530,12 @@
   /// The delegate that controls the layout of the children.
   final MultiChildLayoutDelegate delegate;
 
+  @override
   RenderCustomMultiChildLayoutBox createRenderObject(BuildContext context) {
     return new RenderCustomMultiChildLayoutBox(delegate: delegate);
   }
 
+  @override
   void updateRenderObject(BuildContext context, RenderCustomMultiChildLayoutBox renderObject) {
     renderObject.delegate = delegate;
   }
@@ -521,6 +555,7 @@
   /// If non-null, requires the child to have exactly this height.
   final double height;
 
+  @override
   RenderConstrainedBox createRenderObject(BuildContext context) => new RenderConstrainedBox(
     additionalConstraints: _additionalConstraints
   );
@@ -529,10 +564,12 @@
     return new BoxConstraints.tightFor(width: width, height: height);
   }
 
+  @override
   void updateRenderObject(BuildContext context, RenderConstrainedBox renderObject) {
     renderObject.additionalConstraints = _additionalConstraints;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (width != null)
@@ -556,12 +593,15 @@
   /// The additional constraints to impose on the child.
   final BoxConstraints constraints;
 
+  @override
   RenderConstrainedBox createRenderObject(BuildContext context) => new RenderConstrainedBox(additionalConstraints: constraints);
 
+  @override
   void updateRenderObject(BuildContext context, RenderConstrainedBox renderObject) {
     renderObject.additionalConstraints = constraints;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('$constraints');
@@ -587,17 +627,20 @@
   /// incoming height constraint multipled by this factor.
   final double height;
 
+  @override
   RenderFractionallySizedBox createRenderObject(BuildContext context) => new RenderFractionallySizedBox(
     widthFactor: width,
     heightFactor: height
   );
 
+  @override
   void updateRenderObject(BuildContext context, RenderFractionallySizedBox renderObject) {
     renderObject
       ..widthFactor = width
       ..heightFactor = height;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (width != null)
@@ -649,6 +692,7 @@
   /// with the center of the parent.
   final FractionalOffset alignment;
 
+  @override
   RenderOverflowBox createRenderObject(BuildContext context) => new RenderOverflowBox(
     minWidth: minWidth,
     maxWidth: maxWidth,
@@ -657,6 +701,7 @@
     alignment: alignment
   );
 
+  @override
   void updateRenderObject(BuildContext context, RenderOverflowBox renderObject) {
     renderObject
       ..minWidth = minWidth
@@ -666,6 +711,7 @@
       ..alignment = alignment;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (minWidth != null)
@@ -685,8 +731,10 @@
 
   final Size size;
 
+  @override
   RenderSizedOverflowBox createRenderObject(BuildContext context) => new RenderSizedOverflowBox(requestedSize: size);
 
+  @override
   void updateRenderObject(BuildContext context, RenderSizedOverflowBox renderObject) {
     renderObject.requestedSize = size;
   }
@@ -699,6 +747,7 @@
   OffStage({ Key key, Widget child })
     : super(key: key, child: child);
 
+  @override
   RenderOffStage createRenderObject(BuildContext context) => new RenderOffStage();
 }
 
@@ -740,12 +789,15 @@
   /// a 16:9 width:height aspect ratio would have a value of 16.0/9.0.
   final double aspectRatio;
 
+  @override
   RenderAspectRatio createRenderObject(BuildContext context) => new RenderAspectRatio(aspectRatio: aspectRatio);
 
+  @override
   void updateRenderObject(BuildContext context, RenderAspectRatio renderObject) {
     renderObject.aspectRatio = aspectRatio;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('aspectRatio: $aspectRatio');
@@ -774,8 +826,10 @@
   /// If non-null, force the child's height to be a multiple of this value.
   final double stepHeight;
 
+  @override
   RenderIntrinsicWidth createRenderObject(BuildContext context) => new RenderIntrinsicWidth(stepWidth: stepWidth, stepHeight: stepHeight);
 
+  @override
   void updateRenderObject(BuildContext context, RenderIntrinsicWidth renderObject) {
     renderObject
       ..stepWidth = stepWidth
@@ -792,6 +846,8 @@
 /// This class is relatively expensive. Avoid using it where possible.
 class IntrinsicHeight extends SingleChildRenderObjectWidget {
   IntrinsicHeight({ Key key, Widget child }) : super(key: key, child: child);
+
+  @override
   RenderIntrinsicHeight createRenderObject(BuildContext context) => new RenderIntrinsicHeight();
 }
 
@@ -810,8 +866,10 @@
   /// The type of baseline to use for positioning the child.
   final TextBaseline baselineType;
 
+  @override
   RenderBaseline createRenderObject(BuildContext context) => new RenderBaseline(baseline: baseline, baselineType: baselineType);
 
+  @override
   void updateRenderObject(BuildContext context, RenderBaseline renderObject) {
     renderObject
       ..baseline = baseline
@@ -863,6 +921,7 @@
 
   final ViewportDimensionsChangeCallback onPaintOffsetUpdateNeeded;
 
+  @override
   RenderViewport createRenderObject(BuildContext context) {
     return new RenderViewport(
       paintOffset: paintOffset,
@@ -873,6 +932,7 @@
     );
   }
 
+  @override
   void updateRenderObject(BuildContext context, RenderViewport renderObject) {
     // Order dependency: RenderViewport validates scrollOffset based on mainAxis.
     renderObject
@@ -943,6 +1003,7 @@
     return padding + decorationPadding;
   }
 
+  @override
   Widget build(BuildContext context) {
     Widget current = child;
 
@@ -976,6 +1037,7 @@
     return current;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (constraints != null)
@@ -1014,8 +1076,10 @@
   /// The direction to use as the main axis.
   final Axis mainAxis;
 
+  @override
   RenderBlock createRenderObject(BuildContext context) => new RenderBlock(mainAxis: mainAxis);
 
+  @override
   void updateRenderObject(BuildContext context, RenderBlock renderObject) {
     renderObject.mainAxis = mainAxis;
   }
@@ -1054,8 +1118,10 @@
   /// How to align the non-positioned children in the stack.
   final FractionalOffset alignment;
 
+  @override
   RenderStack createRenderObject(BuildContext context) => new RenderStack(alignment: alignment);
 
+  @override
   void updateRenderObject(BuildContext context, RenderStack renderObject) {
     renderObject.alignment = alignment;
   }
@@ -1078,8 +1144,10 @@
   /// How to align the non-positioned children in the stack.
   final FractionalOffset alignment;
 
+  @override
   RenderIndexedStack createRenderObject(BuildContext context) => new RenderIndexedStack(index: index, alignment: alignment);
 
+  @override
   void updateRenderObject(BuildContext context, RenderIndexedStack renderObject) {
     renderObject
       ..index = index
@@ -1143,6 +1211,7 @@
   /// set. The third must be null.
   final double height;
 
+  @override
   void applyParentData(RenderObject renderObject) {
     assert(renderObject.parentData is StackParentData);
     final StackParentData parentData = renderObject.parentData;
@@ -1185,6 +1254,7 @@
     }
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (left != null)
@@ -1215,8 +1285,10 @@
   /// The delegate that controls the layout of the children.
   GridDelegate createDelegate();
 
+  @override
   RenderGrid createRenderObject(BuildContext context) => new RenderGrid(delegate: _delegate);
 
+  @override
   void updateRenderObject(BuildContext context, RenderGrid renderObject) {
     renderObject.delegate = _delegate;
   }
@@ -1234,6 +1306,7 @@
   /// The delegate that controls the layout of the children.
   final GridDelegate delegate;
 
+  @override
   GridDelegate createDelegate() => delegate;
 }
 
@@ -1268,6 +1341,7 @@
   /// The amount of padding to apply to each child.
   final EdgeInsets padding;
 
+  @override
   FixedColumnCountGridDelegate createDelegate() {
     return new FixedColumnCountGridDelegate(
       columnCount: columnCount,
@@ -1310,6 +1384,7 @@
   /// The amount of padding to apply to each child.
   final EdgeInsets padding;
 
+  @override
   MaxTileWidthGridDelegate createDelegate() {
     return new MaxTileWidthGridDelegate(
       maxTileWidth: maxTileWidth,
@@ -1329,6 +1404,7 @@
   /// Opaque data passed to the getChildPlacement method of the grid's [GridDelegate].
   final DataType placementData;
 
+  @override
   void applyParentData(RenderObject renderObject) {
     assert(renderObject.parentData is GridParentData);
     final GridParentData parentData = renderObject.parentData;
@@ -1340,6 +1416,7 @@
     }
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('placementData: $placementData');
@@ -1369,8 +1446,10 @@
   final CrossAxisAlignment crossAxisAlignment;
   final TextBaseline textBaseline;
 
+  @override
   RenderFlex createRenderObject(BuildContext context) => new RenderFlex(direction: direction, mainAxisAlignment: mainAxisAlignment, crossAxisAlignment: crossAxisAlignment, textBaseline: textBaseline);
 
+  @override
   void updateRenderObject(BuildContext context, RenderFlex renderObject) {
     renderObject
       ..direction = direction
@@ -1440,6 +1519,7 @@
   /// according to the flex factors of the flexible children.
   final int flex;
 
+  @override
   void applyParentData(RenderObject renderObject) {
     assert(renderObject.parentData is FlexParentData);
     final FlexParentData parentData = renderObject.parentData;
@@ -1451,6 +1531,7 @@
     }
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('flex: $flex');
@@ -1468,8 +1549,10 @@
 
   final TextSpan text;
 
+  @override
   RenderParagraph createRenderObject(BuildContext context) => new RenderParagraph(text);
 
+  @override
   void updateRenderObject(BuildContext context, RenderParagraph renderObject) {
     renderObject.text = text;
   }
@@ -1495,8 +1578,10 @@
     return result?.style;
   }
 
+  @override
   bool updateShouldNotify(DefaultTextStyle old) => style != old.style;
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     '$style'.split('\n').forEach(description.add);
@@ -1529,6 +1614,7 @@
       return style;
   }
 
+  @override
   Widget build(BuildContext context) {
     return new RichText(
       text: new TextSpan(
@@ -1538,6 +1624,7 @@
     );
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('"$data"');
@@ -1610,6 +1697,7 @@
   /// the center slice will be stretched only vertically.
   final Rect centerSlice;
 
+  @override
   RenderImage createRenderObject(BuildContext context) => new RenderImage(
     image: image,
     width: width,
@@ -1622,6 +1710,7 @@
     centerSlice: centerSlice
   );
 
+  @override
   void updateRenderObject(BuildContext context, RenderImage renderObject) {
     renderObject
       ..image = image
@@ -1635,6 +1724,7 @@
       ..centerSlice = centerSlice;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('image: $image');
@@ -1721,8 +1811,10 @@
   /// the center slice will be stretched only vertically.
   final Rect centerSlice;
 
+  @override
   _RawImageResourceState createState() => new _RawImageResourceState();
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('image: $image');
@@ -1744,6 +1836,7 @@
 }
 
 class _RawImageResourceState extends State<RawImageResource> {
+  @override
   void initState() {
     super.initState();
     config.image.addListener(_handleImageChanged);
@@ -1757,11 +1850,13 @@
     });
   }
 
+  @override
   void dispose() {
     config.image.removeListener(_handleImageChanged);
     super.dispose();
   }
 
+  @override
   void didUpdateConfig(RawImageResource oldConfig) {
     if (config.image != oldConfig.image) {
       oldConfig.image.removeListener(_handleImageChanged);
@@ -1769,6 +1864,7 @@
     }
   }
 
+  @override
   Widget build(BuildContext context) {
     return new RawImage(
       image: _resolvedImage?.image,
@@ -1844,6 +1940,7 @@
   /// the center slice will be stretched only vertically.
   final Rect centerSlice;
 
+  @override
   Widget build(BuildContext context) {
     return new RawImageResource(
       image: imageCache.load(src, scale: scale),
@@ -1857,6 +1954,7 @@
     );
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('src: $src');
@@ -1902,6 +2000,7 @@
     return result?.bundle;
   }
 
+  @override
   bool updateShouldNotify(DefaultAssetBundle old) => bundle != old.bundle;
 }
 
@@ -1963,6 +2062,7 @@
   /// the center slice will be stretched only vertically.
   final Rect centerSlice;
 
+  @override
   Widget build(BuildContext context) {
     return new RawImageResource(
       image: imageCache.loadProvider(provider),
@@ -1976,6 +2076,7 @@
     );
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('provider: $provider');
@@ -2062,6 +2163,7 @@
   /// the center slice will be stretched only vertically.
   final Rect centerSlice;
 
+  @override
   Widget build(BuildContext context) {
     return new RawImageResource(
       image: (bundle ?? DefaultAssetBundle.of(context)).loadImage(name),
@@ -2075,6 +2177,7 @@
     );
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('name: $name');
@@ -2122,8 +2225,10 @@
   /// tree will be dirty.
   final VoidCallback onBuild;
 
+  @override
   RenderBox createRenderObject(BuildContext context) => renderBox;
 
+  @override
   void updateRenderObject(BuildContext context, RenderBox renderObject) {
     if (onBuild != null)
       onBuild();
@@ -2152,6 +2257,7 @@
   final PointerCancelEventListener onPointerCancel;
   final HitTestBehavior behavior;
 
+  @override
   RenderPointerListener createRenderObject(BuildContext context) => new RenderPointerListener(
     onPointerDown: onPointerDown,
     onPointerMove: onPointerMove,
@@ -2160,6 +2266,7 @@
     behavior: behavior
   );
 
+  @override
   void updateRenderObject(BuildContext context, RenderPointerListener renderObject) {
     renderObject
       ..onPointerDown = onPointerDown
@@ -2169,6 +2276,7 @@
       ..behavior = behavior;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     List<String> listeners = <String>[];
@@ -2208,6 +2316,8 @@
 /// for the surround tree.
 class RepaintBoundary extends SingleChildRenderObjectWidget {
   RepaintBoundary({ Key key, Widget child }) : super(key: key, child: child);
+
+  @override
   RenderRepaintBoundary createRenderObject(BuildContext context) => new RenderRepaintBoundary();
 }
 
@@ -2218,11 +2328,13 @@
   final bool ignoring;
   final bool ignoringSemantics; // if null, defaults to value of ignoring
 
+  @override
   RenderIgnorePointer createRenderObject(BuildContext context) => new RenderIgnorePointer(
     ignoring: ignoring,
     ignoringSemantics: ignoringSemantics
   );
 
+  @override
   void updateRenderObject(BuildContext context, RenderIgnorePointer renderObject) {
     renderObject
       ..ignoring = ignoring
@@ -2268,12 +2380,14 @@
   /// Provides a textual description of the widget.
   final String label;
 
+  @override
   RenderSemanticAnnotations createRenderObject(BuildContext context) => new RenderSemanticAnnotations(
     container: container,
     checked: checked,
     label: label
   );
 
+  @override
   void updateRenderObject(BuildContext context, RenderSemanticAnnotations renderObject) {
     renderObject
       ..container = container
@@ -2281,6 +2395,7 @@
       ..label = label;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('container: $container');
@@ -2310,6 +2425,8 @@
 /// callbacks.
 class MergeSemantics extends SingleChildRenderObjectWidget {
   MergeSemantics({ Key key, Widget child }) : super(key: key, child: child);
+
+  @override
   RenderMergeSemantics createRenderObject(BuildContext context) => new RenderMergeSemantics();
 }
 
@@ -2321,6 +2438,8 @@
 /// redundant with the chip label.
 class ExcludeSemantics extends SingleChildRenderObjectWidget {
   ExcludeSemantics({ Key key, Widget child }) : super(key: key, child: child);
+
+  @override
   RenderExcludeSemantics createRenderObject(BuildContext context) => new RenderExcludeSemantics();
 }
 
@@ -2335,17 +2454,20 @@
   final dynamic metaData;
   final HitTestBehavior behavior;
 
+  @override
   RenderMetaData createRenderObject(BuildContext context) => new RenderMetaData(
     metaData: metaData,
     behavior: behavior
   );
 
+  @override
   void updateRenderObject(BuildContext context, RenderMetaData renderObject) {
     renderObject
       ..metaData = metaData
       ..behavior = behavior;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('behavior: $behavior');
@@ -2359,6 +2481,7 @@
 
   final Widget child;
 
+  @override
   Widget build(BuildContext context) => child;
 }
 
@@ -2373,15 +2496,20 @@
   /// object identity.
   final WidgetBuilder builder;
 
+  @override
   Widget build(BuildContext context) => builder(context);
 }
 
 typedef Widget StatefulWidgetBuilder(BuildContext context, StateSetter setState);
 class StatefulBuilder extends StatefulWidget {
   StatefulBuilder({ Key key, this.builder }) : super(key: key);
+
   final StatefulWidgetBuilder builder;
+
+  @override
   _StatefulBuilderState createState() => new _StatefulBuilderState();
 }
 class _StatefulBuilderState extends State<StatefulBuilder> {
+  @override
   Widget build(BuildContext context) => config.builder(context, setState);
 }
diff --git a/packages/flutter/lib/src/widgets/binding.dart b/packages/flutter/lib/src/widgets/binding.dart
index ac0cf19..9d1b5cb 100644
--- a/packages/flutter/lib/src/widgets/binding.dart
+++ b/packages/flutter/lib/src/widgets/binding.dart
@@ -35,6 +35,7 @@
     return _instance;
   }
 
+  @override
   void initInstances() {
     super.initInstances();
     _instance = this;
@@ -60,6 +61,7 @@
   void addObserver(BindingObserver observer) => _observers.add(observer);
   bool removeObserver(BindingObserver observer) => _observers.remove(observer);
 
+  @override
   void handleMetricsChanged() {
     super.handleMetricsChanged();
     for (BindingObserver observer in _observers)
@@ -88,6 +90,7 @@
       observer.didChangeAppLifecycleState(state);
   }
 
+  @override
   void beginFrame() {
     buildDirtyElements();
     super.beginFrame();
@@ -190,10 +193,13 @@
   final RenderObjectWithChildMixin<T> container;
   final String debugShortDescription;
 
+  @override
   RenderObjectToWidgetElement<T> createElement() => new RenderObjectToWidgetElement<T>(this);
 
+  @override
   RenderObjectWithChildMixin<T> createRenderObject(BuildContext context) => container;
 
+  @override
   void updateRenderObject(BuildContext context, RenderObject renderObject) { }
 
   RenderObjectToWidgetElement<T> attachToRenderTree([RenderObjectToWidgetElement<T> element]) {
@@ -208,6 +214,7 @@
     return element;
   }
 
+  @override
   String toStringShort() => debugShortDescription ?? super.toStringShort();
 }
 
@@ -222,40 +229,48 @@
 class RenderObjectToWidgetElement<T extends RenderObject> extends RenderObjectElement {
   RenderObjectToWidgetElement(RenderObjectToWidgetAdapter<T> widget) : super(widget);
 
+  @override
   RenderObjectToWidgetAdapter<T> get widget => super.widget;
 
   Element _child;
 
   static const Object _rootChildSlot = const Object();
 
+  @override
   void visitChildren(ElementVisitor visitor) {
     if (_child != null)
       visitor(_child);
   }
 
+  @override
   void mount(Element parent, dynamic newSlot) {
     assert(parent == null);
     super.mount(parent, newSlot);
     _child = updateChild(_child, widget.child, _rootChildSlot);
   }
 
+  @override
   void update(RenderObjectToWidgetAdapter<T> newWidget) {
     super.update(newWidget);
     assert(widget == newWidget);
     _child = updateChild(_child, widget.child, _rootChildSlot);
   }
 
+  @override
   RenderObjectWithChildMixin<T> get renderObject => super.renderObject;
 
+  @override
   void insertChildRenderObject(RenderObject child, dynamic slot) {
     assert(slot == _rootChildSlot);
     renderObject.child = child;
   }
 
+  @override
   void moveChildRenderObject(RenderObject child, dynamic slot) {
     assert(false);
   }
 
+  @override
   void removeChildRenderObject(RenderObject child) {
     assert(renderObject.child == child);
     renderObject.child = null;
diff --git a/packages/flutter/lib/src/widgets/checked_mode_banner.dart b/packages/flutter/lib/src/widgets/checked_mode_banner.dart
index 51a21b4..e819d49 100644
--- a/packages/flutter/lib/src/widgets/checked_mode_banner.dart
+++ b/packages/flutter/lib/src/widgets/checked_mode_banner.dart
@@ -30,6 +30,7 @@
     ..maxHeight = kHeight
     ..layout();
 
+  @override
   void paint(Canvas canvas, Size size) {
     final Paint paintShadow = new Paint()
       ..color = const Color(0x7F000000)
@@ -44,7 +45,10 @@
     textPainter.paint(canvas, kRect.topLeft.toOffset() + kTextAlign);
   }
 
+  @override
   bool shouldRepaint(_CheckedModeBannerPainter oldPainter) => false;
+
+  @override
   bool hitTest(Point position) => false;
 }
 
@@ -58,6 +62,7 @@
 
   final Widget child;
 
+  @override
   Widget build(BuildContext context) {
     Widget result = child;
     assert(() {
diff --git a/packages/flutter/lib/src/widgets/child_view.dart b/packages/flutter/lib/src/widgets/child_view.dart
index a02b02b..ccad34c 100644
--- a/packages/flutter/lib/src/widgets/child_view.dart
+++ b/packages/flutter/lib/src/widgets/child_view.dart
@@ -14,6 +14,7 @@
 
   final ChildViewConnection child;
 
+  @override
   Widget build(BuildContext context) {
     assert(MediaQuery.of(context) != null);
     return new _ChildViewWidget(
@@ -32,8 +33,10 @@
   final ChildViewConnection child;
   final double scale;
 
+  @override
   RenderChildView createRenderObject(BuildContext context) => new RenderChildView(child: child, scale: scale);
 
+  @override
   void updateRenderObject(BuildContext context, RenderChildView renderObject) {
     renderObject
       ..child = child
diff --git a/packages/flutter/lib/src/widgets/dismissable.dart b/packages/flutter/lib/src/widgets/dismissable.dart
index 8e59925..7aff201 100644
--- a/packages/flutter/lib/src/widgets/dismissable.dart
+++ b/packages/flutter/lib/src/widgets/dismissable.dart
@@ -89,10 +89,12 @@
   /// The direction in which the widget can be dismissed.
   final DismissDirection direction;
 
+  @override
   _DismissableState createState() => new _DismissableState();
 }
 
 class _DismissableState extends State<Dismissable> {
+  @override
   void initState() {
     super.initState();
     _moveController = new AnimationController(duration: _kDismissDuration)
@@ -109,6 +111,7 @@
   double _dragExtent = 0.0;
   bool _dragUnderway = false;
 
+  @override
   void dispose() {
     _moveController?.stop();
     _resizeController?.stop();
@@ -273,6 +276,7 @@
     }
   }
 
+  @override
   Widget build(BuildContext context) {
     Widget background = config.background;
     if (config.secondaryBackground != null) {
diff --git a/packages/flutter/lib/src/widgets/drag_target.dart b/packages/flutter/lib/src/widgets/drag_target.dart
index 26fc99f..be67982 100644
--- a/packages/flutter/lib/src/widgets/drag_target.dart
+++ b/packages/flutter/lib/src/widgets/drag_target.dart
@@ -82,6 +82,7 @@
   /// constructed with the given arguments.
   MultiDragGestureRecognizer<MultiDragPointerState> createRecognizer(GestureMultiDragStartCallback onStart);
 
+  @override
   _DraggableState<T> createState() => new _DraggableState<T>();
 }
 
@@ -107,6 +108,7 @@
     maxSimultaneousDrags: maxSimultaneousDrags
   );
 
+  @override
   ImmediateMultiDragGestureRecognizer createRecognizer(GestureMultiDragStartCallback onStart) {
     return new ImmediateMultiDragGestureRecognizer()..onStart = onStart;
   }
@@ -135,6 +137,7 @@
     maxSimultaneousDrags: maxSimultaneousDrags
   );
 
+  @override
   HorizontalMultiDragGestureRecognizer createRecognizer(GestureMultiDragStartCallback onStart) {
     return new HorizontalMultiDragGestureRecognizer()..onStart = onStart;
   }
@@ -163,6 +166,7 @@
     maxSimultaneousDrags: maxSimultaneousDrags
   );
 
+  @override
   VerticalMultiDragGestureRecognizer createRecognizer(GestureMultiDragStartCallback onStart) {
     return new VerticalMultiDragGestureRecognizer()..onStart = onStart;
   }
@@ -190,6 +194,7 @@
     maxSimultaneousDrags: maxSimultaneousDrags
   );
 
+  @override
   DelayedMultiDragGestureRecognizer createRecognizer(GestureMultiDragStartCallback onStart) {
     return new DelayedMultiDragGestureRecognizer()
       ..onStart = (Point position) {
@@ -203,6 +208,7 @@
 
 class _DraggableState<T> extends State<DraggableBase<T>> {
 
+  @override
   void initState() {
     super.initState();
     _recognizer = config.createRecognizer(_startDrag);
@@ -248,6 +254,7 @@
     );
   }
 
+  @override
   Widget build(BuildContext context) {
     assert(Overlay.of(context, debugRequiredFor: config) != null);
     final bool canDrag = config.maxSimultaneousDrags == null ||
@@ -282,6 +289,7 @@
   /// Called when an acceptable piece of data was dropped over this drag target.
   final DragTargetAccept<T> onAccept;
 
+  @override
   _DragTargetState<T> createState() => new _DragTargetState<T>();
 }
 
@@ -319,6 +327,7 @@
       config.onAccept(data);
   }
 
+  @override
   Widget build(BuildContext context) {
     return new MetaData(
       metaData: this,
@@ -368,13 +377,18 @@
   OverlayEntry _entry;
 
   // Drag API
+  @override
   void move(Offset offset) {
     _position += offset;
     update(_position);
   }
+
+  @override
   void end(Velocity velocity) {
     finish(_DragEndKind.dropped);
   }
+
+  @override
   void cancel() {
     finish(_DragEndKind.canceled);
   }
diff --git a/packages/flutter/lib/src/widgets/editable.dart b/packages/flutter/lib/src/widgets/editable.dart
index e722cfa..0abfd02 100644
--- a/packages/flutter/lib/src/widgets/editable.dart
+++ b/packages/flutter/lib/src/widgets/editable.dart
@@ -63,6 +63,7 @@
       ..composingExtent = inputValue.composing.end;
   }
 
+  @override
   void updateEditingState(mojom.EditingState state) {
     inputValue = new InputValue(
       text: state.text,
@@ -76,6 +77,7 @@
     inputValue = inputValue.copyWith(composing: TextRange.empty);
   }
 
+  @override
   void submit(mojom.SubmitAction action) {
     clearComposing();
     onSubmitted();
@@ -101,8 +103,10 @@
 
   static const InputValue empty = const InputValue();
 
+  @override
   String toString() => '$runtimeType(text: \u2524$text\u251C, selection: $selection, composing: $composing)';
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -114,6 +118,7 @@
         && typedOther.composing == composing;
   }
 
+  @override
   int get hashCode => hashValues(
     text.hashCode,
     selection.hashCode,
@@ -182,6 +187,7 @@
   /// Called when the user indicates that they are done editing the text in the field.
   final ValueChanged<InputValue> onSubmitted;
 
+  @override
   RawInputLineState createState() => new RawInputLineState();
 }
 
@@ -192,9 +198,13 @@
   _KeyboardClientImpl _keyboardClient;
   KeyboardHandle _keyboardHandle;
 
+  @override
   ScrollBehavior<double, double> createScrollBehavior() => new BoundedBehavior();
+
+  @override
   BoundedBehavior get scrollBehavior => super.scrollBehavior;
 
+  @override
   void initState() {
     super.initState();
     _keyboardClient = new _KeyboardClientImpl(
@@ -204,6 +214,7 @@
     );
   }
 
+  @override
   void didUpdateConfig(RawInputLine oldConfig) {
     if (_keyboardClient.inputValue != config.value) {
       _keyboardClient.inputValue = config.value;
@@ -300,6 +311,7 @@
     _cursorTimer = new Timer.periodic(_kCursorBlinkHalfPeriod, _cursorTick);
   }
 
+  @override
   void dispose() {
     if (_isAttachedToKeyboard)
       _keyboardHandle.release();
@@ -314,6 +326,7 @@
     _showCursor = false;
   }
 
+  @override
   Widget buildContent(BuildContext context) {
     assert(config.style != null);
     assert(config.focusKey != null);
@@ -365,6 +378,7 @@
   final Offset paintOffset;
   final ViewportDimensionsChangeCallback onPaintOffsetUpdateNeeded;
 
+  @override
   RenderEditableLine createRenderObject(BuildContext context) {
     return new RenderEditableLine(
       text: _styledTextSpan,
@@ -378,6 +392,7 @@
     );
   }
 
+  @override
   void updateRenderObject(BuildContext context, RenderEditableLine renderObject) {
     renderObject
       ..text = _styledTextSpan
diff --git a/packages/flutter/lib/src/widgets/focus.dart b/packages/flutter/lib/src/widgets/focus.dart
index 767676b..ab9904e 100644
--- a/packages/flutter/lib/src/widgets/focus.dart
+++ b/packages/flutter/lib/src/widgets/focus.dart
@@ -44,6 +44,7 @@
     focusedScope = focusState._focusedScope == _noFocusedScope ? null : focusState._focusedScope;
   }
 
+  @override
   bool updateShouldNotify(_FocusScope oldWidget) {
     if (scopeFocused != oldWidget.scopeFocused)
       return true;
@@ -58,6 +59,7 @@
     return false;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (scopeFocused)
@@ -189,16 +191,19 @@
       focusScope.focusState._setFocusedScope(key);
   }
 
+  @override
   _FocusState createState() => new _FocusState();
 }
 
 class _FocusState extends State<Focus> {
+  @override
   void initState() {
     super.initState();
     _updateWidgetRemovalListener(_focusedWidget);
     _updateScopeRemovalListener(_focusedScope);
   }
 
+  @override
   void dispose() {
     _updateWidgetRemovalListener(null);
     _updateScopeRemovalListener(null);
@@ -291,6 +296,7 @@
     Scrollable.ensureVisible(focusedContext);
   }
 
+  @override
   Widget build(BuildContext context) {
     MediaQueryData data = MediaQuery.of(context);
     if (data != null) {
diff --git a/packages/flutter/lib/src/widgets/framework.dart b/packages/flutter/lib/src/widgets/framework.dart
index c4f3973..4e61e86 100644
--- a/packages/flutter/lib/src/widgets/framework.dart
+++ b/packages/flutter/lib/src/widgets/framework.dart
@@ -32,20 +32,29 @@
 /// their values match.
 class ValueKey<T> extends Key {
   const ValueKey(this.value) : super.constructor();
+
   final T value;
+
+  @override
   bool operator ==(dynamic other) {
     if (other is! ValueKey<T>)
       return false;
     final ValueKey<T> typedOther = other;
     return value == typedOther.value;
   }
+
+  @override
   int get hashCode => value.hashCode;
+
+  @override
   String toString() => '[\'$value\']';
 }
 
 /// A [Key] that is only equal to itself.
 class UniqueKey extends Key {
   const UniqueKey() : super.constructor();
+
+  @override
   String toString() => '[$hashCode]';
 }
 
@@ -55,14 +64,21 @@
 /// generate that Widget.
 class ObjectKey extends Key {
   const ObjectKey(this.value) : super.constructor();
+
   final Object value;
+
+  @override
   bool operator ==(dynamic other) {
     if (other is! ObjectKey)
       return false;
     final ObjectKey typedOther = other;
     return identical(value, typedOther.value);
   }
+
+  @override
   int get hashCode => identityHashCode(value);
+
+  @override
   String toString() => '[${value.runtimeType}(${value.hashCode})]';
 }
 
@@ -181,7 +197,10 @@
 /// the key's identity.
 class LabeledGlobalKey<T extends State<StatefulWidget>> extends GlobalKey<T> {
   const LabeledGlobalKey(this._debugLabel) : super.constructor();
+
   final String _debugLabel;
+
+  @override
   String toString() => '[GlobalKey ${_debugLabel != null ? _debugLabel : hashCode}]';
 }
 
@@ -192,13 +211,19 @@
 class GlobalObjectKey extends GlobalKey {
   const GlobalObjectKey(this.value) : super.constructor();
   final Object value;
+
+  @override
   bool operator ==(dynamic other) {
     if (other is! GlobalObjectKey)
       return false;
     final GlobalObjectKey typedOther = other;
     return identical(value, typedOther.value);
   }
+
+  @override
   int get hashCode => identityHashCode(value);
+
+  @override
   String toString() => '[$runtimeType ${value.runtimeType}(${value.hashCode})]';
 }
 
@@ -224,6 +249,7 @@
     return key == null ? '$runtimeType' : '$runtimeType-$key';
   }
 
+  @override
   String toString() {
     final String name = toStringShort();
     final List<String> data = <String>[];
@@ -251,6 +277,7 @@
 
   /// StatelessWidget always use [StatelessElement]s to represent
   /// themselves in the Element tree.
+  @override
   StatelessElement createElement() => new StatelessElement(this);
 
   /// Returns another Widget out of which this StatelessWidget is built.
@@ -271,6 +298,7 @@
 
   /// StatefulWidget always use [StatefulElement]s to represent
   /// themselves in the Element tree.
+  @override
   StatefulElement createElement() => new StatefulElement(this);
 
   /// Returns an instance of the state to which this StatefulWidget is
@@ -390,6 +418,7 @@
   /// called.
   void dependenciesChanged(Type affectedWidgetType) { }
 
+  @override
   String toString() {
     final List<String> data = <String>[];
     debugFillDescription(data);
@@ -420,6 +449,7 @@
   const ParentDataWidget({ Key key, Widget child })
     : super(key: key, child: child);
 
+  @override
   ParentDataElement<T> createElement() => new ParentDataElement<T>(this);
 
   /// Subclasses should override this function to return true if the given
@@ -468,6 +498,7 @@
   const InheritedWidget({ Key key, Widget child })
     : super(key: key, child: child);
 
+  @override
   InheritedElement createElement() => new InheritedElement(this);
 
   bool updateShouldNotify(InheritedWidget oldWidget);
@@ -480,6 +511,7 @@
   const RenderObjectWidget({ Key key }) : super(key: key);
 
   /// RenderObjectWidgets always inflate to a RenderObjectElement subclass.
+  @override
   RenderObjectElement createElement();
 
   /// Constructs an instance of the RenderObject class that this
@@ -500,6 +532,7 @@
 abstract class LeafRenderObjectWidget extends RenderObjectWidget {
   const LeafRenderObjectWidget({ Key key }) : super(key: key);
 
+  @override
   LeafRenderObjectElement createElement() => new LeafRenderObjectElement(this);
 }
 
@@ -511,6 +544,7 @@
 
   final Widget child;
 
+  @override
   SingleChildRenderObjectElement createElement() => new SingleChildRenderObjectElement(this);
 }
 
@@ -527,6 +561,7 @@
 
   final List<Widget> children;
 
+  @override
   MultiChildRenderObjectElement createElement() => new MultiChildRenderObjectElement(this);
 }
 
@@ -633,6 +668,7 @@
   int _depth;
 
   /// The configuration for this element.
+  @override
   Widget get widget => _widget;
   Widget _widget;
 
@@ -658,6 +694,7 @@
   void visitChildren(ElementVisitor visitor) { }
 
   /// Wrapper around visitChildren for BuildContext.
+  @override
   void visitChildElements(void visitor(Element element)) {
     // don't allow visitChildElements() during build, since children aren't necessarily built yet
     assert(!BuildableElement._debugStateLocked);
@@ -908,10 +945,13 @@
     assert(() { _debugLifecycleState = _ElementLifecycle.defunct; return true; });
   }
 
+  @override
   RenderObject findRenderObject() => renderObject;
 
   Map<Type, InheritedElement> _inheritedWidgets;
   Set<InheritedElement> _dependencies;
+
+  @override
   InheritedWidget inheritFromWidgetOfExactType(Type targetType) {
     InheritedElement ancestor = _inheritedWidgets == null ? null : _inheritedWidgets[targetType];
     if (ancestor != null) {
@@ -928,6 +968,7 @@
     _inheritedWidgets = _parent?._inheritedWidgets;
   }
 
+  @override
   Widget ancestorWidgetOfExactType(Type targetType) {
     Element ancestor = _parent;
     while (ancestor != null && ancestor.widget.runtimeType != targetType)
@@ -935,6 +976,7 @@
     return ancestor?.widget;
   }
 
+  @override
   State ancestorStateOfType(TypeMatcher matcher) {
     Element ancestor = _parent;
     while (ancestor != null) {
@@ -946,6 +988,7 @@
     return statefulAncestor?.state;
   }
 
+  @override
   RenderObject ancestorRenderObjectOfType(TypeMatcher matcher) {
     Element ancestor = _parent;
     while (ancestor != null) {
@@ -957,6 +1000,7 @@
     return renderObjectAncestor?.renderObject;
   }
 
+  @override
   void visitAncestorElements(bool visitor(Element element)) {
     Element ancestor = _parent;
     while (ancestor != null && visitor(ancestor))
@@ -983,6 +1027,7 @@
     return widget != null ? '${widget.toStringShort()}' : '[$runtimeType]';
   }
 
+  @override
   String toString() {
     final List<String> data = <String>[];
     debugFillDescription(data);
@@ -1026,13 +1071,17 @@
     Object exception
   ) : message = _stringify(exception),
       super(key: new UniqueKey());
+
   final String message;
+
   static String _stringify(Object exception) {
     try {
       return exception.toString();
     } catch (e) { }
     return 'Error';
   }
+
+  @override
   RenderBox createRenderObject(BuildContext context) => new RenderErrorBox(message);
 }
 
@@ -1182,10 +1231,12 @@
   /// Called by rebuild() after the appropriate checks have been made.
   void performRebuild();
 
+  @override
   void dependenciesChanged(Type affectedWidgetType) {
     markNeedsBuild();
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (dirty)
@@ -1203,6 +1254,7 @@
   WidgetBuilder _builder;
   Element _child;
 
+  @override
   void mount(Element parent, dynamic newSlot) {
     super.mount(parent, newSlot);
     assert(_child == null);
@@ -1221,6 +1273,7 @@
   ///
   /// Called automatically during mount() to generate the first build, and by
   /// rebuild() when the element needs updating.
+  @override
   void performRebuild() {
     assert(_debugSetAllowIgnoredCallsToMarkNeedsBuild(true));
     Widget built;
@@ -1257,11 +1310,13 @@
     }
   }
 
+  @override
   void visitChildren(ElementVisitor visitor) {
     if (_child != null)
       visitor(_child);
   }
 
+  @override
   bool detachChild(Element child) {
     assert(child == _child);
     _deactivateChild(_child);
@@ -1276,8 +1331,10 @@
     _builder = widget.build;
   }
 
+  @override
   StatelessWidget get widget => super.widget;
 
+  @override
   void update(StatelessWidget newWidget) {
     super.update(newWidget);
     assert(widget == newWidget);
@@ -1304,6 +1361,7 @@
   State<StatefulWidget> get state => _state;
   State<StatefulWidget> _state;
 
+  @override
   void _firstBuild() {
     assert(_state._debugLifecycleState == _StateLifecycle.created);
     try {
@@ -1325,6 +1383,7 @@
     super._firstBuild();
   }
 
+  @override
   void update(StatefulWidget newWidget) {
     super.update(newWidget);
     assert(widget == newWidget);
@@ -1343,11 +1402,13 @@
     rebuild();
   }
 
+  @override
   void deactivate() {
     _state.deactivate();
     super.deactivate();
   }
 
+  @override
   void unmount() {
     super.unmount();
     _state.dispose();
@@ -1365,11 +1426,13 @@
     _state = null;
   }
 
+  @override
   void dependenciesChanged(Type affectedWidgetType) {
     super.dependenciesChanged(affectedWidgetType);
     _state.dependenciesChanged(affectedWidgetType);
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (state != null)
@@ -1382,10 +1445,12 @@
     _builder = _build;
   }
 
+  @override
   _ProxyWidget get widget => super.widget;
 
   Widget _build(BuildContext context) => widget.child;
 
+  @override
   void update(_ProxyWidget newWidget) {
     _ProxyWidget oldWidget = widget;
     assert(widget != null);
@@ -1403,8 +1468,10 @@
 class ParentDataElement<T extends RenderObjectWidget> extends _ProxyElement {
   ParentDataElement(ParentDataWidget<T> widget) : super(widget);
 
+  @override
   ParentDataWidget<T> get widget => super.widget;
 
+  @override
   void mount(Element parent, dynamic slot) {
     assert(() {
       List<Widget> badAncestors = <Widget>[];
@@ -1434,6 +1501,7 @@
     super.mount(parent, slot);
   }
 
+  @override
   void notifyDescendants(ParentDataWidget<T> oldWidget) {
     void notifyChildren(Element child) {
       if (child is RenderObjectElement) {
@@ -1452,10 +1520,12 @@
 class InheritedElement extends _ProxyElement {
   InheritedElement(InheritedWidget widget) : super(widget);
 
+  @override
   InheritedWidget get widget => super.widget;
 
   final Set<Element> _dependants = new HashSet<Element>();
 
+  @override
   void _updateInheritance() {
     final Map<Type, InheritedElement> incomingWidgets = _parent?._inheritedWidgets;
     if (incomingWidgets != null)
@@ -1465,6 +1535,7 @@
     _inheritedWidgets[widget.runtimeType] = this;
   }
 
+  @override
   void debugDeactivated() {
     assert(() {
       assert(_dependants.isEmpty);
@@ -1473,6 +1544,7 @@
     super.debugDeactivated();
   }
 
+  @override
   void notifyDescendants(InheritedWidget oldWidget) {
     if (!widget.updateShouldNotify(oldWidget))
       return;
@@ -1494,9 +1566,11 @@
 abstract class RenderObjectElement extends BuildableElement {
   RenderObjectElement(RenderObjectWidget widget) : super(widget);
 
+  @override
   RenderObjectWidget get widget => super.widget;
 
   /// The underlying [RenderObject] for this element
+  @override
   RenderObject get renderObject => _renderObject;
   RenderObject _renderObject;
 
@@ -1519,6 +1593,7 @@
     return null;
   }
 
+  @override
   void mount(Element parent, dynamic newSlot) {
     super.mount(parent, newSlot);
     _renderObject = widget.createRenderObject(this);
@@ -1528,6 +1603,7 @@
     _dirty = false;
   }
 
+  @override
   void update(RenderObjectWidget newWidget) {
     super.update(newWidget);
     assert(widget == newWidget);
@@ -1540,6 +1616,7 @@
     _renderObject.debugOwner = debugGetOwnershipChain(10);
   }
 
+  @override
   void performRebuild() {
     _dirty = false;
   }
@@ -1703,11 +1780,13 @@
     return newChildren;
   }
 
+  @override
   void deactivate() {
     super.deactivate();
     assert(!renderObject.attached);
   }
 
+  @override
   void unmount() {
     super.unmount();
     assert(!renderObject.attached);
@@ -1718,6 +1797,7 @@
     parentData.applyParentData(renderObject);
   }
 
+  @override
   void _updateSlot(dynamic newSlot) {
     assert(slot != newSlot);
     super._updateSlot(newSlot);
@@ -1725,6 +1805,7 @@
     _ancestorRenderObjectElement.moveChildRenderObject(renderObject, slot);
   }
 
+  @override
   void attachRenderObject(dynamic newSlot) {
     assert(_ancestorRenderObjectElement == null);
     _slot = newSlot;
@@ -1735,6 +1816,7 @@
       updateParentData(parentDataElement.widget);
   }
 
+  @override
   void detachRenderObject() {
     if (_ancestorRenderObjectElement != null) {
       _ancestorRenderObjectElement.removeChildRenderObject(renderObject);
@@ -1747,6 +1829,7 @@
   void moveChildRenderObject(RenderObject child, dynamic slot);
   void removeChildRenderObject(RenderObject child);
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (renderObject != null)
@@ -1758,14 +1841,17 @@
 class LeafRenderObjectElement extends RenderObjectElement {
   LeafRenderObjectElement(LeafRenderObjectWidget widget): super(widget);
 
+  @override
   void insertChildRenderObject(RenderObject child, dynamic slot) {
     assert(false);
   }
 
+  @override
   void moveChildRenderObject(RenderObject child, dynamic slot) {
     assert(false);
   }
 
+  @override
   void removeChildRenderObject(RenderObject child) {
     assert(false);
   }
@@ -1775,15 +1861,18 @@
 class SingleChildRenderObjectElement extends RenderObjectElement {
   SingleChildRenderObjectElement(SingleChildRenderObjectWidget widget) : super(widget);
 
+  @override
   SingleChildRenderObjectWidget get widget => super.widget;
 
   Element _child;
 
+  @override
   void visitChildren(ElementVisitor visitor) {
     if (_child != null)
       visitor(_child);
   }
 
+  @override
   bool detachChild(Element child) {
     assert(child == _child);
     _deactivateChild(_child);
@@ -1791,17 +1880,20 @@
     return true;
   }
 
+  @override
   void mount(Element parent, dynamic newSlot) {
     super.mount(parent, newSlot);
     _child = updateChild(_child, widget.child, null);
   }
 
+  @override
   void update(SingleChildRenderObjectWidget newWidget) {
     super.update(newWidget);
     assert(widget == newWidget);
     _child = updateChild(_child, widget.child, null);
   }
 
+  @override
   void insertChildRenderObject(RenderObject child, dynamic slot) {
     final RenderObjectWithChildMixin<RenderObject> renderObject = this.renderObject;
     assert(slot == null);
@@ -1809,10 +1901,12 @@
     assert(renderObject == this.renderObject);
   }
 
+  @override
   void moveChildRenderObject(RenderObject child, dynamic slot) {
     assert(false);
   }
 
+  @override
   void removeChildRenderObject(RenderObject child) {
     final RenderObjectWithChildMixin<RenderObject> renderObject = this.renderObject;
     assert(renderObject.child == child);
@@ -1827,6 +1921,7 @@
     assert(!_debugHasDuplicateIds());
   }
 
+  @override
   MultiChildRenderObjectWidget get widget => super.widget;
 
   List<Element> _children;
@@ -1834,18 +1929,21 @@
   // repeatedly to remove children.
   final Set<Element> _detachedChildren = new HashSet<Element>();
 
+  @override
   void insertChildRenderObject(RenderObject child, Element slot) {
     final ContainerRenderObjectMixin<RenderObject, ContainerParentDataMixin<RenderObject>> renderObject = this.renderObject;
     renderObject.insert(child, after: slot?.renderObject);
     assert(renderObject == this.renderObject);
   }
 
+  @override
   void moveChildRenderObject(RenderObject child, dynamic slot) {
     final ContainerRenderObjectMixin<RenderObject, ContainerParentDataMixin<RenderObject>> renderObject = this.renderObject;
     renderObject.move(child, after: slot?.renderObject);
     assert(renderObject == this.renderObject);
   }
 
+  @override
   void removeChildRenderObject(RenderObject child) {
     final ContainerRenderObjectMixin<RenderObject, ContainerParentDataMixin<RenderObject>> renderObject = this.renderObject;
     assert(child.parent == renderObject);
@@ -1871,6 +1969,7 @@
     return false;
   }
 
+  @override
   void visitChildren(ElementVisitor visitor) {
     for (Element child in _children) {
       if (!_detachedChildren.contains(child))
@@ -1878,12 +1977,14 @@
     }
   }
 
+  @override
   bool detachChild(Element child) {
     _detachedChildren.add(child);
     _deactivateChild(child);
     return true;
   }
 
+  @override
   void mount(Element parent, dynamic newSlot) {
     super.mount(parent, newSlot);
     _children = new List<Element>(widget.children.length);
@@ -1895,6 +1996,7 @@
     }
   }
 
+  @override
   void update(MultiChildRenderObjectWidget newWidget) {
     super.update(newWidget);
     assert(widget == newWidget);
@@ -1906,6 +2008,8 @@
 class WidgetError extends AssertionError {
   WidgetError(this.message);
   final String message;
+
+  @override
   String toString() => message;
 }
 
diff --git a/packages/flutter/lib/src/widgets/gesture_detector.dart b/packages/flutter/lib/src/widgets/gesture_detector.dart
index 71a4998..cd0fde5 100644
--- a/packages/flutter/lib/src/widgets/gesture_detector.dart
+++ b/packages/flutter/lib/src/widgets/gesture_detector.dart
@@ -157,6 +157,7 @@
   /// duplication of information.
   final bool excludeFromSemantics;
 
+  @override
   Widget build(BuildContext context) {
     Map<Type, GestureRecognizerFactory> gestures = <Type, GestureRecognizerFactory>{};
 
@@ -261,6 +262,7 @@
   /// duplication of information.
   final bool excludeFromSemantics;
 
+  @override
   RawGestureDetectorState createState() => new RawGestureDetectorState();
 }
 
@@ -268,11 +270,13 @@
 
   Map<Type, GestureRecognizer> _recognizers = const <Type, GestureRecognizer>{};
 
+  @override
   void initState() {
     super.initState();
     _syncAll(config.gestures);
   }
 
+  @override
   void didUpdateConfig(RawGestureDetector oldConfig) {
     _syncAll(config.gestures);
   }
@@ -308,6 +312,7 @@
     }
   }
 
+  @override
   void dispose() {
     for (GestureRecognizer recognizer in _recognizers.values)
       recognizer.dispose();
@@ -340,6 +345,7 @@
     return config.child == null ? HitTestBehavior.translucent : HitTestBehavior.deferToChild;
   }
 
+  @override
   Widget build(BuildContext context) {
     Widget result = new Listener(
       onPointerDown: _handlePointerDown,
@@ -351,6 +357,7 @@
     return result;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (_recognizers == null) {
@@ -458,12 +465,14 @@
     assert(false);
   }
 
+  @override
   RenderSemanticsGestureHandler createRenderObject(BuildContext context) {
     RenderSemanticsGestureHandler result = new RenderSemanticsGestureHandler();
     updateRenderObject(context, result);
     return result;
   }
 
+  @override
   void updateRenderObject(BuildContext context, RenderSemanticsGestureHandler renderObject) {
     Map<Type, GestureRecognizer> recognizers = owner._recognizers;
     renderObject
diff --git a/packages/flutter/lib/src/widgets/gridpaper.dart b/packages/flutter/lib/src/widgets/gridpaper.dart
index 39138b4..bf58684 100644
--- a/packages/flutter/lib/src/widgets/gridpaper.dart
+++ b/packages/flutter/lib/src/widgets/gridpaper.dart
@@ -20,6 +20,7 @@
   final int divisions;
   final int subDivisions;
 
+  @override
   void paint(Canvas canvas, Size size) {
     Paint linePaint = new Paint()
       ..color = color;
@@ -34,6 +35,7 @@
     }
   }
 
+  @override
   bool shouldRepaint(_GridPaperPainter oldPainter) {
     return oldPainter.color != color
         || oldPainter.interval != interval
@@ -41,6 +43,7 @@
         || oldPainter.subDivisions != subDivisions;
   }
 
+  @override
   bool hitTest(Point position) => false;
 }
 
@@ -70,6 +73,7 @@
 
   final Widget child;
 
+  @override
   Widget build(BuildContext context) {
     return new CustomPaint(
       foregroundPainter: new _GridPaperPainter(
diff --git a/packages/flutter/lib/src/widgets/heroes.dart b/packages/flutter/lib/src/widgets/heroes.dart
index f80e087..3b78f40 100644
--- a/packages/flutter/lib/src/widgets/heroes.dart
+++ b/packages/flutter/lib/src/widgets/heroes.dart
@@ -146,6 +146,7 @@
     return result;
   }
 
+  @override
   HeroState createState() => new HeroState();
 }
 
@@ -154,8 +155,10 @@
   GlobalKey _key = new GlobalKey();
   Size _placeholderSize;
 
+  @override
   bool get alwaysAnimate => config.alwaysAnimate;
 
+  @override
   _HeroManifest _takeChild(Rect animationArea, Animation<double> currentAnimation) {
     assert(mounted);
     final RenderBox renderObject = context.findRenderObject();
@@ -198,6 +201,7 @@
       _setChild(null);
   }
 
+  @override
   Widget build(BuildContext context) {
     if (_placeholderSize != null) {
       assert(_key == null);
@@ -237,10 +241,13 @@
   final RelativeRectTween currentRect;
   final Tween<double> currentTurns;
 
+  @override
   bool get alwaysAnimate => true;
 
   bool get taken => _taken;
   bool _taken = false;
+
+  @override
   _HeroManifest _takeChild(Rect animationArea, Animation<double> currentAnimation) {
     assert(!taken);
     _taken = true;
@@ -386,6 +393,7 @@
     }
   }
 
+  @override
   String toString() => '$_heroes';
 }
 
@@ -401,6 +409,7 @@
 
   final List<OverlayEntry> _overlayEntries = new List<OverlayEntry>();
 
+  @override
   void didPush(Route<dynamic> route, Route<dynamic> previousRoute) {
     assert(navigator != null);
     assert(route != null);
@@ -414,6 +423,7 @@
     }
   }
 
+  @override
   void didPop(Route<dynamic> route, Route<dynamic> previousRoute) {
     assert(navigator != null);
     assert(route != null);
diff --git a/packages/flutter/lib/src/widgets/implicit_animations.dart b/packages/flutter/lib/src/widgets/implicit_animations.dart
index 7508246..359cf66 100644
--- a/packages/flutter/lib/src/widgets/implicit_animations.dart
+++ b/packages/flutter/lib/src/widgets/implicit_animations.dart
@@ -11,6 +11,7 @@
 class BoxConstraintsTween extends Tween<BoxConstraints> {
   BoxConstraintsTween({ BoxConstraints begin, BoxConstraints end }) : super(begin: begin, end: end);
 
+  @override
   BoxConstraints lerp(double t) => BoxConstraints.lerp(begin, end, t);
 }
 
@@ -18,6 +19,7 @@
 class DecorationTween extends Tween<Decoration> {
   DecorationTween({ Decoration begin, Decoration end }) : super(begin: begin, end: end);
 
+  @override
   Decoration lerp(double t) {
     if (begin == null && end == null)
       return null;
@@ -31,6 +33,7 @@
 class EdgeInsetsTween extends Tween<EdgeInsets> {
   EdgeInsetsTween({ EdgeInsets begin, EdgeInsets end }) : super(begin: begin, end: end);
 
+  @override
   EdgeInsets lerp(double t) => EdgeInsets.lerp(begin, end, t);
 }
 
@@ -40,6 +43,7 @@
 class Matrix4Tween extends Tween<Matrix4> {
   Matrix4Tween({ Matrix4 begin, Matrix4 end }) : super(begin: begin, end: end);
 
+  @override
   Matrix4 lerp(double t) {
     // TODO(mpcomplete): Animate the full matrix. Will animating the cells
     // separately work?
@@ -68,8 +72,10 @@
   /// The duration over which to animate the parameters of this container.
   final Duration duration;
 
+  @override
   AnimatedWidgetBaseState<AnimatedWidgetBase> createState();
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('duration: ${duration.inMilliseconds}ms');
@@ -90,6 +96,7 @@
   Animation<double> get animation => _animation;
   Animation<double> _animation;
 
+  @override
   void initState() {
     super.initState();
     _controller = new AnimationController(
@@ -100,6 +107,7 @@
     _constructTweens();
   }
 
+  @override
   void didUpdateConfig(T oldConfig) {
     if (config.curve != oldConfig.curve)
       _updateCurve();
@@ -122,6 +130,7 @@
       _animation = _controller;
   }
 
+  @override
   void dispose() {
     _controller.stop();
     super.dispose();
@@ -229,8 +238,10 @@
   /// If non-null, requires the decoration to have this height.
   final double height;
 
+  @override
   _AnimatedContainerState createState() => new _AnimatedContainerState();
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (constraints != null)
@@ -262,6 +273,7 @@
   Tween<double> _width;
   Tween<double> _height;
 
+  @override
   void forEachTween(TweenVisitor<dynamic> visitor) {
     // TODO(ianh): Use constructor tear-offs when it becomes possible
     _constraints = visitor(_constraints, config.constraints, (dynamic value) => new BoxConstraintsTween(begin: value));
@@ -274,6 +286,7 @@
     _height = visitor(_height, config.height, (dynamic value) => new Tween<double>(begin: value));
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Container(
       child: config.child,
@@ -288,6 +301,7 @@
     );
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (_constraints != null)
@@ -370,6 +384,7 @@
   /// set. The third must be null.
   final double height;
 
+  @override
   _AnimatedPositionedState createState() => new _AnimatedPositionedState();
 }
 
@@ -381,6 +396,7 @@
   Tween<double> _width;
   Tween<double> _height;
 
+  @override
   void forEachTween(TweenVisitor<dynamic> visitor) {
     // TODO(ianh): Use constructor tear-offs when it becomes possible
     _left = visitor(_left, config.left, (dynamic value) => new Tween<double>(begin: value));
@@ -391,6 +407,7 @@
     _height = visitor(_height, config.height, (dynamic value) => new Tween<double>(begin: value));
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Positioned(
       child: config.child,
@@ -403,6 +420,7 @@
     );
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (_left != null)
diff --git a/packages/flutter/lib/src/widgets/locale_query.dart b/packages/flutter/lib/src/widgets/locale_query.dart
index b45f0b5..5b73fd4 100644
--- a/packages/flutter/lib/src/widgets/locale_query.dart
+++ b/packages/flutter/lib/src/widgets/locale_query.dart
@@ -26,8 +26,10 @@
     return query?.data;
   }
 
+  @override
   bool updateShouldNotify(LocaleQuery old) => data != old.data;
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('$data');
diff --git a/packages/flutter/lib/src/widgets/media_query.dart b/packages/flutter/lib/src/widgets/media_query.dart
index 39531d6..5afd18e 100644
--- a/packages/flutter/lib/src/widgets/media_query.dart
+++ b/packages/flutter/lib/src/widgets/media_query.dart
@@ -34,6 +34,7 @@
     return size.width > size.height ? Orientation.landscape : Orientation.portrait;
   }
 
+  @override
   bool operator==(Object other) {
     if (other.runtimeType != runtimeType)
       return false;
@@ -43,12 +44,14 @@
         && typedOther.devicePixelRatio == devicePixelRatio;
   }
 
+  @override
   int get hashCode => hashValues(
     size.hashCode,
     padding.hashCode,
     devicePixelRatio.hashCode
   );
 
+  @override
   String toString() => '$runtimeType($size, $orientation)';
 }
 
@@ -76,8 +79,10 @@
     return query == null ? null : query.data;
   }
 
+  @override
   bool updateShouldNotify(MediaQuery old) => data != old.data;
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('$data');
diff --git a/packages/flutter/lib/src/widgets/mimic.dart b/packages/flutter/lib/src/widgets/mimic.dart
index 7faae04..76fd8fa 100644
--- a/packages/flutter/lib/src/widgets/mimic.dart
+++ b/packages/flutter/lib/src/widgets/mimic.dart
@@ -129,6 +129,7 @@
   /// A handle to the widget that this widget should copy.
   final MimicableHandle original;
 
+  @override
   Widget build(BuildContext context) {
     if (original != null && original._state.mounted && original._state._placeholderSize != null)
       return original._state.config.child;
@@ -145,6 +146,7 @@
 
   final Widget child;
 
+  @override
   MimicableState createState() => new MimicableState();
 }
 
@@ -222,6 +224,7 @@
     }
   }
 
+  @override
   Widget build(BuildContext context) {
     if (_placeholderSize != null) {
       return new ConstrainedBox(
diff --git a/packages/flutter/lib/src/widgets/mixed_viewport.dart b/packages/flutter/lib/src/widgets/mixed_viewport.dart
index 8df1ba3..018542d 100644
--- a/packages/flutter/lib/src/widgets/mixed_viewport.dart
+++ b/packages/flutter/lib/src/widgets/mixed_viewport.dart
@@ -33,10 +33,12 @@
   final ViewportDimensionsChangeCallback onPaintOffsetUpdateNeeded;
   final InvalidatorAvailableCallback onInvalidatorAvailable; // call the callback this gives to invalidate sizes
 
+  @override
   _MixedViewportElement createElement() => new _MixedViewportElement(this);
 
   // we don't pass constructor arguments to the RenderBlockViewport() because until
   // we know our children, the constructor arguments we could give have no effect
+  @override
   RenderBlockViewport createRenderObject(BuildContext context) => new RenderBlockViewport();
 
   _ChangeDescription evaluateChangesFrom(MixedViewport oldWidget) {
@@ -55,8 +57,11 @@
 class _ChildKey {
   const _ChildKey(this.type, this.key);
   factory _ChildKey.fromWidget(Widget widget) => new _ChildKey(widget.runtimeType, widget.key);
+
   final Type type;
   final Key key;
+
+  @override
   bool operator ==(dynamic other) {
     if (other is! _ChildKey)
       return false;
@@ -64,7 +69,11 @@
     return type == typedOther.type &&
            key == typedOther.key;
   }
+
+  @override
   int get hashCode => hashValues(type, key);
+
+  @override
   String toString() => "_ChildKey(type: $type, key: $key)";
 }
 
@@ -74,6 +83,7 @@
       widget.onInvalidatorAvailable(invalidate);
   }
 
+  @override
   MixedViewport get widget => super.widget;
 
   /// _childExtents contains the extents of each child from the top of the list
@@ -115,6 +125,7 @@
   double _overrideStartOffset;
   double get startOffset => _overrideStartOffset ?? widget.startOffset;
 
+  @override
   RenderBlockViewport get renderObject => super.renderObject;
 
   /// Notify the BlockViewport that the children at indices have, or might have,
@@ -136,11 +147,13 @@
     _invalidIndices.clear();
   }
 
+  @override
   void visitChildren(ElementVisitor visitor) {
     for (Element child in _childrenByKey.values)
       visitor(child);
   }
 
+  @override
   void mount(Element parent, dynamic newSlot) {
     super.mount(parent, newSlot);
     renderObject
@@ -152,6 +165,7 @@
       ..minCrossAxisExtentCallback = _noIntrinsicExtent;
   }
 
+  @override
   void unmount() {
     renderObject
       ..callback = null
@@ -178,6 +192,7 @@
 
   static final Object _omit = new Object(); // used as a slot when it's not yet time to attach the child
 
+  @override
   void update(MixedViewport newWidget) {
     _ChangeDescription changes = newWidget.evaluateChangesFrom(widget);
     super.update(newWidget);
@@ -205,6 +220,7 @@
     }
   }
 
+  @override
   void performRebuild() {
     // we just need to redraw our existing widgets as-is
     if (_childrenByKey.length > 0) {
@@ -614,11 +630,13 @@
     _firstVisibleChildIndex = startIndex;
   }
 
+  @override
   void updateSlotForChild(Element element, dynamic newSlot) {
     assert(newSlot == null || newSlot == _omit || newSlot is Element);
     super.updateSlotForChild(element, newSlot);
   }
 
+  @override
   void insertChildRenderObject(RenderObject child, dynamic slot) {
     if (slot == _omit)
       return;
@@ -626,6 +644,7 @@
     renderObject.insert(child, after: slot?.renderObject);
   }
 
+  @override
   void moveChildRenderObject(RenderObject child, dynamic slot) {
     if (slot == _omit)
       return;
@@ -638,6 +657,7 @@
       renderObject.insert(child, after: previousSibling);
   }
 
+  @override
   void removeChildRenderObject(RenderObject child) {
     if (child.parent != renderObject)
       return; // probably had slot == _omit when inserted
diff --git a/packages/flutter/lib/src/widgets/modal_barrier.dart b/packages/flutter/lib/src/widgets/modal_barrier.dart
index 38e0699..62c36ea 100644
--- a/packages/flutter/lib/src/widgets/modal_barrier.dart
+++ b/packages/flutter/lib/src/widgets/modal_barrier.dart
@@ -22,6 +22,7 @@
   /// Whether touching the barrier will pop the current route off the [Navigator].
   final bool dismissable;
 
+  @override
   Widget build(BuildContext context) {
     return new Semantics(
       container: true,
@@ -58,6 +59,7 @@
   /// Whether touching the barrier will pop the current route off the [Navigator].
   final bool dismissable;
 
+  @override
   Widget build(BuildContext context) {
     return new ModalBarrier(
       color: color.value,
diff --git a/packages/flutter/lib/src/widgets/navigator.dart b/packages/flutter/lib/src/widgets/navigator.dart
index cf5eb51..fa903c0 100644
--- a/packages/flutter/lib/src/widgets/navigator.dart
+++ b/packages/flutter/lib/src/widgets/navigator.dart
@@ -97,6 +97,7 @@
   /// The initial route typically skips any entrance transition to speed startup.
   final bool isInitialRoute;
 
+  @override
   String toString() {
     String result = '"$name"';
     if (mostValuableKeys != null && mostValuableKeys.isNotEmpty) {
@@ -271,6 +272,7 @@
     navigator.openTransaction(callback);
   }
 
+  @override
   NavigatorState createState() => new NavigatorState();
 }
 
@@ -279,6 +281,7 @@
   final GlobalKey<OverlayState> _overlayKey = new GlobalKey<OverlayState>();
   final List<Route<dynamic>> _history = new List<Route<dynamic>>();
 
+  @override
   void initState() {
     super.initState();
     assert(config.observer == null || config.observer.navigator == null);
@@ -289,6 +292,7 @@
     )));
   }
 
+  @override
   void didUpdateConfig(Navigator oldConfig) {
     if (oldConfig.observer != config.observer) {
       oldConfig.observer?._navigator = null;
@@ -297,6 +301,7 @@
     }
   }
 
+  @override
   void dispose() {
     assert(!_debugLocked);
     assert(() { _debugLocked = true; return true; });
@@ -481,6 +486,7 @@
     return true;
   }
 
+  @override
   Widget build(BuildContext context) {
     assert(!_debugLocked);
     assert(_history.isNotEmpty);
diff --git a/packages/flutter/lib/src/widgets/notification_listener.dart b/packages/flutter/lib/src/widgets/notification_listener.dart
index b47bd88..4bd91b4 100644
--- a/packages/flutter/lib/src/widgets/notification_listener.dart
+++ b/packages/flutter/lib/src/widgets/notification_listener.dart
@@ -42,6 +42,7 @@
     return false;
   }
 
+  @override
   Widget build(BuildContext context) => child;
 }
 
diff --git a/packages/flutter/lib/src/widgets/overlay.dart b/packages/flutter/lib/src/widgets/overlay.dart
index d7bf3e8..deb3eab 100644
--- a/packages/flutter/lib/src/widgets/overlay.dart
+++ b/packages/flutter/lib/src/widgets/overlay.dart
@@ -46,15 +46,21 @@
     _key.currentState?.setState(() { /* the state that changed is in the builder */ });
   }
 
+  @override
   String toString() => '$runtimeType@$hashCode(opaque: $opaque)';
 }
 
 class _OverlayEntry extends StatefulWidget {
   _OverlayEntry(OverlayEntry entry) : entry = entry, super(key: entry._key);
+
   final OverlayEntry entry;
+
+  @override
   _OverlayEntryState createState() => new _OverlayEntryState();
 }
+
 class _OverlayEntryState extends State<_OverlayEntry> {
+  @override
   Widget build(BuildContext context) => config.entry.builder(context);
 }
 
@@ -98,6 +104,7 @@
     return result;
   }
 
+  @override
   OverlayState createState() => new OverlayState();
 }
 
@@ -105,6 +112,7 @@
 class OverlayState extends State<Overlay> {
   final List<OverlayEntry> _entries = new List<OverlayEntry>();
 
+  @override
   void initState() {
     super.initState();
     insertAll(config.initialEntries);
@@ -171,6 +179,7 @@
     return result;
   }
 
+  @override
   Widget build(BuildContext context) {
     List<Widget> backwardsChildren = <Widget>[];
 
@@ -184,6 +193,7 @@
     return new Stack(children: backwardsChildren.reversed.toList(growable: false));
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('entries: $_entries');
diff --git a/packages/flutter/lib/src/widgets/page_storage.dart b/packages/flutter/lib/src/widgets/page_storage.dart
index 6a2233b..69853a1 100644
--- a/packages/flutter/lib/src/widgets/page_storage.dart
+++ b/packages/flutter/lib/src/widgets/page_storage.dart
@@ -7,13 +7,17 @@
 class _StorageEntryIdentifier {
   Type clientType;
   List<Key> keys;
+
   void addKey(Key key) {
     assert(key != null);
     assert(key is! GlobalKey);
     keys ??= <Key>[];
     keys.add(key);
   }
+
   GlobalKey scopeKey;
+
+  @override
   bool operator ==(dynamic other) {
     if (other is! _StorageEntryIdentifier)
       return false;
@@ -30,8 +34,11 @@
     }
     return true;
   }
+
+  @override
   int get hashCode => hashValues(clientType, scopeKey, hashList(keys));
 
+  @override
   String toString() {
     return 'StorageEntryIdentifier($clientType, $scopeKey, ${keys?.join(":")})';
   }
@@ -102,5 +109,6 @@
     return widget?.bucket;
   }
 
+  @override
   Widget build(BuildContext context) => child;
 }
diff --git a/packages/flutter/lib/src/widgets/pageable_list.dart b/packages/flutter/lib/src/widgets/pageable_list.dart
index 3cefe42..e06f8d0 100644
--- a/packages/flutter/lib/src/widgets/pageable_list.dart
+++ b/packages/flutter/lib/src/widgets/pageable_list.dart
@@ -73,6 +73,7 @@
   /// The list of pages themselves.
   final Iterable<Widget> children;
 
+  @override
   PageableListState<PageableList> createState() => new PageableListState<PageableList>();
 }
 
@@ -96,11 +97,13 @@
     }
   }
 
+  @override
   double pixelOffsetToScrollOffset(double pixelOffset) {
     final double pixelsPerScrollUnit = _pixelsPerScrollUnit;
     return super.pixelOffsetToScrollOffset(pixelsPerScrollUnit == 0.0 ? 0.0 : pixelOffset / pixelsPerScrollUnit);
   }
 
+  @override
   double scrollOffsetToPixelOffset(double scrollOffset) {
     return super.scrollOffsetToPixelOffset(scrollOffset * _pixelsPerScrollUnit);
   }
@@ -118,11 +121,13 @@
     }
   }
 
+  @override
   void initState() {
     super.initState();
     _updateScrollBehavior();
   }
 
+  @override
   void didUpdateConfig(PageableList oldConfig) {
     super.didUpdateConfig(oldConfig);
 
@@ -149,21 +154,25 @@
     ));
   }
 
+  @override
   void dispatchOnScrollStart() {
     super.dispatchOnScrollStart();
     config.scrollableListPainter?.scrollStarted();
   }
 
+  @override
   void dispatchOnScroll() {
     super.dispatchOnScroll();
     config.scrollableListPainter?.scrollOffset = scrollOffset;
   }
 
+  @override
   void dispatchOnScrollEnd() {
     super.dispatchOnScrollEnd();
     config.scrollableListPainter?.scrollEnded();
   }
 
+  @override
   Widget buildContent(BuildContext context) {
     return new PageViewport(
       itemsWrap: config.itemsWrap,
@@ -178,6 +187,7 @@
   UnboundedBehavior _unboundedBehavior;
   OverscrollBehavior _overscrollBehavior;
 
+  @override
   ExtentScrollBehavior get scrollBehavior {
     if (config.itemsWrap) {
       _unboundedBehavior ??= new UnboundedBehavior();
@@ -187,10 +197,13 @@
     return _overscrollBehavior;
   }
 
+  @override
   ScrollBehavior<double, double> createScrollBehavior() => scrollBehavior;
 
+  @override
   bool get shouldSnapScrollOffset => config.itemsSnapAlignment == PageableListFlingBehavior.canFlingAcrossMultiplePages;
 
+  @override
   double snapScrollOffset(double newScrollOffset) {
     final double previousItemOffset = newScrollOffset.floorToDouble();
     final double nextItemOffset = newScrollOffset.ceilToDouble();
@@ -205,6 +218,7 @@
       .then(_notifyPageChanged);
   }
 
+  @override
   Future<Null> fling(double scrollVelocity) {
     switch(config.itemsSnapAlignment) {
       case PageableListFlingBehavior.canFlingAcrossMultiplePages:
@@ -214,6 +228,7 @@
     }
   }
 
+  @override
   Future<Null> settleScrollOffset() {
     return scrollTo(snapScrollOffset(scrollOffset), duration: config.duration, curve: config.curve)
       .then(_notifyPageChanged);
@@ -237,43 +252,57 @@
     assert(mainAxis != null);
   }
 
+  @override
   final double startOffset;
+
   final Axis mainAxis;
   final ViewportAnchor anchor;
   final bool itemsWrap;
   final RenderObjectPainter overlayPainter;
+
+  @override
   final Iterable<Widget> children;
 
+  @override
   RenderList createRenderObject(BuildContext context) => new RenderList();
 
+  @override
   _PageViewportElement createElement() => new _PageViewportElement(this);
 }
 
 class _PageViewportElement extends VirtualViewportElement {
   _PageViewportElement(PageViewport widget) : super(widget);
 
+  @override
   PageViewport get widget => super.widget;
 
+  @override
   RenderList get renderObject => super.renderObject;
 
+  @override
   int get materializedChildBase => _materializedChildBase;
   int _materializedChildBase;
 
+  @override
   int get materializedChildCount => _materializedChildCount;
   int _materializedChildCount;
 
+  @override
   double get startOffsetBase => _startOffsetBase;
   double _startOffsetBase;
 
+  @override
   double get startOffsetLimit =>_startOffsetLimit;
   double _startOffsetLimit;
 
+  @override
   double scrollOffsetToPixelOffset(double scrollOffset) {
     if (_containerExtent == null)
       return 0.0;
     return super.scrollOffsetToPixelOffset(scrollOffset) * _containerExtent;
   }
 
+  @override
   void updateRenderObject(PageViewport oldWidget) {
     renderObject
       ..mainAxis = widget.mainAxis
@@ -298,6 +327,7 @@
     renderObject.dimensions = new ViewportDimensions(containerSize: containerSize, contentSize: materializedContentSize);
   }
 
+  @override
   void layout(BoxConstraints constraints) {
     final int length = renderObject.virtualChildCount;
 
diff --git a/packages/flutter/lib/src/widgets/pages.dart b/packages/flutter/lib/src/widgets/pages.dart
index f0abba4..5a29e60 100644
--- a/packages/flutter/lib/src/widgets/pages.dart
+++ b/packages/flutter/lib/src/widgets/pages.dart
@@ -15,11 +15,20 @@
     Completer<T> completer,
     RouteSettings settings: const RouteSettings()
   }) : super(completer: completer, settings: settings);
+
+  @override
   bool get opaque => true;
+
+  @override
   bool get barrierDismissable => false;
+
+  @override
   bool canTransitionTo(TransitionRoute<dynamic> nextRoute) => nextRoute is PageRoute<dynamic>;
+
+  @override
   bool canTransitionFrom(TransitionRoute<dynamic> nextRoute) => nextRoute is PageRoute<dynamic>;
 
+  @override
   AnimationController createAnimationController() {
     AnimationController controller = super.createAnimationController();
     if (settings.isInitialRoute)
diff --git a/packages/flutter/lib/src/widgets/performance_overlay.dart b/packages/flutter/lib/src/widgets/performance_overlay.dart
index 3aa1045..0205071 100644
--- a/packages/flutter/lib/src/widgets/performance_overlay.dart
+++ b/packages/flutter/lib/src/widgets/performance_overlay.dart
@@ -56,11 +56,13 @@
   /// how many frame intervals).
   final int rasterizerThreshold;
 
+  @override
   RenderPerformanceOverlay createRenderObject(BuildContext context) => new RenderPerformanceOverlay(
     optionsMask: optionsMask,
     rasterizerThreshold: rasterizerThreshold
   );
 
+  @override
   void updateRenderObject(BuildContext context, RenderPerformanceOverlay renderObject) {
     renderObject
       ..optionsMask = optionsMask
diff --git a/packages/flutter/lib/src/widgets/placeholder.dart b/packages/flutter/lib/src/widgets/placeholder.dart
index aaccb3b..6b40b21 100644
--- a/packages/flutter/lib/src/widgets/placeholder.dart
+++ b/packages/flutter/lib/src/widgets/placeholder.dart
@@ -9,6 +9,7 @@
 class Placeholder extends StatefulWidget {
   Placeholder({ Key key }) : super(key: key);
 
+  @override
   PlaceholderState createState() => new PlaceholderState();
 }
 
@@ -29,6 +30,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     if (_child != null)
       return child;
diff --git a/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart b/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart
index 3e3088f..399813a 100644
--- a/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart
+++ b/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart
@@ -23,10 +23,12 @@
   final ValueChanged<mojom.InputEvent> onKey;
   final Widget child;
 
+  @override
   _RawKeyboardListenerState createState() => new _RawKeyboardListenerState();
 }
 
 class _RawKeyboardListenerState extends State<RawKeyboardListener> implements mojom.RawKeyboardListener {
+  @override
   void initState() {
     super.initState();
     _attachOrDetachKeyboard();
@@ -34,10 +36,12 @@
 
   mojom.RawKeyboardListenerStub _stub;
 
+  @override
   void didUpdateConfig(RawKeyboardListener oldConfig) {
     _attachOrDetachKeyboard();
   }
 
+  @override
   void dispose() {
     _detachKeyboardIfAttached();
     super.dispose();
@@ -65,11 +69,13 @@
     _stub = null;
   }
 
+  @override
   void onKey(mojom.InputEvent event) {
     if (config.onKey != null)
       config.onKey(event);
   }
 
+  @override
   Widget build(BuildContext context) {
     return config.child;
   }
diff --git a/packages/flutter/lib/src/widgets/routes.dart b/packages/flutter/lib/src/widgets/routes.dart
index 0da4a7a..03939aa 100644
--- a/packages/flutter/lib/src/widgets/routes.dart
+++ b/packages/flutter/lib/src/widgets/routes.dart
@@ -21,9 +21,11 @@
   List<WidgetBuilder> get builders;
 
   /// The entries this route has placed in the overlay.
+  @override
   List<OverlayEntry> get overlayEntries => _overlayEntries;
   final List<OverlayEntry> _overlayEntries = <OverlayEntry>[];
 
+  @override
   void install(OverlayEntry insertionPoint) {
     assert(_overlayEntries.isEmpty);
     for (WidgetBuilder builder in builders)
@@ -40,6 +42,7 @@
   /// responsibility of the Route to later call dispose().
   ///
   /// Subclasses shouldn't call this if they want to delay the finished() call.
+  @override
   bool didPop(T result) {
     finished();
     return true;
@@ -58,6 +61,7 @@
     _overlayEntries.clear();
   }
 
+  @override
   void dispose() {
     finished();
   }
@@ -145,6 +149,7 @@
   Animation<double> get forwardAnimation => _forwardAnimation;
   final ProxyAnimation _forwardAnimation = new ProxyAnimation(kAlwaysDismissedAnimation);
 
+  @override
   void install(OverlayEntry insertionPoint) {
     _controller = createAnimationController();
     assert(_controller != null);
@@ -153,12 +158,14 @@
     super.install(insertionPoint);
   }
 
+  @override
   void didPush() {
     _animation.addStatusListener(_handleStatusChanged);
     _controller.forward();
     super.didPush();
   }
 
+  @override
   void didReplace(Route<dynamic> oldRoute) {
     if (oldRoute is TransitionRoute<dynamic>)
       _controller.value = oldRoute._controller.value;
@@ -166,6 +173,7 @@
     super.didReplace(oldRoute);
   }
 
+  @override
   bool didPop(T result) {
     _result = result;
     _controller.reverse();
@@ -173,11 +181,13 @@
     return true;
   }
 
+  @override
   void didPopNext(Route<dynamic> nextRoute) {
     _updateForwardAnimation(nextRoute);
     super.didPopNext(nextRoute);
   }
 
+  @override
   void didChangeNext(Route<dynamic> nextRoute) {
     _updateForwardAnimation(nextRoute);
     super.didChangeNext(nextRoute);
@@ -224,17 +234,21 @@
   /// need to coordinate transitions with.
   bool canTransitionFrom(TransitionRoute<dynamic> nextRoute) => true;
 
+  @override
   void finished() {
     super.finished();
     _transitionCompleter?.complete(_result);
   }
 
+  @override
   void dispose() {
     _controller.stop();
     super.dispose();
   }
 
   String get debugLabel => '$runtimeType';
+
+  @override
   String toString() => '$runtimeType(animation: $_controller)';
 }
 
@@ -295,6 +309,8 @@
     entry._owner = null;
     entry._notifyRemoved();
   }
+
+  @override
   bool didPop(T result) {
     if (_localHistory != null && _localHistory.length > 0) {
       LocalHistoryEntry entry = _localHistory.removeLast();
@@ -305,6 +321,8 @@
     }
     return super.didPop(result);
   }
+
+  @override
   bool get willHandlePopInternally {
     return _localHistory != null && _localHistory.length > 0;
   }
@@ -325,11 +343,13 @@
   final bool isCurrent;
   final Route<dynamic> route;
 
+  @override
   bool updateShouldNotify(_ModalScopeStatus old) {
     return isCurrent != old.isCurrent ||
            route != old.route;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('${isCurrent ? "active" : "inactive"}');
@@ -344,20 +364,24 @@
 
   final ModalRoute<dynamic> route;
 
+  @override
   _ModalScopeState createState() => new _ModalScopeState();
 }
 
 class _ModalScopeState extends State<_ModalScope> {
+  @override
   void initState() {
     super.initState();
     config.route.animation?.addStatusListener(_animationStatusChanged);
     config.route.forwardAnimation?.addStatusListener(_animationStatusChanged);
   }
 
+  @override
   void didUpdateConfig(_ModalScope oldConfig) {
     assert(config.route == oldConfig.route);
   }
 
+  @override
   void dispose() {
     config.route.animation?.removeStatusListener(_animationStatusChanged);
     config.route.forwardAnimation?.removeStatusListener(_animationStatusChanged);
@@ -370,6 +394,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     Widget contents = new PageStorage(
       key: config.route._subtreeKey,
@@ -486,6 +511,7 @@
     return child;
   }
 
+  @override
   void didPush() {
     Focus.moveScopeTo(new GlobalObjectKey(this), context: navigator.context);
     super.didPush();
@@ -569,18 +595,24 @@
     );
   }
 
+  @override
   List<WidgetBuilder> get builders => <WidgetBuilder>[
     _buildModalBarrier,
     _buildModalScope
   ];
 
+  @override
   String toString() => '$runtimeType($settings, animation: $_animation)';
 }
 
 /// A modal route that overlays a widget over the current route.
 abstract class PopupRoute<T> extends ModalRoute<T> {
   PopupRoute({ Completer<T> completer }) : super(completer: completer);
+
+  @override
   bool get opaque => false;
+
+  @override
   void didChangeNext(Route<dynamic> nextRoute) {
     assert(nextRoute is! PageRoute<dynamic>);
     super.didChangeNext(nextRoute);
diff --git a/packages/flutter/lib/src/widgets/scroll_behavior.dart b/packages/flutter/lib/src/widgets/scroll_behavior.dart
index 01228d2..beca2da 100644
--- a/packages/flutter/lib/src/widgets/scroll_behavior.dart
+++ b/packages/flutter/lib/src/widgets/scroll_behavior.dart
@@ -36,6 +36,7 @@
   /// Whether this scroll behavior currently permits scrolling
   bool get isScrollable => true;
 
+  @override
   String toString() {
     List<String> description = <String>[];
     debugFillDescription(description);
@@ -85,6 +86,7 @@
   /// The maximum value the scroll offset can obtain.
   double get maxScrollOffset;
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('content: ${contentExtent.toStringAsFixed(1)}');
@@ -104,6 +106,7 @@
 
   double _minScrollOffset;
 
+  @override
   double updateExtents({
     double contentExtent,
     double containerExtent,
@@ -121,9 +124,13 @@
     );
   }
 
+  @override
   double get minScrollOffset => _minScrollOffset;
+
+  @override
   double get maxScrollOffset => math.max(minScrollOffset, minScrollOffset + _contentExtent - _containerExtent);
 
+  @override
   double applyCurve(double scrollOffset, double scrollDelta) {
     return (scrollOffset + scrollDelta).clamp(minScrollOffset, maxScrollOffset);
   }
@@ -145,6 +152,7 @@
   UnboundedBehavior({ double contentExtent: 0.0, double containerExtent: 0.0 })
     : super(contentExtent: contentExtent, containerExtent: containerExtent);
 
+  @override
   Simulation createScrollSimulation(double position, double velocity) {
     double velocityPerSecond = velocity * 1000.0;
     return new BoundedFrictionSimulation(
@@ -152,13 +160,18 @@
     );
   }
 
+  @override
   Simulation createSnapScrollSimulation(double startOffset, double endOffset, double startVelocity, double endVelocity) {
     return _createSnapScrollSimulation(startOffset, endOffset, startVelocity, endVelocity);
   }
 
+  @override
   double get minScrollOffset => double.NEGATIVE_INFINITY;
+
+  @override
   double get maxScrollOffset => double.INFINITY;
 
+  @override
   double applyCurve(double scrollOffset, double scrollDelta) {
     return scrollOffset + scrollDelta;
   }
@@ -169,14 +182,17 @@
   OverscrollBehavior({ double contentExtent: 0.0, double containerExtent: 0.0, double minScrollOffset: 0.0 })
     : super(contentExtent: contentExtent, containerExtent: containerExtent, minScrollOffset: minScrollOffset);
 
+  @override
   Simulation createScrollSimulation(double position, double velocity) {
     return _createScrollSimulation(position, velocity, minScrollOffset, maxScrollOffset);
   }
 
+  @override
   Simulation createSnapScrollSimulation(double startOffset, double endOffset, double startVelocity, double endVelocity) {
     return _createSnapScrollSimulation(startOffset, endOffset, startVelocity, endVelocity);
   }
 
+  @override
   double applyCurve(double scrollOffset, double scrollDelta) {
     double newScrollOffset = scrollOffset + scrollDelta;
     // If we're overscrolling, we want move the scroll offset 2x
@@ -199,14 +215,17 @@
   OverscrollWhenScrollableBehavior({ double contentExtent: 0.0, double containerExtent: 0.0, double minScrollOffset: 0.0 })
     : super(contentExtent: contentExtent, containerExtent: containerExtent, minScrollOffset: minScrollOffset);
 
+  @override
   bool get isScrollable => contentExtent > containerExtent;
 
+  @override
   Simulation createScrollSimulation(double position, double velocity) {
     if (isScrollable || position < minScrollOffset || position > maxScrollOffset)
       return super.createScrollSimulation(position, velocity);
     return null;
   }
 
+  @override
   double applyCurve(double scrollOffset, double scrollDelta) {
     if (isScrollable)
       return super.applyCurve(scrollOffset, scrollDelta);
diff --git a/packages/flutter/lib/src/widgets/scrollable.dart b/packages/flutter/lib/src/widgets/scrollable.dart
index 065456e..4f606ff 100644
--- a/packages/flutter/lib/src/widgets/scrollable.dart
+++ b/packages/flutter/lib/src/widgets/scrollable.dart
@@ -175,6 +175,7 @@
     return new Future<Null>.value();
   }
 
+  @override
   ScrollableState createState();
 }
 
@@ -218,6 +219,7 @@
 /// terms of the [pixelOffsetToScrollOffset] and
 /// [scrollOffsetToPixelOffset] methods.
 abstract class ScrollableState<T extends Scrollable> extends State<T> {
+  @override
   void initState() {
     super.initState();
     _controller = new AnimationController.unbounded()..addListener(_handleAnimationChanged);
@@ -226,6 +228,7 @@
 
   AnimationController _controller;
 
+  @override
   void dispose() {
     _controller.stop();
     super.dispose();
@@ -518,6 +521,7 @@
 
   final GlobalKey _gestureDetectorKey = new GlobalKey();
 
+  @override
   Widget build(BuildContext context) {
     return new RawGestureDetector(
       key: _gestureDetectorKey,
@@ -629,11 +633,15 @@
 
   final Widget child;
 
+  @override
   ScrollableState createState() => new _ScrollableViewportState();
 }
 
 class _ScrollableViewportState extends ScrollableState<ScrollableViewport> {
+  @override
   ScrollBehavior<double, double> createScrollBehavior() => new OverscrollWhenScrollableBehavior();
+
+  @override
   OverscrollWhenScrollableBehavior get scrollBehavior => super.scrollBehavior;
 
   double _viewportSize = 0.0;
@@ -655,6 +663,7 @@
     return scrollOffsetToPixelDelta(scrollOffset);
   }
 
+  @override
   Widget buildContent(BuildContext context) {
     return new Viewport(
       paintOffset: scrollOffsetToPixelDelta(scrollOffset),
@@ -692,6 +701,7 @@
   final ScrollListener onScroll;
   final Key scrollableKey;
 
+  @override
   Widget build(BuildContext context) {
     Widget contents = new BlockBody(children: children, mainAxis: scrollDirection);
     if (padding != null)
@@ -708,12 +718,14 @@
 }
 
 abstract class ScrollableListPainter extends RenderObjectPainter {
+  @override
   void attach(RenderObject renderObject) {
     assert(renderObject is RenderBox);
     assert(renderObject is HasMainAxis);
     super.attach(renderObject);
   }
 
+  @override
   RenderBox get renderObject => super.renderObject;
 
   Axis get scrollDirection {
@@ -784,10 +796,12 @@
   final Object token;
   final InvalidatorAvailableCallback onInvalidatorAvailable;
 
+  @override
   ScrollableMixedWidgetListState createState() => new ScrollableMixedWidgetListState();
 }
 
 class ScrollableMixedWidgetListState extends ScrollableState<ScrollableMixedWidgetList> {
+  @override
   void initState() {
     super.initState();
     scrollBehavior.updateExtents(
@@ -795,7 +809,10 @@
     );
   }
 
+  @override
   ScrollBehavior<double, double> createScrollBehavior() => new OverscrollBehavior();
+
+  @override
   OverscrollBehavior get scrollBehavior => super.scrollBehavior;
 
   Offset _handlePaintOffsetUpdateNeeded(ViewportDimensions dimensions) {
@@ -812,6 +829,7 @@
     return scrollOffsetToPixelDelta(scrollOffset);
   }
 
+  @override
   Widget buildContent(BuildContext context) {
     return new MixedViewport(
       startOffset: scrollOffset,
diff --git a/packages/flutter/lib/src/widgets/scrollable_grid.dart b/packages/flutter/lib/src/widgets/scrollable_grid.dart
index 5999cad..d2008c3 100644
--- a/packages/flutter/lib/src/widgets/scrollable_grid.dart
+++ b/packages/flutter/lib/src/widgets/scrollable_grid.dart
@@ -37,11 +37,15 @@
   final GridDelegate delegate;
   final Iterable<Widget> children;
 
+  @override
   ScrollableState createState() => new _ScrollableGridState();
 }
 
 class _ScrollableGridState extends ScrollableState<ScrollableGrid> {
+  @override
   ScrollBehavior<double, double> createScrollBehavior() => new OverscrollBehavior();
+
+  @override
   ExtentScrollBehavior get scrollBehavior => super.scrollBehavior;
 
   void _handleExtentsChanged(double contentExtent, double containerExtent) {
@@ -54,6 +58,7 @@
     });
   }
 
+  @override
   Widget buildContent(BuildContext context) {
     return new GridViewport(
       startOffset: scrollOffset,
@@ -72,38 +77,50 @@
     this.children
   });
 
+  @override
   final double startOffset;
   final GridDelegate delegate;
   final ExtentsChangedCallback onExtentsChanged;
+
+  @override
   final Iterable<Widget> children;
 
   // TODO(abarth): Support horizontal grids.
   Axis get mainAxis => Axis.vertical;
 
+  @override
   RenderGrid createRenderObject(BuildContext context) => new RenderGrid(delegate: delegate);
 
+  @override
   _GridViewportElement createElement() => new _GridViewportElement(this);
 }
 
 class _GridViewportElement extends VirtualViewportElement {
   _GridViewportElement(GridViewport widget) : super(widget);
 
+  @override
   GridViewport get widget => super.widget;
 
+  @override
   RenderGrid get renderObject => super.renderObject;
 
+  @override
   int get materializedChildBase => _materializedChildBase;
   int _materializedChildBase;
 
+  @override
   int get materializedChildCount => _materializedChildCount;
   int _materializedChildCount;
 
+  @override
   double get startOffsetBase => _startOffsetBase;
   double _startOffsetBase;
 
+  @override
   double get startOffsetLimit =>_startOffsetLimit;
   double _startOffsetLimit;
 
+  @override
   void updateRenderObject(GridViewport oldWidget) {
     renderObject.delegate = widget.delegate;
     super.updateRenderObject(oldWidget);
@@ -113,6 +130,7 @@
   double _containerExtent;
   GridSpecification _specification;
 
+  @override
   void layout(BoxConstraints constraints) {
     _specification = renderObject.specification;
     double contentExtent = _specification.gridSize.height;
diff --git a/packages/flutter/lib/src/widgets/scrollable_list.dart b/packages/flutter/lib/src/widgets/scrollable_list.dart
index b8bfbdc..2c8a915 100644
--- a/packages/flutter/lib/src/widgets/scrollable_list.dart
+++ b/packages/flutter/lib/src/widgets/scrollable_list.dart
@@ -41,11 +41,15 @@
   final ScrollableListPainter scrollableListPainter;
   final Iterable<Widget> children;
 
+  @override
   ScrollableState createState() => new _ScrollableListState();
 }
 
 class _ScrollableListState extends ScrollableState<ScrollableList> {
+  @override
   ScrollBehavior<double, double> createScrollBehavior() => new OverscrollWhenScrollableBehavior();
+
+  @override
   ExtentScrollBehavior get scrollBehavior => super.scrollBehavior;
 
   void _handleExtentsChanged(double contentExtent, double containerExtent) {
@@ -59,21 +63,25 @@
     });
   }
 
+  @override
   void dispatchOnScrollStart() {
     super.dispatchOnScrollStart();
     config.scrollableListPainter?.scrollStarted();
   }
 
+  @override
   void dispatchOnScroll() {
     super.dispatchOnScroll();
     config.scrollableListPainter?.scrollOffset = scrollOffset;
   }
 
+  @override
   void dispatchOnScrollEnd() {
     super.dispatchOnScrollEnd();
     config.scrollableListPainter?.scrollEnded();
   }
 
+  @override
   Widget buildContent(BuildContext context) {
     return new ListViewport(
       onExtentsChanged: _handleExtentsChanged,
@@ -134,36 +142,46 @@
     }
   }
 
+  @override
   double get startOffset {
     if (padding == null)
       return scrollOffset;
     return scrollOffset - _leadingPadding;
   }
 
+  @override
   RenderList createRenderObject(BuildContext context) => new RenderList(itemExtent: itemExtent);
 
+  @override
   _VirtualListViewportElement createElement() => new _VirtualListViewportElement(this);
 }
 
 class _VirtualListViewportElement extends VirtualViewportElement {
   _VirtualListViewportElement(VirtualViewport widget) : super(widget);
 
+  @override
   _VirtualListViewport get widget => super.widget;
 
+  @override
   RenderList get renderObject => super.renderObject;
 
+  @override
   int get materializedChildBase => _materializedChildBase;
   int _materializedChildBase;
 
+  @override
   int get materializedChildCount => _materializedChildCount;
   int _materializedChildCount;
 
+  @override
   double get startOffsetBase => _startOffsetBase;
   double _startOffsetBase;
 
+  @override
   double get startOffsetLimit =>_startOffsetLimit;
   double _startOffsetLimit;
 
+  @override
   void updateRenderObject(_VirtualListViewport oldWidget) {
     renderObject
       ..mainAxis = widget.mainAxis
@@ -177,6 +195,7 @@
   double _contentExtent;
   double _containerExtent;
 
+  @override
   void layout(BoxConstraints constraints) {
     final int length = renderObject.virtualChildCount;
     final double itemExtent = widget.itemExtent;
@@ -264,6 +283,7 @@
     overlayPainter
   );
 
+  @override
   final Iterable<Widget> children;
 }
 
@@ -304,11 +324,15 @@
   final EdgeInsets padding;
   final ScrollableListPainter scrollableListPainter;
 
+  @override
   ScrollableState createState() => new _ScrollableLazyListState();
 }
 
 class _ScrollableLazyListState extends ScrollableState<ScrollableLazyList> {
+  @override
   ScrollBehavior<double, double> createScrollBehavior() => new OverscrollBehavior();
+
+  @override
   ExtentScrollBehavior get scrollBehavior => super.scrollBehavior;
 
   void _handleExtentsChanged(double contentExtent, double containerExtent) {
@@ -322,21 +346,25 @@
     });
   }
 
+  @override
   void dispatchOnScrollStart() {
     super.dispatchOnScrollStart();
     config.scrollableListPainter?.scrollStarted();
   }
 
+  @override
   void dispatchOnScroll() {
     super.dispatchOnScroll();
     config.scrollableListPainter?.scrollOffset = scrollOffset;
   }
 
+  @override
   void dispatchOnScrollEnd() {
     super.dispatchOnScrollEnd();
     config.scrollableListPainter?.scrollEnded();
   }
 
+  @override
   Widget buildContent(BuildContext context) {
     return new LazyListViewport(
       onExtentsChanged: _handleExtentsChanged,
@@ -374,6 +402,9 @@
     overlayPainter
   );
 
+  @override
   final int itemCount;
+
+  @override
   final ItemListBuilder itemBuilder;
 }
diff --git a/packages/flutter/lib/src/widgets/semantics_debugger.dart b/packages/flutter/lib/src/widgets/semantics_debugger.dart
index e3f86be..7a09318 100644
--- a/packages/flutter/lib/src/widgets/semantics_debugger.dart
+++ b/packages/flutter/lib/src/widgets/semantics_debugger.dart
@@ -20,30 +20,37 @@
 
   final Widget child;
 
+  @override
   _SemanticsDebuggerState createState() => new _SemanticsDebuggerState();
 }
 
 class _SemanticsDebuggerState extends State<SemanticsDebugger> {
+  @override
   void initState() {
     super.initState();
     _SemanticsDebuggerListener.ensureInstantiated();
     _SemanticsDebuggerListener.instance.addListener(_update);
   }
+
+  @override
   void dispose() {
     _SemanticsDebuggerListener.instance.removeListener(_update);
     super.dispose();
   }
+
   void _update() {
     setState(() {
       // the generation of the _SemanticsDebuggerListener has changed
     });
   }
+
   Point _lastPointerDownLocation;
   void _handlePointerDown(PointerDownEvent event) {
     setState(() {
       _lastPointerDownLocation = event.position;
     });
   }
+
   void _handleTap() {
     assert(_lastPointerDownLocation != null);
     _SemanticsDebuggerListener.instance.handleTap(_lastPointerDownLocation);
@@ -65,6 +72,8 @@
       _lastPointerDownLocation = null;
     });
   }
+
+  @override
   Widget build(BuildContext context) {
     return new CustomPaint(
       foregroundPainter: new _SemanticsDebuggerPainter(_SemanticsDebuggerListener.instance.generation, _lastPointerDownLocation),
@@ -104,6 +113,7 @@
   Rect rect;
   List<_SemanticsDebuggerEntry> children;
 
+  @override
   String toString() {
     return '_SemanticsDebuggerEntry($id; $rect; "$label"'
            '${canBeTapped ? "; canBeTapped" : ""}'
@@ -311,6 +321,7 @@
 
   int generation = 0;
 
+  @override
   void updateSemanticsTree(List<mojom.SemanticsNode> nodes) {
     generation += 1;
     for (mojom.SemanticsNode node in nodes)
@@ -350,8 +361,11 @@
 
 class _SemanticsDebuggerPainter extends CustomPainter {
   const _SemanticsDebuggerPainter(this.generation, this.pointerPosition);
+
   final int generation;
   final Point pointerPosition;
+
+  @override
   void paint(Canvas canvas, Size size) {
     _SemanticsDebuggerListener.instance.nodes[0]?.paint(
       canvas,
@@ -363,6 +377,8 @@
       canvas.drawCircle(pointerPosition, 10.0, paint);
     }
   }
+
+  @override
   bool shouldRepaint(_SemanticsDebuggerPainter oldDelegate) {
     return generation != oldDelegate.generation
         || pointerPosition != oldDelegate.pointerPosition;
diff --git a/packages/flutter/lib/src/widgets/status_transitions.dart b/packages/flutter/lib/src/widgets/status_transitions.dart
index 211474e..d2a1961 100644
--- a/packages/flutter/lib/src/widgets/status_transitions.dart
+++ b/packages/flutter/lib/src/widgets/status_transitions.dart
@@ -19,15 +19,18 @@
 
   Widget build(BuildContext context);
 
+  @override
   _StatusTransitionState createState() => new _StatusTransitionState();
 }
 
 class _StatusTransitionState extends State<StatusTransitionWidget> {
+  @override
   void initState() {
     super.initState();
     config.animation.addStatusListener(_animationStatusChanged);
   }
 
+  @override
   void didUpdateConfig(StatusTransitionWidget oldConfig) {
     if (config.animation != oldConfig.animation) {
       oldConfig.animation.removeStatusListener(_animationStatusChanged);
@@ -35,6 +38,7 @@
     }
   }
 
+  @override
   void dispose() {
     config.animation.removeStatusListener(_animationStatusChanged);
     super.dispose();
@@ -46,6 +50,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     return config.build(context);
   }
diff --git a/packages/flutter/lib/src/widgets/title.dart b/packages/flutter/lib/src/widgets/title.dart
index 74cda74..8e2f279 100644
--- a/packages/flutter/lib/src/widgets/title.dart
+++ b/packages/flutter/lib/src/widgets/title.dart
@@ -24,11 +24,13 @@
 
   final Widget child;
 
+  @override
   Widget build(BuildContext context) {
     updateTaskDescription(label: title, color: color);
     return child;
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     if (title != null)
diff --git a/packages/flutter/lib/src/widgets/transitions.dart b/packages/flutter/lib/src/widgets/transitions.dart
index 2223cda..ed4ad23 100644
--- a/packages/flutter/lib/src/widgets/transitions.dart
+++ b/packages/flutter/lib/src/widgets/transitions.dart
@@ -35,8 +35,10 @@
   Widget build(BuildContext context);
 
   /// Subclasses typically do not override this method.
+  @override
   _AnimatedState createState() => new _AnimatedState();
 
+  @override
   void debugFillDescription(List<String> description) {
     super.debugFillDescription(description);
     description.add('animation: $animation');
@@ -44,11 +46,13 @@
 }
 
 class _AnimatedState extends State<AnimatedWidget> {
+  @override
   void initState() {
     super.initState();
     config.animation.addListener(_handleTick);
   }
 
+  @override
   void didUpdateConfig(AnimatedWidget oldConfig) {
     if (config.animation != oldConfig.animation) {
       oldConfig.animation.removeListener(_handleTick);
@@ -56,6 +60,7 @@
     }
   }
 
+  @override
   void dispose() {
     config.animation.removeListener(_handleTick);
     super.dispose();
@@ -67,6 +72,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     return config.build(context);
   }
@@ -99,6 +105,7 @@
 
   final Widget child;
 
+  @override
   Widget build(BuildContext context) {
     return new FractionalTranslation(
       translation: position.value,
@@ -132,6 +139,7 @@
 
   final Widget child;
 
+  @override
   Widget build(BuildContext context) {
     double scaleValue = scale.value;
     Matrix4 transform = new Matrix4.identity()
@@ -160,6 +168,7 @@
 
   final Widget child;
 
+  @override
   Widget build(BuildContext context) {
     double turnsValue = turns.value;
     Matrix4 transform = new Matrix4.rotationZ(turnsValue * math.PI * 2.0);
@@ -196,6 +205,7 @@
 
   final Widget child;
 
+  @override
   Widget build(BuildContext context) {
     return new ClipRect(
       child: new Align(
@@ -226,6 +236,7 @@
 
   final Widget child;
 
+  @override
   Widget build(BuildContext context) {
     return new Opacity(opacity: opacity.value, child: child);
   }
@@ -240,6 +251,7 @@
   RelativeRectTween({ RelativeRect begin, RelativeRect end })
     : super(begin: begin, end: end);
 
+  @override
   RelativeRect lerp(double t) => RelativeRect.lerp(begin, end, t);
 }
 
@@ -262,6 +274,7 @@
 
   final Widget child;
 
+  @override
   Widget build(BuildContext context) {
     return new Positioned(
       top: rect.value.top,
@@ -318,6 +331,7 @@
   /// performance significantly in some cases and is therefore a good practice.
   final Widget child;
 
+  @override
   Widget build(BuildContext context) {
     return builder(context, child);
   }
diff --git a/packages/flutter/lib/src/widgets/unique_widget.dart b/packages/flutter/lib/src/widgets/unique_widget.dart
index ecf546b..b3c268f 100644
--- a/packages/flutter/lib/src/widgets/unique_widget.dart
+++ b/packages/flutter/lib/src/widgets/unique_widget.dart
@@ -10,6 +10,7 @@
     assert(key != null);
   }
 
+  @override
   T createState();
 
   /// The state for the unique inflated instance of this widget.
diff --git a/packages/flutter/lib/src/widgets/virtual_viewport.dart b/packages/flutter/lib/src/widgets/virtual_viewport.dart
index 7e9f6d4..453ea4c 100644
--- a/packages/flutter/lib/src/widgets/virtual_viewport.dart
+++ b/packages/flutter/lib/src/widgets/virtual_viewport.dart
@@ -34,6 +34,7 @@
 abstract class VirtualViewportElement extends RenderObjectElement {
   VirtualViewportElement(VirtualViewport widget) : super(widget);
 
+  @override
   VirtualViewport get widget => super.widget;
 
   /// The index of the first child to materialize.
@@ -72,8 +73,10 @@
 
   List<Element> _materializedChildren = const <Element>[];
 
+  @override
   RenderVirtualViewport<ContainerBoxParentDataMixin<RenderBox>> get renderObject => super.renderObject;
 
+  @override
   void visitChildren(ElementVisitor visitor) {
     if (_materializedChildren == null)
       return;
@@ -83,6 +86,7 @@
 
   _WidgetProvider _widgetProvider;
 
+  @override
   void mount(Element parent, dynamic newSlot) {
     _widgetProvider = widget._createWidgetProvider();
     _widgetProvider.didUpdateWidget(null, widget);
@@ -91,11 +95,13 @@
     updateRenderObject(null);
   }
 
+  @override
   void unmount() {
     renderObject.callback = null;
     super.unmount();
   }
 
+  @override
   void update(VirtualViewport newWidget) {
     VirtualViewport oldWidget = widget;
     _widgetProvider.didUpdateWidget(oldWidget, newWidget);
@@ -169,15 +175,18 @@
     _materializedChildren = updateChildren(_materializedChildren, newWidgets);
   }
 
+  @override
   void insertChildRenderObject(RenderObject child, Element slot) {
     renderObject.insert(child, after: slot?.renderObject);
   }
 
+  @override
   void moveChildRenderObject(RenderObject child, Element slot) {
     assert(child.parent == renderObject);
     renderObject.move(child, after: slot?.renderObject);
   }
 
+  @override
   void removeChildRenderObject(RenderObject child) {
     assert(child.parent == renderObject);
     renderObject.remove(child);
@@ -192,6 +201,7 @@
   /// The children, some of which might be materialized.
   Iterable<Widget> get children;
 
+  @override
   _IterableWidgetProvider _createWidgetProvider() => new _IterableWidgetProvider();
 }
 
@@ -200,6 +210,7 @@
   Iterator<Widget> _iterator;
   List<Widget> _widgets;
 
+  @override
   void didUpdateWidget(VirtualViewportFromIterable oldWidget, VirtualViewportFromIterable newWidget) {
     if (oldWidget == null || newWidget.children != oldWidget.children) {
       _iterator = null;
@@ -208,8 +219,10 @@
     }
   }
 
+  @override
   int get virtualChildCount => _length;
 
+  @override
   void prepareChildren(VirtualViewportElement context, int base, int count) {
     int limit = base < 0 ? _length : math.min(_length, base + count);
     if (limit <= _widgets.length)
@@ -229,6 +242,7 @@
     }
   }
 
+  @override
   Widget getChild(int i) => _widgets[(i % _length).abs()];
 }
 
@@ -249,6 +263,7 @@
   /// determine which children are visible).
   ItemListBuilder get itemBuilder;
 
+  @override
   _LazyWidgetProvider _createWidgetProvider() => new _LazyWidgetProvider();
 }
 
@@ -257,6 +272,7 @@
   int _base;
   List<Widget> _widgets;
 
+  @override
   void didUpdateWidget(VirtualViewportFromBuilder oldWidget, VirtualViewportFromBuilder newWidget) {
     // TODO(abarth): We shouldn't check the itemBuilder closure for equality with.
     // instead, we should use the widget's identity to decide whether to rebuild.
@@ -267,8 +283,10 @@
     }
   }
 
+  @override
   int get virtualChildCount => _length;
 
+  @override
   void prepareChildren(VirtualViewportElement context, int base, int count) {
     if (_widgets != null && _widgets.length == count && _base == base)
       return;
@@ -277,6 +295,7 @@
     _widgets = widget.itemBuilder(context, base, count);
   }
 
+  @override
   Widget getChild(int i) {
     int n = _length ?? _widgets.length;
     return _widgets[(i % n).abs()];
diff --git a/packages/flutter/test/gestures/arena_test.dart b/packages/flutter/test/gestures/arena_test.dart
index 6692f38..4f49ec6 100644
--- a/packages/flutter/test/gestures/arena_test.dart
+++ b/packages/flutter/test/gestures/arena_test.dart
@@ -11,11 +11,15 @@
 
 class TestGestureArenaMember extends GestureArenaMember {
   bool acceptRan = false;
+
+  @override
   void acceptGesture(int key) {
     expect(key, equals(primaryKey));
     acceptRan = true;
   }
   bool rejectRan = false;
+
+  @override
   void rejectGesture(int key) {
     expect(key, equals(primaryKey));
     rejectRan = true;
diff --git a/packages/flutter/test/gestures/double_tap_test.dart b/packages/flutter/test/gestures/double_tap_test.dart
index e080d2c..2f6d259 100644
--- a/packages/flutter/test/gestures/double_tap_test.dart
+++ b/packages/flutter/test/gestures/double_tap_test.dart
@@ -9,12 +9,16 @@
 import 'gesture_tester.dart';
 
 class TestGestureArenaMember extends GestureArenaMember {
+  @override
   void acceptGesture(int key) {
     accepted = true;
   }
+
+  @override
   void rejectGesture(int key) {
     rejected = true;
   }
+
   bool accepted = false;
   bool rejected = false;
 }
diff --git a/packages/flutter/test/gestures/tap_test.dart b/packages/flutter/test/gestures/tap_test.dart
index 9b8382a..c81f368 100644
--- a/packages/flutter/test/gestures/tap_test.dart
+++ b/packages/flutter/test/gestures/tap_test.dart
@@ -9,7 +9,10 @@
 import 'gesture_tester.dart';
 
 class TestGestureArenaMember extends GestureArenaMember {
+  @override
   void acceptGesture(int key) {}
+
+  @override
   void rejectGesture(int key) {}
 }
 
diff --git a/packages/flutter/test/painting/paint_image_test.dart b/packages/flutter/test/painting/paint_image_test.dart
index 078d30e..7b3f36e 100644
--- a/packages/flutter/test/painting/paint_image_test.dart
+++ b/packages/flutter/test/painting/paint_image_test.dart
@@ -11,15 +11,20 @@
 class TestImage implements ui.Image {
   TestImage({ this.width, this.height });
 
+  @override
   final int width;
+
+  @override
   final int height;
 
+  @override
   void dispose() { }
 }
 
 class TestCanvas implements Canvas {
   final List<Invocation> invocations = <Invocation>[];
 
+  @override
   void noSuchMethod(Invocation invocation) {
     invocations.add(invocation);
   }
diff --git a/packages/flutter/test/rendering/block_test.dart b/packages/flutter/test/rendering/block_test.dart
index 9a67565..724fb52 100644
--- a/packages/flutter/test/rendering/block_test.dart
+++ b/packages/flutter/test/rendering/block_test.dart
@@ -9,6 +9,7 @@
 import 'rendering_tester.dart';
 
 class TestBlockPainter extends RenderObjectPainter {
+  @override
   void paint(PaintingContext context, Offset offset) { }
 }
 
diff --git a/packages/flutter/test/rendering/image_test.dart b/packages/flutter/test/rendering/image_test.dart
index 264d60d..f5e3061 100644
--- a/packages/flutter/test/rendering/image_test.dart
+++ b/packages/flutter/test/rendering/image_test.dart
@@ -10,20 +10,35 @@
 import 'rendering_tester.dart';
 
 class SquareImage implements ui.Image {
+  @override
   int get width => 10;
+
+  @override
   int get height => 10;
+
+  @override
   void dispose() { }
 }
 
 class WideImage implements ui.Image {
+  @override
   int get width => 20;
+
+  @override
   int get height => 10;
+
+  @override
   void dispose() { }
 }
 
 class TallImage implements ui.Image {
+  @override
   int get width => 10;
+
+  @override
   int get height => 20;
+
+  @override
   void dispose() { }
 }
 
diff --git a/packages/flutter/test/rendering/intrinsic_width_test.dart b/packages/flutter/test/rendering/intrinsic_width_test.dart
index 9f789e5..c740e7c 100644
--- a/packages/flutter/test/rendering/intrinsic_width_test.dart
+++ b/packages/flutter/test/rendering/intrinsic_width_test.dart
@@ -12,23 +12,30 @@
 
   final BoxConstraints _intrinsicDimensions;
 
+  @override
   double getMinIntrinsicWidth(BoxConstraints constraints) {
     return constraints.constrainWidth(_intrinsicDimensions.minWidth);
   }
 
+  @override
   double getMaxIntrinsicWidth(BoxConstraints constraints) {
     return constraints.constrainWidth(_intrinsicDimensions.maxWidth);
   }
 
+  @override
   double getMinIntrinsicHeight(BoxConstraints constraints) {
     return constraints.constrainHeight(_intrinsicDimensions.minHeight);
   }
 
+  @override
   double getMaxIntrinsicHeight(BoxConstraints constraints) {
     return constraints.constrainHeight(_intrinsicDimensions.maxHeight);
   }
 
+  @override
   bool get sizedByParent => true;
+
+  @override
   void performResize() {
     size = constraints.constrain(new Size(_intrinsicDimensions.minWidth + (_intrinsicDimensions.maxWidth-_intrinsicDimensions.minWidth) / 2.0,
                                           _intrinsicDimensions.minHeight + (_intrinsicDimensions.maxHeight-_intrinsicDimensions.minHeight) / 2.0));
diff --git a/packages/flutter/test/rendering/mutations_test.dart b/packages/flutter/test/rendering/mutations_test.dart
index ce9a525..1a1a24f 100644
--- a/packages/flutter/test/rendering/mutations_test.dart
+++ b/packages/flutter/test/rendering/mutations_test.dart
@@ -10,7 +10,10 @@
 
 class RenderLayoutTestBox extends RenderProxyBox {
   RenderLayoutTestBox(this.onLayout);
+
   final VoidCallback onLayout;
+
+  @override
   void layout(Constraints constraints, { bool parentUsesSize: false }) {
     // Doing this in tests is ok, but if you're writing your own
     // render object, you want to override performLayout(), not
@@ -20,7 +23,11 @@
     super.layout(constraints, parentUsesSize: parentUsesSize);
     onLayout();
   }
+
+  @override
   bool get sizedByParent => true;
+
+  @override
   void performLayout() { }
 }
 
diff --git a/packages/flutter/test/rendering/rendering_tester.dart b/packages/flutter/test/rendering/rendering_tester.dart
index 6ac6287..7719a47 100644
--- a/packages/flutter/test/rendering/rendering_tester.dart
+++ b/packages/flutter/test/rendering/rendering_tester.dart
@@ -13,6 +13,8 @@
   TestRenderView() {
     configuration = new ViewConfiguration(size: _kTestViewSize);
   }
+
+  @override
   void scheduleInitialFrame() {
     scheduleInitialLayout();
     scheduleInitialPaint(new TransformLayer(transform: new Matrix4.identity()));
@@ -27,6 +29,7 @@
 }
 
 class TestRenderingFlutterBinding extends BindingBase with Scheduler, Services, Renderer, Gesturer {
+  @override
   void initRenderView() {
     if (renderView == null) {
       renderView = new TestRenderView();
@@ -36,6 +39,7 @@
 
   EnginePhase phase = EnginePhase.composite;
 
+  @override
   void beginFrame() {
     RenderObject.flushLayout();
     if (phase == EnginePhase.layout)
@@ -83,9 +87,11 @@
 
   final VoidCallback onPaint;
 
+  @override
   void paint(Canvas canvas, Size size) {
     onPaint();
   }
 
+  @override
   bool shouldRepaint(TestCallbackPainter oldPainter) => true;
 }
diff --git a/packages/flutter/test/widget/asset_vendor_test.dart b/packages/flutter/test/widget/asset_vendor_test.dart
index 206b516..42e3775 100644
--- a/packages/flutter/test/widget/asset_vendor_test.dart
+++ b/packages/flutter/test/widget/asset_vendor_test.dart
@@ -15,8 +15,14 @@
 class TestImage extends ui.Image {
   TestImage(this.scale);
   final double scale;
+
+  @override
   int get width => (48*scale).floor();
+
+  @override
   int get height => (48*scale).floor();
+
+  @override
   void dispose() { }
 }
 
@@ -38,12 +44,17 @@
 
 class TestAssetBundle extends AssetBundle {
   // Image loading logic routes through load(key)
+  @override
   ImageResource loadImage(String key) => null;
+
+  @override
   Future<String> loadString(String key) {
     if (key == 'AssetManifest.json')
       return (new Completer<String>()..complete(testManifest)).future;
     return null;
   }
+
+  @override
   Future<core.MojoDataPipeConsumer> load(String key) {
     core.MojoDataPipeConsumer pipe;
     switch (key) {
@@ -65,6 +76,8 @@
     }
     return (new Completer<core.MojoDataPipeConsumer>()..complete(pipe)).future;
   }
+
+  @override
   String toString() => '$runtimeType@$hashCode()';
 }
 
diff --git a/packages/flutter/test/widget/build_scope_test.dart b/packages/flutter/test/widget/build_scope_test.dart
index d95d2fb..12e35cb 100644
--- a/packages/flutter/test/widget/build_scope_test.dart
+++ b/packages/flutter/test/widget/build_scope_test.dart
@@ -10,21 +10,25 @@
 import 'test_widgets.dart';
 
 class ProbeWidget extends StatefulWidget {
+  @override
   ProbeWidgetState createState() => new ProbeWidgetState();
 }
 
 class ProbeWidgetState extends State<ProbeWidget> {
   static int buildCount = 0;
 
+  @override
   void initState() {
     super.initState();
     setState(() {});
   }
 
+  @override
   void didUpdateConfig(ProbeWidget oldConfig) {
     setState(() {});
   }
 
+  @override
   Widget build(BuildContext context) {
     setState(() {});
     buildCount++;
@@ -37,6 +41,7 @@
 
   final State parentState;
 
+  @override
   Widget build(BuildContext context) {
     parentState.setState(() {});
     return new Container();
@@ -44,24 +49,29 @@
 }
 
 class BadWidgetParent extends StatefulWidget {
+  @override
   BadWidgetParentState createState() => new BadWidgetParentState();
 }
 
 class BadWidgetParentState extends State<BadWidgetParent> {
+  @override
   Widget build(BuildContext context) {
     return new BadWidget(this);
   }
 }
 
 class BadDisposeWidget extends StatefulWidget {
+  @override
   BadDisposeWidgetState createState() => new BadDisposeWidgetState();
 }
 
 class BadDisposeWidgetState extends State<BadDisposeWidget> {
+  @override
   Widget build(BuildContext context) {
     return new Container();
   }
 
+  @override
   void dispose() {
     setState(() {});
     super.dispose();
diff --git a/packages/flutter/test/widget/custom_multi_child_layout_test.dart b/packages/flutter/test/widget/custom_multi_child_layout_test.dart
index 9b741c8..00101dd 100644
--- a/packages/flutter/test/widget/custom_multi_child_layout_test.dart
+++ b/packages/flutter/test/widget/custom_multi_child_layout_test.dart
@@ -10,6 +10,7 @@
 class TestMultiChildLayoutDelegate extends MultiChildLayoutDelegate {
   BoxConstraints getSizeConstraints;
 
+  @override
   Size getSize(BoxConstraints constraints) {
     if (!RenderObject.debugCheckingIntrinsics)
       getSizeConstraints = constraints;
@@ -21,6 +22,7 @@
   Size performLayoutSize1;
   bool performLayoutIsChild;
 
+  @override
   void performLayout(Size size) {
     assert(!RenderObject.debugCheckingIntrinsics);
     expect(() {
@@ -34,6 +36,8 @@
 
   bool shouldRelayoutCalled = false;
   bool shouldRelayoutValue = false;
+
+  @override
   bool shouldRelayout(_) {
     assert(!RenderObject.debugCheckingIntrinsics);
     shouldRelayoutCalled = true;
@@ -58,10 +62,13 @@
 
   final Size preferredSize;
 
+  @override
   Size getSize(BoxConstraints constraints) => preferredSize;
 
+  @override
   void performLayout(Size size) { }
 
+  @override
   bool shouldRelayout(PreferredSizeDelegate oldDelegate) {
     return preferredSize != oldDelegate.preferredSize;
   }
diff --git a/packages/flutter/test/widget/custom_one_child_layout_test.dart b/packages/flutter/test/widget/custom_one_child_layout_test.dart
index 71e1e94..bc88e8a 100644
--- a/packages/flutter/test/widget/custom_one_child_layout_test.dart
+++ b/packages/flutter/test/widget/custom_one_child_layout_test.dart
@@ -13,12 +13,14 @@
   Size sizeFromGetPositionForChild;
   Size childSizeFromGetPositionForChild;
 
+  @override
   Size getSize(BoxConstraints constraints) {
     if (!RenderObject.debugCheckingIntrinsics)
       constraintsFromGetSize = constraints;
     return new Size(200.0, 300.0);
   }
 
+  @override
   BoxConstraints getConstraintsForChild(BoxConstraints constraints) {
     assert(!RenderObject.debugCheckingIntrinsics);
     constraintsFromGetConstraintsForChild = constraints;
@@ -30,6 +32,7 @@
     );
   }
 
+  @override
   Offset getPositionForChild(Size size, Size childSize) {
     assert(!RenderObject.debugCheckingIntrinsics);
     sizeFromGetPositionForChild = size;
@@ -39,6 +42,8 @@
 
   bool shouldRelayoutCalled = false;
   bool shouldRelayoutValue = false;
+
+  @override
   bool shouldRelayout(_) {
     assert(!RenderObject.debugCheckingIntrinsics);
     shouldRelayoutCalled = true;
diff --git a/packages/flutter/test/widget/custom_paint_test.dart b/packages/flutter/test/widget/custom_paint_test.dart
index 7a34d85..b8371a0 100644
--- a/packages/flutter/test/widget/custom_paint_test.dart
+++ b/packages/flutter/test/widget/custom_paint_test.dart
@@ -12,10 +12,12 @@
   List<String> log;
   String name;
 
+  @override
   void paint(Canvas canvas, Size size) {
     log.add(name);
   }
 
+  @override
   bool shouldRepaint(TestCustomPainter oldPainter) => true;
 }
 
diff --git a/packages/flutter/test/widget/dismissable_test.dart b/packages/flutter/test/widget/dismissable_test.dart
index 1aaf250..97a1e07 100644
--- a/packages/flutter/test/widget/dismissable_test.dart
+++ b/packages/flutter/test/widget/dismissable_test.dart
@@ -107,7 +107,10 @@
 
 class Test1215DismissableWidget extends StatelessWidget {
   Test1215DismissableWidget(this.text);
+
   final String text;
+
+  @override
   Widget build(BuildContext context) {
     return new Dismissable(
       key: new ObjectKey(text),
diff --git a/packages/flutter/test/widget/duplicate_key_test.dart b/packages/flutter/test/widget/duplicate_key_test.dart
index 0f4bd80..75a0da3 100644
--- a/packages/flutter/test/widget/duplicate_key_test.dart
+++ b/packages/flutter/test/widget/duplicate_key_test.dart
@@ -9,23 +9,32 @@
 class Item {
   GlobalKey key1 = new GlobalKey();
   GlobalKey key2 = new GlobalKey();
+
+  @override
   String toString() => "Item($key1, $key2)";
 }
 List<Item> items = <Item>[new Item(), new Item()];
 
 class StatefulLeaf extends StatefulWidget {
   StatefulLeaf({ GlobalKey key }) : super(key: key);
+
+  @override
   StatefulLeafState createState() => new StatefulLeafState();
 }
 
 class StatefulLeafState extends State<StatefulLeaf> {
   void test() { setState(() { }); }
+
+  @override
   Widget build(BuildContext context) => new Text('leaf');
 }
 
 class KeyedWrapper extends StatelessWidget {
   KeyedWrapper(this.key1, this.key2);
+
   Key key1, key2;
+
+  @override
   Widget build(BuildContext context) {
     return new Container(
       key: key1,
diff --git a/packages/flutter/test/widget/focus_test.dart b/packages/flutter/test/widget/focus_test.dart
index bfe82b8..6f206c8 100644
--- a/packages/flutter/test/widget/focus_test.dart
+++ b/packages/flutter/test/widget/focus_test.dart
@@ -18,6 +18,7 @@
   final String yes;
   final bool autofocus;
 
+  @override
   Widget build(BuildContext context) {
     bool focused = Focus.at(context, autofocus: autofocus);
     return new GestureDetector(
diff --git a/packages/flutter/test/widget/init_state_test.dart b/packages/flutter/test/widget/init_state_test.dart
index 418f2ce..e0cd698 100644
--- a/packages/flutter/test/widget/init_state_test.dart
+++ b/packages/flutter/test/widget/init_state_test.dart
@@ -9,10 +9,12 @@
 List<String> ancestors = <String>[];
 
 class TestWidget extends StatefulWidget {
+  @override
   TestWidgetState createState() => new TestWidgetState();
 }
 
 class TestWidgetState extends State<TestWidget> {
+  @override
   void initState() {
     super.initState();
     context.visitAncestorElements((Element element) {
@@ -21,6 +23,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) => new Container();
 }
 
diff --git a/packages/flutter/test/widget/input_test.dart b/packages/flutter/test/widget/input_test.dart
index bbccae3..5c6011e 100644
--- a/packages/flutter/test/widget/input_test.dart
+++ b/packages/flutter/test/widget/input_test.dart
@@ -11,14 +11,18 @@
 class MockKeyboard implements mojom.Keyboard {
   mojom.KeyboardClient client;
 
+  @override
   void setClient(mojom.KeyboardClientStub client, mojom.KeyboardConfiguration configuraiton) {
     this.client = client.impl;
   }
 
+  @override
   void show() {}
 
+  @override
   void hide() {}
 
+  @override
   void setEditingState(mojom.EditingState state) {}
 }
 
diff --git a/packages/flutter/test/widget/modal_barrier_test.dart b/packages/flutter/test/widget/modal_barrier_test.dart
index c7b6d19..1d2138a 100644
--- a/packages/flutter/test/widget/modal_barrier_test.dart
+++ b/packages/flutter/test/widget/modal_barrier_test.dart
@@ -88,6 +88,7 @@
 }
 
 class FirstWidget extends StatelessWidget {
+  @override
   Widget build(BuildContext context) {
     return new GestureDetector(
       onTap: () {
@@ -101,6 +102,7 @@
 }
 
 class SecondWidget extends StatelessWidget {
+  @override
   Widget build(BuildContext context) {
     return new ModalBarrier(
       key: const ValueKey<String>('barrier'),
diff --git a/packages/flutter/test/widget/navigator_test.dart b/packages/flutter/test/widget/navigator_test.dart
index 221d4d9..df32bce 100644
--- a/packages/flutter/test/widget/navigator_test.dart
+++ b/packages/flutter/test/widget/navigator_test.dart
@@ -7,6 +7,7 @@
 import 'package:test/test.dart';
 
 class FirstWidget extends StatelessWidget {
+  @override
   Widget build(BuildContext context) {
     return new GestureDetector(
       onTap: () {
@@ -23,10 +24,12 @@
 }
 
 class SecondWidget extends StatefulWidget {
+  @override
   SecondWidgetState createState() => new SecondWidgetState();
 }
 
 class SecondWidgetState extends State<SecondWidget> {
+  @override
   Widget build(BuildContext context) {
     return new GestureDetector(
       onTap: () => Navigator.pop(context),
@@ -48,6 +51,7 @@
   final Key targetKey;
   final ExceptionCallback onException;
 
+  @override
   Widget build(BuildContext context) {
     return new GestureDetector(
       key: targetKey,
diff --git a/packages/flutter/test/widget/page_forward_transitions_test.dart b/packages/flutter/test/widget/page_forward_transitions_test.dart
index d350d31..a062eac 100644
--- a/packages/flutter/test/widget/page_forward_transitions_test.dart
+++ b/packages/flutter/test/widget/page_forward_transitions_test.dart
@@ -19,6 +19,7 @@
   final Widget childFirstHalf;
   final Widget childSecondHalf;
 
+  @override
   Widget build(BuildContext context) {
     final Animation<double> animation = this.animation;
     if (animation.value >= 0.5)
@@ -29,9 +30,16 @@
 
 class TestRoute<T> extends PageRoute<T> {
   TestRoute({ this.child, RouteSettings settings}) : super(settings: settings);
+
   final Widget child;
+
+  @override
   Duration get transitionDuration => kMaterialPageRouteTransitionDuration;
+
+  @override
   Color get barrierColor => null;
+
+  @override
   Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> forwardAnimation) {
     return child;
   }
diff --git a/packages/flutter/test/widget/page_transitions_test.dart b/packages/flutter/test/widget/page_transitions_test.dart
index e3756c0..20ed70f 100644
--- a/packages/flutter/test/widget/page_transitions_test.dart
+++ b/packages/flutter/test/widget/page_transitions_test.dart
@@ -9,6 +9,7 @@
 import 'test_matchers.dart';
 
 class TestOverlayRoute extends OverlayRoute<Null> {
+  @override
   List<WidgetBuilder> get builders => <WidgetBuilder>[ _build ];
   Widget _build(BuildContext context) => new Text('Overlay');
 }
diff --git a/packages/flutter/test/widget/remember_scroll_position_test.dart b/packages/flutter/test/widget/remember_scroll_position_test.dart
index 6e6b7e3..cb77013 100644
--- a/packages/flutter/test/widget/remember_scroll_position_test.dart
+++ b/packages/flutter/test/widget/remember_scroll_position_test.dart
@@ -7,6 +7,7 @@
 import 'package:test/test.dart';
 
 class ThePositiveNumbers extends StatelessWidget {
+  @override
   Widget build(BuildContext context) {
     return new ScrollableLazyList(
       itemExtent: 100.0,
diff --git a/packages/flutter/test/widget/render_object_widget_test.dart b/packages/flutter/test/widget/render_object_widget_test.dart
index ed70615..f7301b6 100644
--- a/packages/flutter/test/widget/render_object_widget_test.dart
+++ b/packages/flutter/test/widget/render_object_widget_test.dart
@@ -13,7 +13,10 @@
 
 class TestWidget extends StatelessWidget {
   const TestWidget({ this.child });
+
   final Widget child;
+
+  @override
   Widget build(BuildContext context) => child;
 }
 
diff --git a/packages/flutter/test/widget/reparent_state_test.dart b/packages/flutter/test/widget/reparent_state_test.dart
index 5bc5871..d20d035 100644
--- a/packages/flutter/test/widget/reparent_state_test.dart
+++ b/packages/flutter/test/widget/reparent_state_test.dart
@@ -11,12 +11,14 @@
 
   final Widget child;
 
+  @override
   StateMarkerState createState() => new StateMarkerState();
 }
 
 class StateMarkerState extends State<StateMarker> {
   String marker;
 
+  @override
   Widget build(BuildContext context) {
     if (config.child != null)
       return config.child;
diff --git a/packages/flutter/test/widget/routes_test.dart b/packages/flutter/test/widget/routes_test.dart
index 290ecb0..d6f0838 100644
--- a/packages/flutter/test/widget/routes_test.dart
+++ b/packages/flutter/test/widget/routes_test.dart
@@ -16,6 +16,7 @@
   TestRoute(this.name);
   final String name;
 
+  @override
   List<OverlayEntry> get overlayEntries => _entries;
 
   List<OverlayEntry> _entries = <OverlayEntry>[];
@@ -24,6 +25,7 @@
     results.add('$name: $s');
   }
 
+  @override
   void install(OverlayEntry insertionPoint) {
     log('install');
     OverlayEntry entry = new OverlayEntry(
@@ -35,14 +37,17 @@
     routes.add(this);
   }
 
+  @override
   void didPush() {
     log('didPush');
   }
 
+  @override
   void didReplace(TestRoute oldRoute) {
     log('didReplace ${oldRoute.name}');
   }
 
+  @override
   bool didPop(String result) {
     log('didPop $result');
     bool returnValue;
@@ -51,14 +56,17 @@
     return returnValue;
   }
 
+  @override
   void didPopNext(TestRoute nextRoute) {
     log('didPopNext ${nextRoute.name}');
   }
 
+  @override
   void didChangeNext(TestRoute nextRoute) {
     log('didChangeNext ${nextRoute?.name}');
   }
 
+  @override
   void dispose() {
     log('dispose');
     _entries.forEach((OverlayEntry entry) { entry.remove(); });
diff --git a/packages/flutter/test/widget/set_state_3_test.dart b/packages/flutter/test/widget/set_state_3_test.dart
index 0d8b221..78599de 100644
--- a/packages/flutter/test/widget/set_state_3_test.dart
+++ b/packages/flutter/test/widget/set_state_3_test.dart
@@ -13,12 +13,14 @@
 
   final Widget child;
 
+  @override
   ChangerState createState() => new ChangerState();
 }
 
 class ChangerState extends State<Changer> {
   bool _state = false;
 
+  @override
   void initState() {
     super.initState();
     changer = this;
@@ -26,6 +28,7 @@
 
   void test() { setState(() { _state = true; }); }
 
+  @override
   Widget build(BuildContext context) => _state ? new Wrapper(config.child) : config.child;
 }
 
@@ -34,14 +37,17 @@
 
   final Widget child;
 
+  @override
   Widget build(BuildContext context) => child;
 }
 
 class Leaf extends StatefulWidget {
+  @override
   LeafState createState() => new LeafState();
 }
 
 class LeafState extends State<Leaf> {
+  @override
   Widget build(BuildContext context) => new Text("leaf");
 }
 
diff --git a/packages/flutter/test/widget/set_state_test.dart b/packages/flutter/test/widget/set_state_test.dart
index c046ce8..91c6d44 100644
--- a/packages/flutter/test/widget/set_state_test.dart
+++ b/packages/flutter/test/widget/set_state_test.dart
@@ -7,10 +7,12 @@
 import 'package:test/test.dart';
 
 class Inside extends StatefulWidget {
+  @override
   InsideState createState() => new InsideState();
 }
 
 class InsideState extends State<Inside> {
+  @override
   Widget build(BuildContext context) {
     return new Listener(
       onPointerDown: _handlePointerDown,
@@ -28,10 +30,12 @@
 
   final Inside child;
 
+  @override
   MiddleState createState() => new MiddleState();
 }
 
 class MiddleState extends State<Middle> {
+  @override
   Widget build(BuildContext context) {
     return new Listener(
       onPointerDown: _handlePointerDown,
@@ -45,10 +49,12 @@
 }
 
 class Outside extends StatefulWidget {
+  @override
   OutsideState createState() => new OutsideState();
 }
 
 class OutsideState extends State<Outside> {
+  @override
   Widget build(BuildContext context) {
     return new Middle(child: new Inside());
   }
diff --git a/packages/flutter/test/widget/stateful_components_test.dart b/packages/flutter/test/widget/stateful_components_test.dart
index 179e7e4..8233ef1 100644
--- a/packages/flutter/test/widget/stateful_components_test.dart
+++ b/packages/flutter/test/widget/stateful_components_test.dart
@@ -8,17 +8,21 @@
 
 class InnerWidget extends StatefulWidget {
   InnerWidget({ Key key }) : super(key: key);
+
+  @override
   InnerWidgetState createState() => new InnerWidgetState();
 }
 
 class InnerWidgetState extends State<InnerWidget> {
   bool _didInitState = false;
 
+  @override
   void initState() {
     super.initState();
     _didInitState = true;
   }
 
+  @override
   Widget build(BuildContext context) {
     return new Container();
   }
@@ -29,10 +33,12 @@
 
   final InnerWidget child;
 
+  @override
   OuterContainerState createState() => new OuterContainerState();
 }
 
 class OuterContainerState extends State<OuterContainer> {
+  @override
   Widget build(BuildContext context) {
     return config.child;
   }
diff --git a/packages/flutter/test/widget/syncing_test.dart b/packages/flutter/test/widget/syncing_test.dart
index b6fedcb..8723ebb 100644
--- a/packages/flutter/test/widget/syncing_test.dart
+++ b/packages/flutter/test/widget/syncing_test.dart
@@ -13,6 +13,7 @@
   final int persistentState;
   final int syncedState;
 
+  @override
   TestWidgetState createState() => new TestWidgetState();
 }
 
@@ -21,12 +22,14 @@
   int syncedState;
   int updates = 0;
 
+  @override
   void initState() {
     super.initState();
     persistentState = config.persistentState;
     syncedState = config.syncedState;
   }
 
+  @override
   void didUpdateConfig(TestWidget oldConfig) {
     syncedState = config.syncedState;
     // we explicitly do NOT sync the persistentState from the new instance
@@ -34,6 +37,7 @@
     updates += 1;
   }
 
+  @override
   Widget build(BuildContext context) => config.child;
 }
 
diff --git a/packages/flutter/test/widget/test_matchers.dart b/packages/flutter/test/widget/test_matchers.dart
index 2b395fa..d46bdde 100644
--- a/packages/flutter/test/widget/test_matchers.dart
+++ b/packages/flutter/test/widget/test_matchers.dart
@@ -20,25 +20,41 @@
 
 class _IsOnStage extends Matcher {
   const _IsOnStage();
+
+  @override
   bool matches(Element item, Map<dynamic, dynamic> matchState) => !_hasAncestorOfType(item, OffStage);
+
+  @override
   Description describe(Description description) => description.add('onstage');
 }
 
 class _IsOffStage extends Matcher {
   const _IsOffStage();
+
+  @override
   bool matches(Element item, Map<dynamic, dynamic> matchState) => _hasAncestorOfType(item, OffStage);
+
+  @override
   Description describe(Description description) => description.add('offstage');
 }
 
 class _IsInCard extends Matcher {
   const _IsInCard();
+
+  @override
   bool matches(Element item, Map<dynamic, dynamic> matchState) => _hasAncestorOfType(item, Card);
+
+  @override
   Description describe(Description description) => description.add('in card');
 }
 
 class _IsNotInCard extends Matcher {
   const _IsNotInCard();
+
+  @override
   bool matches(Element item, Map<dynamic, dynamic> matchState) => !_hasAncestorOfType(item, Card);
+
+  @override
   Description describe(Description description) => description.add('not in card');
 }
 
diff --git a/packages/flutter/test/widget/test_semantics.dart b/packages/flutter/test/widget/test_semantics.dart
index 9fa4a32..9f399a3 100644
--- a/packages/flutter/test/widget/test_semantics.dart
+++ b/packages/flutter/test/widget/test_semantics.dart
@@ -9,7 +9,10 @@
   TestSemanticsListener() {
     SemanticsNode.addListener(this);
   }
+
   final List<mojom.SemanticsNode> updates = <mojom.SemanticsNode>[];
+
+  @override
   void updateSemanticsTree(List<mojom.SemanticsNode> nodes) {
     assert(!nodes.any((mojom.SemanticsNode node) => node == null));
     updates.addAll(nodes);
diff --git a/packages/flutter/test/widget/test_widgets.dart b/packages/flutter/test/widget/test_widgets.dart
index 4b6fa29..b48f38f 100644
--- a/packages/flutter/test/widget/test_widgets.dart
+++ b/packages/flutter/test/widget/test_widgets.dart
@@ -21,6 +21,7 @@
 class TestBuildCounter extends StatelessWidget {
   static int buildCount = 0;
 
+  @override
   Widget build(BuildContext context) {
     ++buildCount;
     return new DecoratedBox(decoration: kBoxDecorationA);
@@ -34,6 +35,7 @@
   final Widget left;
   final Widget right;
 
+  @override
   FlipWidgetState createState() => new FlipWidgetState();
 }
 
@@ -46,6 +48,7 @@
     });
   }
 
+  @override
   Widget build(BuildContext context) {
     return _showLeft ? config.left : config.right;
   }
diff --git a/packages/flutter_driver/lib/src/error.dart b/packages/flutter_driver/lib/src/error.dart
index ebb4be3..cba9e5d 100644
--- a/packages/flutter_driver/lib/src/error.dart
+++ b/packages/flutter_driver/lib/src/error.dart
@@ -15,6 +15,7 @@
   final dynamic originalError;
   final dynamic originalStackTrace;
 
+  @override
   String toString() {
     return '''DriverError: $message
 Original error: $originalError
@@ -56,6 +57,7 @@
   final String loggerName;
   final String message;
 
+  @override
   String toString() => '[${"$level".split(".").last}] $loggerName: $message';
 }
 
diff --git a/packages/flutter_driver/lib/src/find.dart b/packages/flutter_driver/lib/src/find.dart
index efe7045..2b63a9c 100644
--- a/packages/flutter_driver/lib/src/find.dart
+++ b/packages/flutter_driver/lib/src/find.dart
@@ -13,12 +13,14 @@
 
 /// Command to find an element.
 class Find extends Command {
+  @override
   final String kind = 'find';
 
   Find(this.searchSpec);
 
   final SearchSpecification searchSpec;
 
+  @override
   Map<String, String> serialize() => searchSpec.serialize();
 
   static Find deserialize(Map<String, String> json) {
@@ -47,6 +49,7 @@
 
 /// Tells [Find] to search by tooltip text.
 class ByTooltipMessage extends SearchSpecification {
+  @override
   final String searchSpecType = 'ByTooltipMessage';
 
   ByTooltipMessage(this.text);
@@ -54,6 +57,7 @@
   /// Tooltip message text.
   final String text;
 
+  @override
   Map<String, String> serialize() => super.serialize()..addAll({
     'text': text,
   });
@@ -65,12 +69,14 @@
 
 /// Tells [Find] to search for `Text` widget by text.
 class ByText extends SearchSpecification {
+  @override
   final String searchSpecType = 'ByText';
 
   ByText(this.text);
 
   final String text;
 
+  @override
   Map<String, String> serialize() => super.serialize()..addAll({
     'text': text,
   });
@@ -82,6 +88,7 @@
 
 /// Tells [Find] to search by `ValueKey`.
 class ByValueKey extends SearchSpecification {
+  @override
   final String searchSpecType = 'ByValueKey';
 
   ByValueKey(dynamic keyValue)
@@ -103,6 +110,7 @@
   /// May be one of "String", "int". The list of supported types may change.
   final String keyValueType;
 
+  @override
   Map<String, String> serialize() => super.serialize()..addAll({
     'keyValueString': keyValueString,
     'keyValueType': keyValueType,
@@ -127,12 +135,14 @@
   /// [targetRef] identifies an element that contains a piece of text.
   GetText(ObjectRef targetRef) : super(targetRef);
 
+  @override
   final String kind = 'get_text';
 
   static GetText deserialize(Map<String, String> json) {
     return new GetText(new ObjectRef(json['targetRef']));
   }
 
+  @override
   Map<String, String> serialize() => super.serialize();
 }
 
@@ -145,6 +155,7 @@
     return new GetTextResult(json['text']);
   }
 
+  @override
   Map<String, dynamic> toJson() => {
     'text': text,
   };
diff --git a/packages/flutter_driver/lib/src/gesture.dart b/packages/flutter_driver/lib/src/gesture.dart
index 4cf0339..f040d64 100644
--- a/packages/flutter_driver/lib/src/gesture.dart
+++ b/packages/flutter_driver/lib/src/gesture.dart
@@ -5,6 +5,7 @@
 import 'message.dart';
 
 class Tap extends CommandWithTarget {
+  @override
   final String kind = 'tap';
 
   Tap(ObjectRef targetRef) : super(targetRef);
@@ -13,6 +14,7 @@
     return new Tap(new ObjectRef(json['targetRef']));
   }
 
+  @override
   Map<String, String> serialize() => super.serialize();
 }
 
@@ -21,12 +23,14 @@
     return new TapResult();
   }
 
+  @override
   Map<String, dynamic> toJson() => {};
 }
 
 
 /// Command the driver to perform a scrolling action.
 class Scroll extends CommandWithTarget {
+  @override
   final String kind = 'scroll';
 
   Scroll(
@@ -59,6 +63,7 @@
   /// The frequency in Hz of the generated move events.
   final int frequency;
 
+  @override
   Map<String, String> serialize() => super.serialize()..addAll({
     'dx': '$dx',
     'dy': '$dy',
@@ -72,5 +77,6 @@
     return new ScrollResult();
   }
 
+  @override
   Map<String, dynamic> toJson() => {};
 }
diff --git a/packages/flutter_driver/lib/src/health.dart b/packages/flutter_driver/lib/src/health.dart
index 1fffbe9..2246f96 100644
--- a/packages/flutter_driver/lib/src/health.dart
+++ b/packages/flutter_driver/lib/src/health.dart
@@ -7,10 +7,12 @@
 
 /// Requests an application health check.
 class GetHealth implements Command {
+  @override
   final String kind = 'get_health';
 
   static GetHealth deserialize(Map<String, String> json) => new GetHealth();
 
+  @override
   Map<String, String> serialize() => const {};
 }
 
@@ -39,6 +41,7 @@
   /// Health status
   final HealthStatus status;
 
+  @override
   Map<String, dynamic> toJson() => {
     'status': _healthStatusIndex.toSimpleName(status)
   };
diff --git a/packages/flutter_driver/lib/src/matcher_util.dart b/packages/flutter_driver/lib/src/matcher_util.dart
index 12ab680..3944381 100644
--- a/packages/flutter_driver/lib/src/matcher_util.dart
+++ b/packages/flutter_driver/lib/src/matcher_util.dart
@@ -36,19 +36,23 @@
 class _TextDescription implements Description {
   final StringBuffer _text = new StringBuffer();
 
+  @override
   int get length => _text.length;
 
+  @override
   Description add(String text) {
     _text.write(text);
     return this;
   }
 
+  @override
   Description replace(String text) {
     _text.clear();
     _text.write(text);
     return this;
   }
 
+  @override
   Description addDescriptionOf(dynamic value) {
     if (value is Matcher) {
       value.describe(this);
@@ -58,6 +62,7 @@
     }
   }
 
+  @override
   Description addAll(String start, String separator, String end, Iterable<dynamic> list) {
     add(start);
     if (list.isNotEmpty) {
@@ -71,5 +76,6 @@
     return this;
   }
 
+  @override
   String toString() => '$_text';
 }
diff --git a/packages/flutter_driver/lib/src/message.dart b/packages/flutter_driver/lib/src/message.dart
index 4788c0c..374d985 100644
--- a/packages/flutter_driver/lib/src/message.dart
+++ b/packages/flutter_driver/lib/src/message.dart
@@ -39,6 +39,7 @@
   /// tests should not generate these keys.
   final String objectReferenceKey;
 
+  @override
   Map<String, dynamic> toJson() => {
     'objectReferenceKey': objectReferenceKey,
   };
@@ -69,6 +70,7 @@
   ///     Map<String, String> toJson() => super.toJson()..addAll({
   ///       'foo': this.foo,
   ///     });
+  @override
   Map<String, String> serialize() => <String, String>{
     'targetRef': targetRef,
   };
diff --git a/packages/flutter_markdown/lib/src/markdown.dart b/packages/flutter_markdown/lib/src/markdown.dart
index 5edfffd..3549ae4 100644
--- a/packages/flutter_markdown/lib/src/markdown.dart
+++ b/packages/flutter_markdown/lib/src/markdown.dart
@@ -34,6 +34,7 @@
     onTapLink: onTapLink
   );
 
+  @override
   MarkdownBody createMarkdownBody({
     String data,
     MarkdownStyle markdownStyle,
@@ -84,6 +85,7 @@
     onTapLink: onTapLink
   );
 
+  @override
   MarkdownStyle createDefaultStyle(BuildContext context) {
     return new MarkdownStyle.defaultFromTheme(Theme.of(context));
   }
diff --git a/packages/flutter_markdown/lib/src/markdown_raw.dart b/packages/flutter_markdown/lib/src/markdown_raw.dart
index a7414c9..adb2f72 100644
--- a/packages/flutter_markdown/lib/src/markdown_raw.dart
+++ b/packages/flutter_markdown/lib/src/markdown_raw.dart
@@ -48,6 +48,7 @@
   /// Callback when a link is tapped
   final MarkdownLinkCallback onTapLink;
 
+  @override
   Widget build(BuildContext context) {
     return new ScrollableViewport(
       child: new Padding(
@@ -120,6 +121,7 @@
   /// Callback when a link is tapped
   final MarkdownLinkCallback onTapLink;
 
+  @override
   _MarkdownBodyRawState createState() => new _MarkdownBodyRawState();
 
   MarkdownStyleRaw createDefaultStyle(BuildContext context) => null;
@@ -127,16 +129,19 @@
 
 class _MarkdownBodyRawState extends State<MarkdownBodyRaw> {
 
+  @override
   void initState() {
     super.initState();
     _buildMarkdownCache();
   }
 
+  @override
   void dispose() {
     _linkHandler.dispose();
     super.dispose();
   }
 
+  @override
   void didUpdateConfig(MarkdownBodyRaw oldConfig) {
     super.didUpdateConfig(oldConfig);
 
@@ -165,6 +170,7 @@
   List<_Block> _cachedBlocks;
   _LinkHandler _linkHandler;
 
+  @override
   Widget build(BuildContext context) {
     List<Widget> blocks = <Widget>[];
     for (_Block block in _cachedBlocks) {
@@ -177,6 +183,7 @@
     );
   }
 
+  @override
   void debugFillDescription(List<String> description) {
     description.add('cached blocks identity: ${_cachedBlocks.hashCode}');
   }
@@ -205,6 +212,7 @@
   SyntaxHighlighter _syntaxHighlighter;
   _LinkHandler _linkHandler;
 
+  @override
   void visitText(md.Text text) {
     _MarkdownNodeList topList = _currentBlock.stack.last;
     List<_MarkdownNode> top = topList.list;
@@ -215,6 +223,7 @@
       top.add(new _MarkdownNodeString(text.text));
   }
 
+  @override
   bool visitElementBefore(md.Element element) {
     if (_isListTag(element.tag))
       _listIndents.add(element.tag);
@@ -241,6 +250,7 @@
     return true;
   }
 
+  @override
   void visitElementAfter(md.Element element) {
     if (_isListTag(element.tag))
       _listIndents.removeLast();
@@ -520,6 +530,7 @@
 
   final TextStyle style;
 
+  @override
   TextSpan format(String source) {
     return new TextSpan(style: style, children: <TextSpan>[new TextSpan(text: source)]);
   }
diff --git a/packages/flutter_sprites/lib/src/action.dart b/packages/flutter_sprites/lib/src/action.dart
index d0b6cf9..c77298f 100644
--- a/packages/flutter_sprites/lib/src/action.dart
+++ b/packages/flutter_sprites/lib/src/action.dart
@@ -47,6 +47,7 @@
   /// The duration, in seconds, of the action.
   ///
   ///     double myTime = myAction.duration;
+  @override
   double get duration => _duration;
   double _duration;
 
@@ -58,6 +59,7 @@
   bool _firstTick = true;
   double _elapsed = 0.0;
 
+  @override
   void step(double dt) {
     if (_firstTick) {
       _firstTick = false;
@@ -96,6 +98,7 @@
     _duration = action.duration * numRepeats;
   }
 
+  @override
   void update(double t) {
     int currentRepeat = math.min((t * numRepeats.toDouble()).toInt(), numRepeats - 1);
     for (int i = math.max(_lastFinishedRepeat, 0); i < currentRepeat; i++) {
@@ -124,6 +127,7 @@
   ///     var myInifiniteLoop = new ActionRepeatForever(myAction);
   ActionRepeatForever(this.action);
 
+  @override
   void step(double dt) {
     _elapsedInAction += dt;
     while (_elapsedInAction > action.duration) {
@@ -176,6 +180,7 @@
     }
   }
 
+  @override
   void update(double t) {
     if (t < _split) {
       // Play first action
@@ -225,6 +230,7 @@
     action._finished = true;
   }
 
+  @override
   void _reset() {
     super._reset();
     _a._reset();
@@ -249,6 +255,7 @@
     }
   }
 
+  @override
   void update(double t) {
     if (t >= 1.0) {
       // Finish all unfinished actions
@@ -289,6 +296,7 @@
     }
   }
 
+  @override
   void _reset() {
     for (Action action in _actions) {
       action._reset();
@@ -307,9 +315,11 @@
 /// create custom instant actions, only the [fire] method should be overriden.
 abstract class ActionInstant extends Action {
 
+  @override
   void step(double dt) {
   }
 
+  @override
   void update(double t) {
     fire();
     _finished = true;
@@ -327,6 +337,7 @@
   ///     var myAction = new ActionCallFunction(() { print("Hello!";) });
   ActionCallFunction(this._function);
 
+  @override
   void fire() {
     _function();
   }
@@ -341,6 +352,7 @@
   ///     var myAction = new ActionRemoveNode(myNode);
   ActionRemoveNode(this._node);
 
+  @override
   void fire() {
     _node.removeFromParent();
   }
@@ -423,6 +435,7 @@
     }
   }
 
+  @override
   void update(double t) {
     dynamic newVal;
 
diff --git a/packages/flutter_sprites/lib/src/action_spline.dart b/packages/flutter_sprites/lib/src/action_spline.dart
index beef314..c6abc13 100644
--- a/packages/flutter_sprites/lib/src/action_spline.dart
+++ b/packages/flutter_sprites/lib/src/action_spline.dart
@@ -42,6 +42,7 @@
 
   double _dt;
 
+  @override
   void update(double t) {
 
     int p;
diff --git a/packages/flutter_sprites/lib/src/constraint.dart b/packages/flutter_sprites/lib/src/constraint.dart
index 99296cf..343cff5 100644
--- a/packages/flutter_sprites/lib/src/constraint.dart
+++ b/packages/flutter_sprites/lib/src/constraint.dart
@@ -48,10 +48,12 @@
 
   Point _lastPosition;
 
+  @override
   void preUpdate(Node node, double dt) {
     _lastPosition = node.position;
   }
 
+  @override
   void constrain(Node node, double dt) {
     if (_lastPosition == null) return;
     if (_lastPosition == node.position) return;
@@ -83,6 +85,7 @@
   /// values are in the range 0.0 to 1.0
   final double dampening;
 
+  @override
   void constrain(Node node, double dt) {
     Offset offset;
 
@@ -117,6 +120,7 @@
   final Offset offset;
   final double dampening;
 
+  @override
   void constrain(Node node, double dt) {
     Point targetPosition;
 
diff --git a/packages/flutter_sprites/lib/src/effect_line.dart b/packages/flutter_sprites/lib/src/effect_line.dart
index 1f94fce..2c8af36 100644
--- a/packages/flutter_sprites/lib/src/effect_line.dart
+++ b/packages/flutter_sprites/lib/src/effect_line.dart
@@ -89,6 +89,7 @@
   TexturedLinePainter _painter;
   double _offset = 0.0;
 
+  @override
   void update(double dt) {
     // Update scrolling position
     if (animationMode == EffectLineAnimationMode.scroll) {
@@ -121,6 +122,7 @@
     }
   }
 
+  @override
   void paint(Canvas canvas) {
     if (points.length < 2) return;
 
diff --git a/packages/flutter_sprites/lib/src/label.dart b/packages/flutter_sprites/lib/src/label.dart
index 0318cdc..218e509 100644
--- a/packages/flutter_sprites/lib/src/label.dart
+++ b/packages/flutter_sprites/lib/src/label.dart
@@ -33,6 +33,7 @@
   TextPainter _painter;
   double _width;
 
+  @override
   void paint(Canvas canvas) {
     if (_painter == null) {
       _painter = new TextPainter(new TextSpan(style: _textStyle, text: _text));
diff --git a/packages/flutter_sprites/lib/src/layer.dart b/packages/flutter_sprites/lib/src/layer.dart
index 8c8e592..2c4bb1d 100644
--- a/packages/flutter_sprites/lib/src/layer.dart
+++ b/packages/flutter_sprites/lib/src/layer.dart
@@ -25,6 +25,7 @@
     ..filterQuality = FilterQuality.low
     ..isAntiAlias = false;
 
+  @override
   void _prePaint(Canvas canvas, Matrix4 matrix) {
     super._prePaint(canvas, matrix);
 
@@ -32,6 +33,7 @@
     canvas.saveLayer(layerRect, _cachedPaint);
   }
 
+  @override
   void _postPaint(Canvas canvas, Matrix4 totalMatrix) {
     canvas.restore();
     super._postPaint(canvas, totalMatrix);
diff --git a/packages/flutter_sprites/lib/src/node3d.dart b/packages/flutter_sprites/lib/src/node3d.dart
index 1424a21..6cc7777 100644
--- a/packages/flutter_sprites/lib/src/node3d.dart
+++ b/packages/flutter_sprites/lib/src/node3d.dart
@@ -38,6 +38,7 @@
     invalidateTransformMatrix();
   }
 
+  @override
   Matrix4 computeTransformMatrix() {
     // Apply normal 2d transforms
     Matrix4 matrix = super.computeTransformMatrix();
diff --git a/packages/flutter_sprites/lib/src/node_with_size.dart b/packages/flutter_sprites/lib/src/node_with_size.dart
index 7cba2e5..068d4be 100644
--- a/packages/flutter_sprites/lib/src/node_with_size.dart
+++ b/packages/flutter_sprites/lib/src/node_with_size.dart
@@ -49,6 +49,7 @@
     }
   }
 
+  @override
   bool isPointInside (Point nodePoint) {
 
     double minX = -size.width * pivot.x;
diff --git a/packages/flutter_sprites/lib/src/particle_system.dart b/packages/flutter_sprites/lib/src/particle_system.dart
index 3b8fb40..7f6c435 100644
--- a/packages/flutter_sprites/lib/src/particle_system.dart
+++ b/packages/flutter_sprites/lib/src/particle_system.dart
@@ -196,6 +196,7 @@
     if (colorSequence == null) colorSequence = new ColorSequence.fromStartAndEndColor(new Color(0xffffffff), new Color(0x00ffffff));
   }
 
+  @override
   void update(double dt) {
     // TODO: Fix this (it's a temp fix for low framerates)
     if (dt > 0.1) dt = 0.1;
@@ -359,6 +360,7 @@
     _numEmittedParticles++;
   }
 
+  @override
   void paint(Canvas canvas) {
     if (opacity == 0.0) return;
 
diff --git a/packages/flutter_sprites/lib/src/physics_debug.dart b/packages/flutter_sprites/lib/src/physics_debug.dart
index 2461639..e254b40 100644
--- a/packages/flutter_sprites/lib/src/physics_debug.dart
+++ b/packages/flutter_sprites/lib/src/physics_debug.dart
@@ -16,6 +16,7 @@
 
   Canvas canvas;
 
+  @override
   void drawSegment(Vector2 p1, Vector2 p2, box2d.Color3i color) {
     Paint paint = new Paint()
       ..color = _toColor(color)
@@ -23,6 +24,7 @@
     canvas.drawLine(_toPoint(p1), _toPoint(p2), paint);
   }
 
+  @override
   void drawSolidPolygon(
     List<Vector2> vertices,
     int vertexCount,
@@ -40,6 +42,7 @@
     canvas.drawPath(path, paint);
   }
 
+  @override
   void drawCircle(Vector2 center, num radius, box2d.Color3i color, [Vector2 axis]) {
     Paint paint = new Paint()
       ..color = _toColor(color)
@@ -49,6 +52,7 @@
     canvas.drawCircle(_toPoint(center), _scale(radius), paint);
   }
 
+  @override
   void drawSolidCircle(Vector2 center, num radius, Vector2 axis, box2d.Color3i color) {
     Paint paint = new Paint()
       ..color = _toColor(color);
@@ -56,10 +60,12 @@
     canvas.drawCircle(_toPoint(center), _scale(radius), paint);
   }
 
+  @override
   void drawPoint(Vector2 point, num radiusOnScreen, box2d.Color3i color) {
     drawSolidCircle(point, radiusOnScreen, null, color);
   }
 
+  @override
   void drawParticles(
     List<Vector2> centers,
     double radius,
@@ -69,6 +75,7 @@
     // TODO: Implement
   }
 
+  @override
   void drawParticlesWireframe(
     List<Vector2> centers,
     double radius,
@@ -78,11 +85,13 @@
     // TODO: Implement
   }
 
+  @override
   void drawTransform(box2d.Transform xf, box2d.Color3i color) {
     drawCircle(xf.p, 0.1, color);
     // TODO: Improve
   }
 
+  @override
   void drawStringXY(num x, num y, String s, box2d.Color3i color) {
     // TODO: Implement
   }
diff --git a/packages/flutter_sprites/lib/src/physics_group.dart b/packages/flutter_sprites/lib/src/physics_group.dart
index 36cefa5..d6c361d 100644
--- a/packages/flutter_sprites/lib/src/physics_group.dart
+++ b/packages/flutter_sprites/lib/src/physics_group.dart
@@ -9,36 +9,44 @@
 ///     group.addChild(myNode);
 class PhysicsGroup extends Node {
 
+  @override
   void set scaleX(double scaleX) {
     assert(false);
   }
 
+  @override
   void set scaleY(double scaleX) {
     assert(false);
   }
 
+  @override
   void set skewX(double scaleX) {
     assert(false);
   }
 
+  @override
   void set skewY(double scaleX) {
     assert(false);
   }
 
+  @override
   void set physicsBody(PhysicsBody body) {
     assert(false);
   }
 
+  @override
   void set position(Point position) {
     super.position = position;
     _invalidatePhysicsBodies(this);
   }
 
+  @override
   void set rotation(double rotation) {
     super.rotation = rotation;
     _invalidatePhysicsBodies(this);
   }
 
+  @override
   void set scale(double scale) {
     super.scale = scale;
     _invalidatePhysicsBodies(this);
@@ -57,6 +65,7 @@
     }
   }
 
+  @override
   void addChild(Node node) {
     super.addChild(node);
 
@@ -80,6 +89,7 @@
     }
   }
 
+  @override
   void removeChild(Node node) {
     super.removeChild(node);
 
diff --git a/packages/flutter_sprites/lib/src/physics_joint.dart b/packages/flutter_sprites/lib/src/physics_joint.dart
index f409f4d..865870a 100644
--- a/packages/flutter_sprites/lib/src/physics_joint.dart
+++ b/packages/flutter_sprites/lib/src/physics_joint.dart
@@ -183,6 +183,7 @@
     }
   }
 
+  @override
   box2d.Joint _createB2Joint(PhysicsWorld physicsNode) {
     // Create Joint Definition
     Vector2 vecAnchor = new Vector2(
@@ -288,6 +289,7 @@
     }
   }
 
+  @override
   box2d.Joint _createB2Joint(PhysicsWorld physicsNode) {
     box2d.PrismaticJointDef b2Def = new box2d.PrismaticJointDef();
     b2Def.initialize(bodyA._body, bodyB._body, bodyA._body.position, new Vector2(axis.dx, axis.dy));
@@ -318,6 +320,7 @@
   final double dampening;
   final double frequency;
 
+  @override
   box2d.Joint _createB2Joint(PhysicsWorld physicsNode) {
     box2d.WeldJointDef b2Def = new box2d.WeldJointDef();
     Vector2 middle = new Vector2(
@@ -369,6 +372,7 @@
   final Point anchorB;
   final double ratio;
 
+  @override
   box2d.Joint _createB2Joint(PhysicsWorld physicsNode) {
     box2d.PulleyJointDef b2Def = new box2d.PulleyJointDef();
     b2Def.initialize(
@@ -407,6 +411,7 @@
   /// The ratio of the rotation for bodyA relative bodyB.
   final double ratio;
 
+  @override
   box2d.Joint _createB2Joint(PhysicsWorld physicsNode) {
     box2d.GearJointDef b2Def = new box2d.GearJointDef();
     b2Def.bodyA = bodyA._body;
@@ -452,6 +457,7 @@
   /// Dampening frequency.
   final double frequency;
 
+  @override
   box2d.Joint _createB2Joint(PhysicsWorld physicsNode) {
     box2d.DistanceJointDef b2Def = new box2d.DistanceJointDef();
     b2Def.initialize(
@@ -498,6 +504,7 @@
   /// Dampening frequency.
   final double frequency;
 
+  @override
   box2d.Joint _createB2Joint(PhysicsWorld physicsNode) {
     box2d.WheelJointDef b2Def = new box2d.WheelJointDef();
     b2Def.initialize(
@@ -533,6 +540,7 @@
   final double maxForce;
   final double maxTorque;
 
+  @override
   box2d.Joint _createB2Joint(PhysicsWorld physicsNode) {
     box2d.FrictionJointDef b2Def = new box2d.FrictionJointDef();
     b2Def.initialize(
@@ -565,6 +573,7 @@
   final double dampening;
   final double frequency;
 
+  @override
   box2d.Joint _createB2Joint(PhysicsWorld physicsNode) {
     box2d.ConstantVolumeJointDef b2Def = new box2d.ConstantVolumeJointDef();
     for (PhysicsBody body in bodies) {
diff --git a/packages/flutter_sprites/lib/src/physics_shape.dart b/packages/flutter_sprites/lib/src/physics_shape.dart
index 8f7eef9..2abbce5 100644
--- a/packages/flutter_sprites/lib/src/physics_shape.dart
+++ b/packages/flutter_sprites/lib/src/physics_shape.dart
@@ -30,6 +30,7 @@
   final Point point;
   final double radius;
 
+  @override
   box2d.Shape _createB2Shape(PhysicsWorld node, double scale) {
     box2d.CircleShape shape = new box2d.CircleShape();
     shape.p.x = scale * point.x / node.b2WorldToNodeConversionFactor;
@@ -52,6 +53,7 @@
 
   final List<Point> points;
 
+  @override
   box2d.Shape _createB2Shape(PhysicsWorld node, double scale) {
     List<Vector2> vectors = <Vector2>[];
     for (Point point in points) {
@@ -84,6 +86,7 @@
   final Point center;
   final double rotation;
 
+  @override
   box2d.Shape _createB2Shape(PhysicsWorld node, double scale) {
     box2d.PolygonShape shape = new box2d.PolygonShape();
     shape.setAsBox(
@@ -114,6 +117,7 @@
   final List<Point> points;
   final bool loop;
 
+  @override
   box2d.Shape _createB2Shape(PhysicsWorld node, double scale) {
     List<Vector2> vectors = <Vector2>[];
     for (Point point in points) {
@@ -145,6 +149,7 @@
   final Point pointA;
   final Point pointB;
 
+  @override
   box2d.Shape _createB2Shape(PhysicsWorld node, double scale) {
     box2d.EdgeShape shape = new box2d.EdgeShape();
     shape.set(
@@ -172,10 +177,12 @@
 
   final List<PhysicsShape> shapes;
 
+  @override
   box2d.Shape _createB2Shape(PhysicsWorld node, double scale) {
     return null;
   }
 
+  @override
   void _invalidate() {
     for (PhysicsShape shape in shapes) {
       shape._invalidate();
diff --git a/packages/flutter_sprites/lib/src/physics_world.dart b/packages/flutter_sprites/lib/src/physics_world.dart
index df974e9..7a7ed57 100644
--- a/packages/flutter_sprites/lib/src/physics_world.dart
+++ b/packages/flutter_sprites/lib/src/physics_world.dart
@@ -229,6 +229,7 @@
     }
   }
 
+  @override
   void addChild(Node node) {
     super.addChild(node);
     if (node.physicsBody != null) {
@@ -236,6 +237,7 @@
     }
   }
 
+  @override
   void removeChild(Node node) {
     super.removeChild(node);
     if (node.physicsBody != null) {
@@ -267,6 +269,7 @@
     _contactHandler.addContactCallback(callback, tagA, tagB, type);
   }
 
+  @override
   void paint(Canvas canvas) {
     if (drawDebug) {
       _debugDrawTransform = new Matrix4.fromFloat64List(canvas.getTotalMatrix());
@@ -423,17 +426,22 @@
     }
   }
 
+  @override
   void beginContact(box2d.Contact contact) {
     handleCallback(PhysicsContactType.begin, contact, null, null);
   }
 
+  @override
   void endContact(box2d.Contact contact) {
     handleCallback(PhysicsContactType.end, contact, null, null);
   }
 
+  @override
   void preSolve(box2d.Contact contact, box2d.Manifold oldManifold) {
     handleCallback(PhysicsContactType.preSolve, contact, oldManifold, null);
   }
+
+  @override
   void postSolve(box2d.Contact contact, box2d.ContactImpulse impulse) {
     handleCallback(PhysicsContactType.postSolve, contact, null, impulse);
   }
diff --git a/packages/flutter_sprites/lib/src/sprite.dart b/packages/flutter_sprites/lib/src/sprite.dart
index b770b9d..8ea0ef1 100644
--- a/packages/flutter_sprites/lib/src/sprite.dart
+++ b/packages/flutter_sprites/lib/src/sprite.dart
@@ -44,6 +44,7 @@
     pivot = new Point(0.5, 0.5);
   }
 
+  @override
   void paint(Canvas canvas) {
     // Account for pivot point
     applyTransformForPivot(canvas);
diff --git a/packages/flutter_sprites/lib/src/sprite_box.dart b/packages/flutter_sprites/lib/src/sprite_box.dart
index 8595d80..51c126e 100644
--- a/packages/flutter_sprites/lib/src/sprite_box.dart
+++ b/packages/flutter_sprites/lib/src/sprite_box.dart
@@ -57,6 +57,7 @@
     }
   }
 
+  @override
   void attach() {
     super.attach();
     _scheduleTick();
@@ -138,6 +139,7 @@
   ///     var rootNode = mySpriteBox.rootNode;
   NodeWithSize get rootNode => _rootNode;
 
+  @override
   void performLayout() {
     size = constraints.biggest;
     _invalidateTransformMatrix();
@@ -189,6 +191,7 @@
     }
   }
 
+  @override
   void handleEvent(PointerEvent event, _SpriteBoxHitTestEntry entry) {
     if (!attached)
       return;
@@ -238,6 +241,7 @@
     }
   }
 
+  @override
   bool hitTest(HitTestResult result, { Point position }) {
     result.add(new _SpriteBoxHitTestEntry(this, position));
     return true;
@@ -333,6 +337,7 @@
     _rootNode._invalidateToBoxTransformMatrix();
   }
 
+  @override
   void paint(PaintingContext context, Offset offset) {
     final Canvas canvas = context.canvas;
     canvas.save();
diff --git a/packages/flutter_sprites/lib/src/sprite_widget.dart b/packages/flutter_sprites/lib/src/sprite_widget.dart
index 37336af..58ca2b0 100644
--- a/packages/flutter_sprites/lib/src/sprite_widget.dart
+++ b/packages/flutter_sprites/lib/src/sprite_widget.dart
@@ -24,8 +24,10 @@
   ///     var mySpriteWidget = new SpriteWidget(mySpriteTree, SpriteBoxTransformMode.fixedHeight);
   SpriteWidget(this.rootNode, [this.transformMode = SpriteBoxTransformMode.letterbox]);
 
+  @override
   SpriteBox createRenderObject(BuildContext context) => new SpriteBox(rootNode, transformMode);
 
+  @override
   void updateRenderObject(BuildContext context, SpriteBox renderObject) {
     renderObject
       ..rootNode = rootNode
diff --git a/packages/flutter_sprites/lib/src/textured_line.dart b/packages/flutter_sprites/lib/src/textured_line.dart
index 8a36eea..59d2c34 100644
--- a/packages/flutter_sprites/lib/src/textured_line.dart
+++ b/packages/flutter_sprites/lib/src/textured_line.dart
@@ -7,6 +7,7 @@
 
   TexturedLinePainter painter;
 
+  @override
   void paint(Canvas canvas) {
     painter.paint(canvas);
   }
diff --git a/packages/flutter_sprites/lib/src/virtual_joystick.dart b/packages/flutter_sprites/lib/src/virtual_joystick.dart
index d4a2695..612e5d2 100644
--- a/packages/flutter_sprites/lib/src/virtual_joystick.dart
+++ b/packages/flutter_sprites/lib/src/virtual_joystick.dart
@@ -30,6 +30,7 @@
   Paint _paintHandle;
   Paint _paintControl;
 
+  @override
   bool handleEvent(SpriteBoxEvent event) {
     if (event.type == PointerDownEvent) {
       _pointerDownAt = event.boxPosition;
@@ -54,6 +55,7 @@
     return true;
   }
 
+  @override
   void paint(Canvas canvas) {
     applyTransformForPivot(canvas);
     canvas.drawCircle(_handlePos, 25.0, _paintHandle);
diff --git a/packages/flutter_test/lib/src/widget_tester.dart b/packages/flutter_test/lib/src/widget_tester.dart
index 07647bc..a09562a 100644
--- a/packages/flutter_test/lib/src/widget_tester.dart
+++ b/packages/flutter_test/lib/src/widget_tester.dart
@@ -36,6 +36,7 @@
   EnginePhase phase = EnginePhase.sendSemanticsTree;
 
   // Pump the rendering pipeline up to the given phase.
+  @override
   void beginFrame() {
     buildDirtyElements();
     _beginFrame();
@@ -123,6 +124,7 @@
     async.flushMicrotasks();
   }
 
+  @override
   void dispatchEvent(PointerEvent event, HitTestResult result) {
     super.dispatchEvent(event, result);
     async.flushMicrotasks();
diff --git a/packages/flutter_tools/.analysis_options b/packages/flutter_tools/.analysis_options
index c773324..f1976ec 100644
--- a/packages/flutter_tools/.analysis_options
+++ b/packages/flutter_tools/.analysis_options
@@ -22,7 +22,7 @@
     - avoid_empty_else
     - always_declare_return_types
     - always_specify_types
-    # - annotate_overrides # still a lot of work to do before enabling this one
+    - annotate_overrides
     # - avoid_as # https://github.com/dart-lang/linter/issues/195
     - avoid_init_to_null
     # - avoid_return_types_on_setters # https://github.com/dart-lang/linter/issues/202
diff --git a/packages/flutter_tools/lib/src/android/adb.dart b/packages/flutter_tools/lib/src/android/adb.dart
index 9d35daa2..afaf6a8 100644
--- a/packages/flutter_tools/lib/src/android/adb.dart
+++ b/packages/flutter_tools/lib/src/android/adb.dart
@@ -214,6 +214,7 @@
   /// Device product; can be null. `peregrine_retus`, `nakasi`
   String get productID => _info['product'];
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -223,8 +224,10 @@
     return id == typedOther.id;
   }
 
+  @override
   int get hashCode => id.hashCode;
 
+  @override
   String toString() {
     if (modelID == null) {
       return '$id ($status)';
diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart
index b1b1d50..bf9515d 100644
--- a/packages/flutter_tools/lib/src/android/android_device.dart
+++ b/packages/flutter_tools/lib/src/android/android_device.dart
@@ -32,7 +32,10 @@
 class AndroidDevices extends PollingDeviceDiscovery {
   AndroidDevices() : super('AndroidDevices');
 
+  @override
   bool get supportsPlatform => true;
+
+  @override
   List<Device> pollingGetDevices() => getAdbDevices();
 }
 
@@ -50,6 +53,7 @@
 
   bool _isLocalEmulator;
 
+  @override
   bool get isLocalEmulator {
     if (_isLocalEmulator == null) {
       // http://developer.android.com/ndk/guides/abis.html (x86, armeabi-v7a, ...)
@@ -152,6 +156,7 @@
     return shaFile.existsSync() ? shaFile.readAsStringSync() : '';
   }
 
+  @override
   String get name => modelID;
 
   @override
@@ -279,6 +284,7 @@
     }
   }
 
+  @override
   Future<bool> stopApp(ApplicationPackage app) {
     List<String> command = adbCommandForDevice(<String>['shell', 'am', 'force-stop', app.id]);
     return runCommandAndStreamOutput(command).then((int exitCode) => exitCode == 0);
@@ -288,16 +294,19 @@
   @override
   TargetPlatform get platform => TargetPlatform.android_arm;
 
+  @override
   void clearLogs() {
     runSync(adbCommandForDevice(<String>['logcat', '-c']));
   }
 
+  @override
   DeviceLogReader get logReader {
     if (_logReader == null)
       _logReader = new _AdbLogReader(this);
     return _logReader;
   }
 
+  @override
   DevicePortForwarder get portForwarder {
     if (_portForwarder == null)
       _portForwarder = new _AndroidDevicePortForwarder(this);
@@ -382,6 +391,7 @@
     return null;
   }
 
+  @override
   bool isSupported() => true;
 
   Future<bool> refreshSnapshot(AndroidApk apk, String snapshotPath) async {
@@ -488,14 +498,19 @@
   StreamSubscription<String> _stdoutSubscription;
   StreamSubscription<String> _stderrSubscription;
 
+  @override
   Stream<String> get lines => _linesStreamController.stream;
 
+  @override
   String get name => device.name;
 
+  @override
   bool get isReading => _process != null;
 
+  @override
   Future<int> get finished => _process != null ? _process.exitCode : new Future<int>.value(0);
 
+  @override
   Future<Null> start() async {
     if (_process != null)
       throw new StateError('_AdbLogReader must be stopped before it can be started.');
@@ -516,6 +531,7 @@
     _process.exitCode.then(_onExit);
   }
 
+  @override
   Future<Null> stop() async {
     if (_process == null)
       throw new StateError('_AdbLogReader must be started before it can be stopped.');
@@ -540,8 +556,10 @@
     _linesStreamController.add(line);
   }
 
+  @override
   int get hashCode => name.hashCode;
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -560,6 +578,7 @@
     return int.parse(portString.trim(), onError: (_) => null);
   }
 
+  @override
   List<ForwardedPort> get forwardedPorts {
     final List<ForwardedPort> ports = <ForwardedPort>[];
 
@@ -591,6 +610,7 @@
     return ports;
   }
 
+  @override
   Future<int> forward(int devicePort, { int hostPort }) async {
     if ((hostPort == null) || (hostPort == 0)) {
       // Auto select host port.
@@ -604,6 +624,7 @@
     return hostPort;
   }
 
+  @override
   Future<Null> unforward(ForwardedPort forwardedPort) async {
     runCheckedSync(device.adbCommandForDevice(
       <String>['forward', '--remove', 'tcp:${forwardedPort.hostPort}']
diff --git a/packages/flutter_tools/lib/src/android/android_sdk.dart b/packages/flutter_tools/lib/src/android/android_sdk.dart
index 819f64f..0e605f4 100644
--- a/packages/flutter_tools/lib/src/android/android_sdk.dart
+++ b/packages/flutter_tools/lib/src/android/android_sdk.dart
@@ -175,6 +175,7 @@
     _latestVersion = _sdkVersions.isEmpty ? null : _sdkVersions.last;
   }
 
+  @override
   String toString() => 'AndroidSdk: $directory';
 }
 
@@ -211,10 +212,12 @@
     return path.join(sdk.directory, 'build-tools', buildToolsVersion, binaryName);
   }
 
+  @override
   int compareTo(AndroidSdkVersion other) {
     return sdkLevel - other.sdkLevel;
   }
 
+  @override
   String toString() => '[${sdk.directory}, SDK version $sdkLevel, build-tools $buildToolsVersion]';
 
   bool _exists(String path, { bool complain: false }) {
diff --git a/packages/flutter_tools/lib/src/android/android_workflow.dart b/packages/flutter_tools/lib/src/android/android_workflow.dart
index 21a912b..9bccb0a 100644
--- a/packages/flutter_tools/lib/src/android/android_workflow.dart
+++ b/packages/flutter_tools/lib/src/android/android_workflow.dart
@@ -7,14 +7,19 @@
 import 'android_sdk.dart';
 
 class AndroidWorkflow extends Workflow {
+  @override
   String get label => 'Android toolchain';
 
+  @override
   bool get appliesToHostPlatform => true;
 
+  @override
   bool get canListDevices => getAdbPath(androidSdk) != null;
 
+  @override
   bool get canLaunchDevices => androidSdk != null && androidSdk.validateSdkWellFormed(complain: false);
 
+  @override
   ValidationResult validate() {
     Validator androidValidator = new Validator(
       label,
@@ -36,5 +41,6 @@
     return androidValidator.validate();
   }
 
+  @override
   void diagnose() => validate().print();
 }
diff --git a/packages/flutter_tools/lib/src/application_package.dart b/packages/flutter_tools/lib/src/application_package.dart
index 1b233b6..d376905 100644
--- a/packages/flutter_tools/lib/src/application_package.dart
+++ b/packages/flutter_tools/lib/src/application_package.dart
@@ -31,6 +31,7 @@
 
   String get displayName => name;
 
+  @override
   String toString() => displayName;
 }
 
@@ -95,6 +96,7 @@
     return new IOSApp(iosProjectDir: projectDir, iosProjectBundleId: value);
   }
 
+  @override
   String get displayName => id;
 }
 
diff --git a/packages/flutter_tools/lib/src/base/logger.dart b/packages/flutter_tools/lib/src/base/logger.dart
index 46a3791..7f2842c 100644
--- a/packages/flutter_tools/lib/src/base/logger.dart
+++ b/packages/flutter_tools/lib/src/base/logger.dart
@@ -26,22 +26,28 @@
 }
 
 class StdoutLogger implements Logger {
+  @override
   bool get isVerbose => false;
 
+  @override
   void printError(String message, [StackTrace stackTrace]) {
     stderr.writeln(message);
     if (stackTrace != null)
       stderr.writeln(stackTrace);
   }
 
+  @override
   void printStatus(String message) => print(message);
 
+  @override
   void printTrace(String message) { }
 
+  @override
   void flush() { }
 }
 
 class BufferLogger implements Logger {
+  @override
   bool get isVerbose => false;
 
   StringBuffer _error = new StringBuffer();
@@ -52,33 +58,44 @@
   String get statusText => _status.toString();
   String get traceText => _trace.toString();
 
+  @override
   void printError(String message, [StackTrace stackTrace]) => _error.writeln(message);
+
+  @override
   void printStatus(String message) => _status.writeln(message);
+
+  @override
   void printTrace(String message) => _trace.writeln(message);
 
+  @override
   void flush() { }
 }
 
 class VerboseLogger implements Logger {
   _LogMessage lastMessage;
 
+  @override
   bool get isVerbose => true;
 
+  @override
   void printError(String message, [StackTrace stackTrace]) {
     _emit();
     lastMessage = new _LogMessage(_LogType.error, message, stackTrace);
   }
 
+  @override
   void printStatus(String message) {
     _emit();
     lastMessage = new _LogMessage(_LogType.status, message);
   }
 
+  @override
   void printTrace(String message) {
     _emit();
     lastMessage = new _LogMessage(_LogType.trace, message);
   }
 
+  @override
   void flush() => _emit();
 
   void _emit() {
diff --git a/packages/flutter_tools/lib/src/base/os.dart b/packages/flutter_tools/lib/src/base/os.dart
index 973b421..99be5a8 100644
--- a/packages/flutter_tools/lib/src/base/os.dart
+++ b/packages/flutter_tools/lib/src/base/os.dart
@@ -38,12 +38,14 @@
 class _PosixUtils extends OperatingSystemUtils {
   _PosixUtils() : super._private();
 
+  @override
   ProcessResult makeExecutable(File file) {
     return Process.runSync('chmod', ['u+x', file.path]);
   }
 
   /// Return the path (with symlinks resolved) to the given executable, or `null`
   /// if `which` was not able to locate the binary.
+  @override
   File which(String execName) {
     ProcessResult result = Process.runSync('which', <String>[execName]);
     if (result.exitCode != 0)
@@ -57,10 +59,12 @@
   _WindowsUtils() : super._private();
 
   // This is a no-op.
+  @override
   ProcessResult makeExecutable(File file) {
     return new ProcessResult(0, 0, null, null);
   }
 
+  @override
   File which(String execName) {
     throw new UnimplementedError('_WindowsUtils.which');
   }
diff --git a/packages/flutter_tools/lib/src/base/process.dart b/packages/flutter_tools/lib/src/base/process.dart
index db37581..25b8bb3 100644
--- a/packages/flutter_tools/lib/src/base/process.dart
+++ b/packages/flutter_tools/lib/src/base/process.dart
@@ -136,8 +136,12 @@
 }
 
 class ProcessExit implements Exception {
-  final int exitCode;
   ProcessExit(this.exitCode);
+
+  final int exitCode;
+
   String get message => 'ProcessExit: $exitCode';
+
+  @override
   String toString() => message;
 }
diff --git a/packages/flutter_tools/lib/src/commands/analyze.dart b/packages/flutter_tools/lib/src/commands/analyze.dart
index f1326c3..b0a2ab3 100644
--- a/packages/flutter_tools/lib/src/commands/analyze.dart
+++ b/packages/flutter_tools/lib/src/commands/analyze.dart
@@ -118,8 +118,13 @@
     argParser.addFlag('watch', help: 'Run analysis continuously, watching the filesystem for changes.', negatable: false);
   }
 
+  @override
   String get name => 'analyze';
+
+  @override
   String get description => 'Analyze the project\'s Dart code.';
+
+  @override
   bool get requiresProjectRoot => false;
 
   bool get isFlutterRepo {
@@ -760,6 +765,7 @@
   int get startColumn => json['location']['startColumn'];
   int get offset => json['location']['offset'];
 
+  @override
   int compareTo(AnalysisError other) {
     // Sort in order of file path, error location, severity, and message.
     if (file != other.file)
@@ -775,6 +781,7 @@
     return message.compareTo(other.message);
   }
 
+  @override
   String toString() {
     String relativePath = path.relative(file);
     return '${severity.toLowerCase().padLeft(7)} • $message • $relativePath:$startLine:$startColumn';
diff --git a/packages/flutter_tools/lib/src/commands/apk.dart b/packages/flutter_tools/lib/src/commands/apk.dart
index d6dc01b..6b13c7e 100644
--- a/packages/flutter_tools/lib/src/commands/apk.dart
+++ b/packages/flutter_tools/lib/src/commands/apk.dart
@@ -136,7 +136,10 @@
 }
 
 class ApkCommand extends FlutterCommand {
+  @override
   final String name = 'apk';
+
+  @override
   final String description = 'Build an Android APK package.';
 
   ApkCommand() {
diff --git a/packages/flutter_tools/lib/src/commands/build.dart b/packages/flutter_tools/lib/src/commands/build.dart
index 04d80ce..54a5447 100644
--- a/packages/flutter_tools/lib/src/commands/build.dart
+++ b/packages/flutter_tools/lib/src/commands/build.dart
@@ -11,7 +11,10 @@
 import '../toolchain.dart';
 
 class BuildCommand extends FlutterCommand {
+  @override
   final String name = 'build';
+
+  @override
   final String description = 'Package your Flutter app into an FLX.';
 
   BuildCommand() {
@@ -42,6 +45,7 @@
     return await super.run();
   }
 
+  @override
   Future<int> runInProject() async {
     String compilerPath = argResults['compiler'];
 
diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart
index 4024580..0610177 100644
--- a/packages/flutter_tools/lib/src/commands/create.dart
+++ b/packages/flutter_tools/lib/src/commands/create.dart
@@ -16,8 +16,13 @@
 import '../template.dart';
 
 class CreateCommand extends Command {
+  @override
   final String name = 'create';
+
+  @override
   final String description = 'Create a new Flutter project.';
+
+  @override
   final List<String> aliases = <String>['init'];
 
   CreateCommand() {
@@ -38,6 +43,7 @@
     );
   }
 
+  @override
   String get invocation => "${runner.executableName} $name <output directory>";
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart
index e2a477a..4f205e4 100644
--- a/packages/flutter_tools/lib/src/commands/daemon.dart
+++ b/packages/flutter_tools/lib/src/commands/daemon.dart
@@ -28,14 +28,20 @@
 class DaemonCommand extends FlutterCommand {
   DaemonCommand({ bool hideCommand: false }) : _hideCommand = hideCommand;
 
+  @override
   final String name = 'daemon';
+
+  @override
   final String description = 'Run a persistent, JSON-RPC based server to communicate with devices.';
   final bool _hideCommand;
 
+  @override
   bool get requiresProjectRoot => false;
 
+  @override
   bool get hidden => _hideCommand;
 
+  @override
   Future<int> runInProject() {
     printStatus('Starting device daemon...');
 
@@ -155,6 +161,7 @@
 
   FlutterCommand get command => daemon.daemonCommand;
 
+  @override
   String toString() => name;
 
   void handleCommand(String command, dynamic id, dynamic args) {
@@ -220,6 +227,7 @@
     return new Future<Null>.value();
   }
 
+  @override
   void dispose() {
     _subscription?.cancel();
   }
@@ -371,6 +379,7 @@
     return new Future<Null>.value();
   }
 
+  @override
   void dispose() {
     for (PollingDeviceDiscovery discoverer in _discoverers) {
       discoverer.dispose();
@@ -410,14 +419,17 @@
 
   Stream<LogMessage> get onMessage => _messageController.stream;
 
+  @override
   void printError(String message, [StackTrace stackTrace]) {
     _messageController.add(new LogMessage('error', message, stackTrace));
   }
 
+  @override
   void printStatus(String message) {
     _messageController.add(new LogMessage('status', message));
   }
 
+  @override
   void printTrace(String message) {
     // This is a lot of traffic to send over the wire.
   }
diff --git a/packages/flutter_tools/lib/src/commands/devices.dart b/packages/flutter_tools/lib/src/commands/devices.dart
index 1f3b071..dd94309 100644
--- a/packages/flutter_tools/lib/src/commands/devices.dart
+++ b/packages/flutter_tools/lib/src/commands/devices.dart
@@ -10,12 +10,19 @@
 import '../runner/flutter_command.dart';
 
 class DevicesCommand extends FlutterCommand {
+  @override
   final String name = 'devices';
+
+  @override
   final String description = 'List all connected devices.';
+
+  @override
   final List<String> aliases = <String>['list'];
 
+  @override
   bool get requiresProjectRoot => false;
 
+  @override
   Future<int> runInProject() async {
     if (!doctor.canListAnything) {
       printError("Unable to locate a development device; please run 'flutter doctor' for "
diff --git a/packages/flutter_tools/lib/src/commands/doctor.dart b/packages/flutter_tools/lib/src/commands/doctor.dart
index dd30c60..188024d 100644
--- a/packages/flutter_tools/lib/src/commands/doctor.dart
+++ b/packages/flutter_tools/lib/src/commands/doctor.dart
@@ -10,11 +10,16 @@
 import '../runner/version.dart';
 
 class DoctorCommand extends FlutterCommand {
+  @override
   final String name = 'doctor';
+
+  @override
   final String description = 'Show information about the installed tooling.';
 
+  @override
   bool get requiresProjectRoot => false;
 
+  @override
   Future<int> runInProject() async {
     // general info
     String flutterRoot = ArtifactStore.flutterRoot;
diff --git a/packages/flutter_tools/lib/src/commands/drive.dart b/packages/flutter_tools/lib/src/commands/drive.dart
index 5cbbe6f..72e4e70 100644
--- a/packages/flutter_tools/lib/src/commands/drive.dart
+++ b/packages/flutter_tools/lib/src/commands/drive.dart
@@ -64,8 +64,13 @@
         help: 'Listen to the given port for a debug connection.');
   }
 
+  @override
   final String name = 'drive';
+
+  @override
   final String description = 'Runs Flutter Driver tests for the current project.';
+
+  @override
   final List<String> aliases = <String>['driver'];
 
   Device _device;
diff --git a/packages/flutter_tools/lib/src/commands/install.dart b/packages/flutter_tools/lib/src/commands/install.dart
index a801b22..3e68041 100644
--- a/packages/flutter_tools/lib/src/commands/install.dart
+++ b/packages/flutter_tools/lib/src/commands/install.dart
@@ -10,9 +10,13 @@
 import '../runner/flutter_command.dart';
 
 class InstallCommand extends FlutterCommand {
+  @override
   final String name = 'install';
+
+  @override
   final String description = 'Install a Flutter app on an attached device.';
 
+  @override
   bool get requiresDevice => true;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/listen.dart b/packages/flutter_tools/lib/src/commands/listen.dart
index 14cc781..1550a08 100644
--- a/packages/flutter_tools/lib/src/commands/listen.dart
+++ b/packages/flutter_tools/lib/src/commands/listen.dart
@@ -10,9 +10,14 @@
 import 'run.dart';
 
 class ListenCommand extends RunCommandBase {
+  @override
   final String name = 'listen';
+
+  @override
   final String description =
     'Listen for changes to files and reload the running app (Android only).';
+
+  @override
   final String usageFooter =
     'By default, only listens to "./" and "./lib/". To listen to additional directories, list them on\n'
     'the command line.';
@@ -22,8 +27,10 @@
 
   ListenCommand({ this.singleRun: false });
 
+  @override
   bool get androidOnly => true;
 
+  @override
   bool get requiresDevice => true;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/logs.dart b/packages/flutter_tools/lib/src/commands/logs.dart
index 9170c12..5190685 100644
--- a/packages/flutter_tools/lib/src/commands/logs.dart
+++ b/packages/flutter_tools/lib/src/commands/logs.dart
@@ -9,7 +9,10 @@
 import '../runner/flutter_command.dart';
 
 class LogsCommand extends FlutterCommand {
+  @override
   final String name = 'logs';
+
+  @override
   final String description = 'Show log output for running Flutter apps.';
 
   LogsCommand() {
@@ -20,10 +23,13 @@
     );
   }
 
+  @override
   bool get requiresProjectRoot => false;
 
+  @override
   bool get requiresDevice => true;
 
+  @override
   Future<int> runInProject() async {
     Device device = deviceForCommand;
 
diff --git a/packages/flutter_tools/lib/src/commands/refresh.dart b/packages/flutter_tools/lib/src/commands/refresh.dart
index 7f7ced0..1c4b54b 100644
--- a/packages/flutter_tools/lib/src/commands/refresh.dart
+++ b/packages/flutter_tools/lib/src/commands/refresh.dart
@@ -12,15 +12,20 @@
 import '../runner/flutter_command.dart';
 
 class RefreshCommand extends FlutterCommand {
+  @override
   final String name = 'refresh';
+
+  @override
   final String description = 'Build and deploy the Dart code in a Flutter app (Android only).';
 
   RefreshCommand() {
     addTargetOption();
   }
 
+  @override
   bool get androidOnly => true;
 
+  @override
   bool get requiresDevice => true;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart
index 09f627e..eefe535 100644
--- a/packages/flutter_tools/lib/src/commands/run.dart
+++ b/packages/flutter_tools/lib/src/commands/run.dart
@@ -53,8 +53,13 @@
 }
 
 class RunCommand extends RunCommandBase {
+  @override
   final String name = 'run';
+
+  @override
   final String description = 'Run your Flutter app on an attached device.';
+
+  @override
   final List<String> aliases = <String>['start'];
 
   RunCommand() {
@@ -76,6 +81,7 @@
         help: 'Listen to the given port for a debug connection.');
   }
 
+  @override
   bool get requiresDevice => true;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/run_mojo.dart b/packages/flutter_tools/lib/src/commands/run_mojo.dart
index 3f9bde4..d7e1642 100644
--- a/packages/flutter_tools/lib/src/commands/run_mojo.dart
+++ b/packages/flutter_tools/lib/src/commands/run_mojo.dart
@@ -18,7 +18,10 @@
 const String _kDefaultBundlePath = 'build/app.flx';
 
 class RunMojoCommand extends FlutterCommand {
+  @override
   final String name = 'run_mojo';
+
+  @override
   final String description = 'Run a Flutter app in mojo (from github.com/domokit/mojo).';
   final bool _hideCommand;
 
@@ -37,7 +40,10 @@
     argParser.addOption('devtools-path', help: 'Path to mojo devtools\' mojo_run command.');
   }
 
+  @override
   bool get requiresProjectRoot => false;
+
+  @override
   bool get hidden => _hideCommand;
 
   // TODO(abarth): Why not use path.absolute?
diff --git a/packages/flutter_tools/lib/src/commands/stop.dart b/packages/flutter_tools/lib/src/commands/stop.dart
index fd38f38..9a4ad86 100644
--- a/packages/flutter_tools/lib/src/commands/stop.dart
+++ b/packages/flutter_tools/lib/src/commands/stop.dart
@@ -10,9 +10,13 @@
 import '../runner/flutter_command.dart';
 
 class StopCommand extends FlutterCommand {
+  @override
   final String name = 'stop';
+
+  @override
   final String description = 'Stop your Flutter app on an attached device.';
 
+  @override
   bool get requiresDevice => true;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/test.dart b/packages/flutter_tools/lib/src/commands/test.dart
index c50cece..50d1e8e 100644
--- a/packages/flutter_tools/lib/src/commands/test.dart
+++ b/packages/flutter_tools/lib/src/commands/test.dart
@@ -23,8 +23,13 @@
     );
   }
 
+  @override
   String get name => 'test';
+
+  @override
   String get description => 'Run Flutter unit tests for the current project (Linux only).';
+
+  @override
   bool get requiresProjectRoot => false;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/trace.dart b/packages/flutter_tools/lib/src/commands/trace.dart
index 4387a60..fe6a54f 100644
--- a/packages/flutter_tools/lib/src/commands/trace.dart
+++ b/packages/flutter_tools/lib/src/commands/trace.dart
@@ -10,8 +10,13 @@
 import '../runner/flutter_command.dart';
 
 class TraceCommand extends FlutterCommand {
+  @override
   final String name = 'trace';
+
+  @override
   final String description = 'Start and stop tracing for a running Flutter app (Android only).';
+
+  @override
   final String usageFooter =
     '\`trace\` called with no arguments will automatically start tracing, delay a set amount of\n'
     'time (controlled by --duration), and stop tracing. To explicitly control tracing, call trace\n'
@@ -25,8 +30,10 @@
         defaultsTo: '10', abbr: 'd', help: 'Duration in seconds to trace.');
   }
 
+  @override
   bool get androidOnly => true;
 
+  @override
   bool get requiresDevice => true;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/update_packages.dart b/packages/flutter_tools/lib/src/commands/update_packages.dart
index e89c3da..4f08273 100644
--- a/packages/flutter_tools/lib/src/commands/update_packages.dart
+++ b/packages/flutter_tools/lib/src/commands/update_packages.dart
@@ -32,12 +32,17 @@
     );
   }
 
+  @override
   final String name = 'update-packages';
+
+  @override
   final String description = 'Update the packages inside the Flutter repo.';
 
+  @override
   bool get hidden => _hideCommand;
   final bool _hideCommand;
 
+  @override
   bool get requiresProjectRoot => false;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/upgrade.dart b/packages/flutter_tools/lib/src/commands/upgrade.dart
index fbe67ee..a4b327f 100644
--- a/packages/flutter_tools/lib/src/commands/upgrade.dart
+++ b/packages/flutter_tools/lib/src/commands/upgrade.dart
@@ -11,7 +11,10 @@
 import '../runner/version.dart';
 
 class UpgradeCommand extends FlutterCommand {
+  @override
   final String name = 'upgrade';
+
+  @override
   final String description = 'Upgrade your copy of Flutter.';
 
   @override
diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart
index feacb2b..1764dc1 100644
--- a/packages/flutter_tools/lib/src/device.dart
+++ b/packages/flutter_tools/lib/src/device.dart
@@ -111,6 +111,7 @@
     _timer = null;
   }
 
+  @override
   List<Device> get devices {
     if (_items == null)
       _items = new ItemListNotifier<Device>.from(pollingGetDevices());
@@ -131,6 +132,7 @@
 
   void dispose() => stopPolling();
 
+  @override
   String toString() => '$name device discovery';
 }
 
@@ -189,8 +191,10 @@
   /// Stop an app package on the current device.
   Future<bool> stopApp(ApplicationPackage app);
 
+  @override
   int get hashCode => id.hashCode;
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -199,6 +203,7 @@
     return id == other.id;
   }
 
+  @override
   String toString() => name;
 
   static void printDevices(List<Device> devices) {
@@ -225,6 +230,7 @@
   final int hostPort;
   final int devicePort;
 
+  @override
   String toString() => 'ForwardedPort HOST:$hostPort to DEVICE:$devicePort';
 }
 
@@ -266,8 +272,12 @@
   /// Completes when the log is finished.
   Future<int> get finished;
 
+  @override
   int get hashCode;
+
+  @override
   bool operator ==(dynamic other);
 
+  @override
   String toString() => name;
 }
diff --git a/packages/flutter_tools/lib/src/doctor.dart b/packages/flutter_tools/lib/src/doctor.dart
index cbd9b03..41c75cb 100644
--- a/packages/flutter_tools/lib/src/doctor.dart
+++ b/packages/flutter_tools/lib/src/doctor.dart
@@ -228,8 +228,10 @@
       : path.join(env['HOME'], '.atom');
   }
 
+  @override
   String get label => 'Atom development environment';
 
+  @override
   ValidationResult validate() {
     Validator atomValidator = new Validator(
       label,
@@ -263,5 +265,6 @@
     return atomValidator.validate();
   }
 
+  @override
   void diagnose() => validate().print();
 }
diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart
index 6f91575..c7f84d3 100644
--- a/packages/flutter_tools/lib/src/ios/devices.dart
+++ b/packages/flutter_tools/lib/src/ios/devices.dart
@@ -25,7 +25,10 @@
 class IOSDevices extends PollingDeviceDiscovery {
   IOSDevices() : super('IOSDevices');
 
+  @override
   bool get supportsPlatform => Platform.isMacOS;
+
+  @override
   List<Device> pollingGetDevices() => IOSDevice.getAttachedDevices();
 }
 
@@ -62,14 +65,17 @@
   String _pusherPath;
   String get pusherPath => _pusherPath;
 
+  @override
   final String name;
 
   _IOSDeviceLogReader _logReader;
 
   _IOSDevicePortForwarder _portForwarder;
 
+  @override
   bool get isLocalEmulator => false;
 
+  @override
   bool get supportsStartPaused => false;
 
   static List<IOSDevice> getAttachedDevices([IOSDevice mockIOS]) {
@@ -226,6 +232,7 @@
   @override
   TargetPlatform get platform => TargetPlatform.ios_arm;
 
+  @override
   DeviceLogReader get logReader {
     if (_logReader == null)
       _logReader = new _IOSDeviceLogReader(this);
@@ -233,6 +240,7 @@
     return _logReader;
   }
 
+  @override
   DevicePortForwarder get portForwarder {
     if (_portForwarder == null)
       _portForwarder = new _IOSDevicePortForwarder(this);
@@ -240,6 +248,7 @@
     return _portForwarder;
   }
 
+  @override
   void clearLogs() {
   }
 }
@@ -256,16 +265,21 @@
   StreamSubscription<String> _stdoutSubscription;
   StreamSubscription<String> _stderrSubscription;
 
+  @override
   Stream<String> get lines => _linesStreamController.stream;
 
+  @override
   String get name => device.name;
 
+  @override
   bool get isReading => _process != null;
 
+  @override
   Future<int> get finished {
     return _process != null ? _process.exitCode : new Future<int>.value(0);
   }
 
+  @override
   Future<Null> start() async {
     if (_process != null) {
       throw new StateError(
@@ -282,6 +296,7 @@
     _process.exitCode.then(_onExit);
   }
 
+  @override
   Future<Null> stop() async {
     if (_process == null) {
       throw new StateError(
@@ -313,8 +328,10 @@
     _linesStreamController.add(line);
   }
 
+  @override
   int get hashCode => name.hashCode;
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -329,12 +346,14 @@
 
   final IOSDevice device;
 
+  @override
   List<ForwardedPort> get forwardedPorts {
     final List<ForwardedPort> ports = <ForwardedPort>[];
     // TODO(chinmaygarde): Implement.
     return ports;
   }
 
+  @override
   Future<int> forward(int devicePort, {int hostPort: null}) async {
     if ((hostPort == null) || (hostPort == 0)) {
       // Auto select host port.
@@ -344,6 +363,7 @@
     return hostPort;
   }
 
+  @override
   Future<Null> unforward(ForwardedPort forwardedPort) async {
     // TODO(chinmaygarde): Implement.
   }
diff --git a/packages/flutter_tools/lib/src/ios/ios_workflow.dart b/packages/flutter_tools/lib/src/ios/ios_workflow.dart
index 67eda8d..10b1447 100644
--- a/packages/flutter_tools/lib/src/ios/ios_workflow.dart
+++ b/packages/flutter_tools/lib/src/ios/ios_workflow.dart
@@ -9,17 +9,22 @@
 import 'mac.dart';
 
 class IOSWorkflow extends Workflow {
+  @override
   String get label => 'iOS toolchain';
 
+  @override
   bool get appliesToHostPlatform => Platform.isMacOS;
 
   // We need xcode (+simctl) to list simulator devices, and idevice_id to list real devices.
+  @override
   bool get canListDevices => XCode.instance.isInstalledAndMeetsVersionCheck;
 
   // We need xcode to launch simulator devices, and ideviceinstaller and ios-deploy
   // for real devices.
+  @override
   bool get canLaunchDevices => XCode.instance.isInstalledAndMeetsVersionCheck;
 
+  @override
   ValidationResult validate() {
     Validator iosValidator = new Validator(
       label,
@@ -101,6 +106,7 @@
     return iosValidator.validate();
   }
 
+  @override
   void diagnose() => validate().print();
 
   bool get hasIdeviceId => exitsHappy(<String>['idevice_id', '-h']);
diff --git a/packages/flutter_tools/lib/src/ios/simulators.dart b/packages/flutter_tools/lib/src/ios/simulators.dart
index 7cf761d..9623642 100644
--- a/packages/flutter_tools/lib/src/ios/simulators.dart
+++ b/packages/flutter_tools/lib/src/ios/simulators.dart
@@ -27,7 +27,10 @@
 class IOSSimulators extends PollingDeviceDiscovery {
   IOSSimulators() : super('IOSSimulators');
 
+  @override
   bool get supportsPlatform => Platform.isMacOS;
+
+  @override
   List<Device> pollingGetDevices() => IOSSimulatorUtils.instance.getAttachedDevices();
 }
 
@@ -314,8 +317,10 @@
 class IOSSimulator extends Device {
   IOSSimulator(String id, { this.name }) : super(id);
 
+  @override
   final String name;
 
+  @override
   bool get isLocalEmulator => true;
 
   _IOSSimulatorLogReader _logReader;
@@ -536,6 +541,7 @@
   @override
   TargetPlatform get platform => TargetPlatform.ios_x64;
 
+  @override
   DeviceLogReader get logReader {
     if (_logReader == null)
       _logReader = new _IOSSimulatorLogReader(this);
@@ -543,6 +549,7 @@
     return _logReader;
   }
 
+  @override
   DevicePortForwarder get portForwarder {
     if (_portForwarder == null)
       _portForwarder = new _IOSSimulatorDevicePortForwarder(this);
@@ -550,6 +557,7 @@
     return _portForwarder;
   }
 
+  @override
   void clearLogs() {
     File logFile = new File(logFilePath);
     if (logFile.existsSync()) {
@@ -585,16 +593,21 @@
   StreamSubscription<String> _systemStdoutSubscription;
   StreamSubscription<String> _systemStderrSubscription;
 
+  @override
   Stream<String> get lines => _linesStreamController.stream;
 
+  @override
   String get name => device.name;
 
+  @override
   bool get isReading => (_deviceProcess != null) && (_systemProcess != null);
 
+  @override
   Future<int> get finished {
     return (_deviceProcess != null) ? _deviceProcess.exitCode : new Future<int>.value(0);
   }
 
+  @override
   Future<Null> start() async {
     if (isReading) {
       throw new StateError(
@@ -630,6 +643,7 @@
     _systemProcess.exitCode.then(_onSystemExit);
   }
 
+  @override
   Future<Null> stop() async {
     if (!isReading) {
       throw new StateError(
@@ -727,8 +741,10 @@
     _linesStreamController.add(filteredLine);
   }
 
+  @override
   int get hashCode => device.logFilePath.hashCode;
 
+  @override
   bool operator ==(dynamic other) {
     if (identical(this, other))
       return true;
@@ -789,10 +805,12 @@
 
   final List<ForwardedPort> _ports = <ForwardedPort>[];
 
+  @override
   List<ForwardedPort> get forwardedPorts {
     return _ports;
   }
 
+  @override
   Future<int> forward(int devicePort, {int hostPort: null}) async {
     if ((hostPort == null) || (hostPort == 0)) {
       hostPort = devicePort;
@@ -802,6 +820,7 @@
     return hostPort;
   }
 
+  @override
   Future<Null> unforward(ForwardedPort forwardedPort) async {
     _ports.remove(forwardedPort);
   }
diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart
index b763f8e..d20c7b2 100644
--- a/packages/flutter_tools/lib/src/runner/flutter_command.dart
+++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart
@@ -18,6 +18,7 @@
 typedef bool Validator();
 
 abstract class FlutterCommand extends Command {
+  @override
   FlutterCommandRunner get runner => super.runner;
 
   /// Whether this command needs to be run from the root of a project.
@@ -43,6 +44,7 @@
     applicationPackages ??= await ApplicationPackageStore.forConfigs(buildConfigurations);
   }
 
+  @override
   Future<int> run() {
     Stopwatch stopwatch = new Stopwatch()..start();
 
diff --git a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart
index b89c9ec..630f01d 100644
--- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart
+++ b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart
@@ -124,6 +124,7 @@
         defaultsTo: 'out/ios_sim_Release/');
   }
 
+  @override
   String get usageFooter {
     return 'Run "flutter -h -v" for verbose help output, including less commonly used options.\n'
            '\n'
@@ -165,6 +166,7 @@
     return '.';
   }
 
+  @override
   Future<dynamic> run(Iterable<String> args) {
     return super.run(args).then((dynamic result) {
       logger.flush();
@@ -172,6 +174,7 @@
     });
   }
 
+  @override
   Future<int> runCommand(ArgResults globalResults) {
     _globalResults = globalResults;
 
diff --git a/packages/flutter_tools/lib/src/test/flutter_platform.dart b/packages/flutter_tools/lib/src/test/flutter_platform.dart
index 61cbba0..f2db417 100644
--- a/packages/flutter_tools/lib/src/test/flutter_platform.dart
+++ b/packages/flutter_tools/lib/src/test/flutter_platform.dart
@@ -55,6 +55,7 @@
 }
 
 class FlutterPlatform extends PlatformPlugin {
+  @override
   StreamChannel<String> loadChannel(String mainPath, TestPlatform platform) {
     return StreamChannelCompleter.fromFuture(_startTest(mainPath));
   }
diff --git a/packages/flutter_tools/lib/src/zip.dart b/packages/flutter_tools/lib/src/zip.dart
index fb6c28e..f607ed9 100644
--- a/packages/flutter_tools/lib/src/zip.dart
+++ b/packages/flutter_tools/lib/src/zip.dart
@@ -48,6 +48,7 @@
 class _ArchiveZipBuilder extends ZipBuilder {
   _ArchiveZipBuilder() : super._();
 
+  @override
   void createZip(File outFile, Directory zipBuildDir) {
     Archive archive = new Archive();
 
@@ -69,6 +70,7 @@
 class _ZipToolBuilder extends ZipBuilder {
   _ZipToolBuilder() : super._();
 
+  @override
   void createZip(File outFile, Directory zipBuildDir) {
     if (outFile.existsSync())
       outFile.deleteSync();
diff --git a/packages/flutter_tools/test/src/context.dart b/packages/flutter_tools/test/src/context.dart
index db5283c..c06c0b7 100644
--- a/packages/flutter_tools/test/src/context.dart
+++ b/packages/flutter_tools/test/src/context.dart
@@ -69,16 +69,22 @@
 class MockDeviceManager implements DeviceManager {
   List<Device> devices = <Device>[];
 
+  @override
   String specifiedDeviceId;
+
+  @override
   bool get hasSpecifiedDeviceId => specifiedDeviceId != null;
 
+  @override
   Future<List<Device>> getAllConnectedDevices() => new Future<List<Device>>.value(devices);
 
+  @override
   Future<Device> getDeviceById(String deviceId) {
     Device device = devices.firstWhere((Device device) => device.id == deviceId, orElse: () => null);
     return new Future<Device>.value(device);
   }
 
+  @override
   Future<List<Device>> getDevices() async {
     if (specifiedDeviceId == null) {
       return getAllConnectedDevices();
@@ -93,6 +99,7 @@
 
 class MockDoctor extends Doctor {
   // True for testing.
+  @override
   bool get canLaunchAnything => true;
 }
 
diff --git a/packages/flutter_tools/test/src/mocks.dart b/packages/flutter_tools/test/src/mocks.dart
index 52db59e..dba59e9 100644
--- a/packages/flutter_tools/test/src/mocks.dart
+++ b/packages/flutter_tools/test/src/mocks.dart
@@ -36,21 +36,31 @@
 }
 
 class MockAndroidDevice extends Mock implements AndroidDevice {
+  @override
   TargetPlatform get platform => TargetPlatform.android_arm;
+
+  @override
   bool isSupported() => true;
 }
 
 class MockIOSDevice extends Mock implements IOSDevice {
+  @override
   TargetPlatform get platform => TargetPlatform.ios_arm;
+
+  @override
   bool isSupported() => true;
 }
 
 class MockIOSSimulator extends Mock implements IOSSimulator {
+  @override
   TargetPlatform get platform => TargetPlatform.ios_x64;
+
+  @override
   bool isSupported() => true;
 }
 
 class MockDeviceLogReader extends DeviceLogReader {
+  @override
   String get name => 'MockLogReader';
 
   final StreamController<String> _linesStreamController =
@@ -58,6 +68,7 @@
 
   final Completer<int> _finishedCompleter = new Completer<int>();
 
+  @override
   Stream<String> get lines => _linesStreamController.stream;
 
   void addLine(String line) {
@@ -66,19 +77,23 @@
 
   bool _started = false;
 
+  @override
   Future<Null> start() async {
     assert(!_started);
     _started = true;
   }
 
+  @override
   bool get isReading => _started;
 
+  @override
   Future<Null> stop() {
     assert(_started);
     _started = false;
     return new Future<Null>.value();
   }
 
+  @override
   Future<int> get finished => _finishedCompleter.future;
 }
 
diff --git a/packages/newton/lib/src/clamped_simulation.dart b/packages/newton/lib/src/clamped_simulation.dart
index b56abf7..daa172b 100644
--- a/packages/newton/lib/src/clamped_simulation.dart
+++ b/packages/newton/lib/src/clamped_simulation.dart
@@ -22,7 +22,12 @@
   final double dxMin;
   final double dxMax;
 
+  @override
   double x(double time) => simulation.x(time).clamp(xMin, xMax);
+
+  @override
   double dx(double time) => simulation.dx(time).clamp(dxMin, dxMax);
+
+  @override
   bool isDone(double time) => simulation.isDone(time);
 }
diff --git a/packages/newton/lib/src/friction_simulation.dart b/packages/newton/lib/src/friction_simulation.dart
index 9ab0af1..d663e66 100644
--- a/packages/newton/lib/src/friction_simulation.dart
+++ b/packages/newton/lib/src/friction_simulation.dart
@@ -40,8 +40,10 @@
     return math.pow(math.E, (startVelocity - endVelocity) / (startPosition - endPosition));
   }
 
+  @override
   double x(double time) => _x + _v * math.pow(_drag, time) / _dragLog - _v / _dragLog;
 
+  @override
   double dx(double time) => _v * math.pow(_drag, time);
 
   @override
@@ -60,10 +62,12 @@
   final double _minX;
   final double _maxX;
 
+  @override
   double x(double time) {
     return super.x(time).clamp(_minX, _maxX);
   }
 
+  @override
   bool isDone(double time) {
     return super.isDone(time) ||
       (x(time) - _minX).abs() < tolerance.distance ||
diff --git a/packages/newton/lib/src/gravity_simulation.dart b/packages/newton/lib/src/gravity_simulation.dart
index 7a59a18..a53ad93 100644
--- a/packages/newton/lib/src/gravity_simulation.dart
+++ b/packages/newton/lib/src/gravity_simulation.dart
@@ -17,8 +17,10 @@
         _v = velocity,
         _end = endDistance;
 
+  @override
   double x(double time) => _x + _v * time + 0.5 * _a * time * time;
 
+  @override
   double dx(double time) => _v + time * _a;
 
   @override
diff --git a/packages/newton/lib/src/scroll_simulation.dart b/packages/newton/lib/src/scroll_simulation.dart
index d73ae88..70efad2 100644
--- a/packages/newton/lib/src/scroll_simulation.dart
+++ b/packages/newton/lib/src/scroll_simulation.dart
@@ -68,6 +68,7 @@
     return false;
   }
 
+  @override
   String toString() {
     return 'ScrollSimulation(leadingExtent: $_leadingExtent, trailingExtent: $_trailingExtent)';
   }
diff --git a/packages/newton/lib/src/simulation_group.dart b/packages/newton/lib/src/simulation_group.dart
index fe36d73..83269be 100644
--- a/packages/newton/lib/src/simulation_group.dart
+++ b/packages/newton/lib/src/simulation_group.dart
@@ -25,11 +25,13 @@
   /// The result is whether the simulation was switched in this step.
   bool step(double time);
 
+  @override
   double x(double time) {
     _stepIfNecessary(time);
     return currentSimulation.x(time - currentIntervalOffset);
   }
 
+  @override
   double dx(double time) {
     _stepIfNecessary(time);
     return currentSimulation.dx(time - currentIntervalOffset);
diff --git a/packages/newton/lib/src/spring_simulation.dart b/packages/newton/lib/src/spring_simulation.dart
index 324a753..c205119 100644
--- a/packages/newton/lib/src/spring_simulation.dart
+++ b/packages/newton/lib/src/spring_simulation.dart
@@ -47,15 +47,18 @@
 
   final double _r, _c1, _c2;
 
+  @override
   double x(double time) {
     return (_c1 + _c2 * time) * math.pow(math.E, _r * time);
   }
 
+  @override
   double dx(double time) {
     final double power = math.pow(math.E, _r * time);
     return _r * (_c1 + _c2 * time) * power + _c2 * power;
   }
 
+  @override
   SpringType get type => SpringType.criticallyDamped;
 }
 
@@ -81,16 +84,19 @@
 
   final double _r1, _r2, _c1, _c2;
 
+  @override
   double x(double time) {
     return _c1 * math.pow(math.E, _r1 * time) +
            _c2 * math.pow(math.E, _r2 * time);
   }
 
+  @override
   double dx(double time) {
     return _c1 * _r1 * math.pow(math.E, _r1 * time) +
            _c2 * _r2 * math.pow(math.E, _r2 * time);
   }
 
+  @override
   SpringType get type => SpringType.overDamped;
 }
 
@@ -116,11 +122,13 @@
 
   final double _w, _r, _c1, _c2;
 
+  @override
   double x(double time) {
     return math.pow(math.E, _r * time) *
            (_c1 * math.cos(_w * time) + _c2 * math.sin(_w * time));
   }
 
+  @override
   double dx(double time) {
     final double power = math.pow(math.E, _r * time);
     final double cosine = math.cos(_w * time);
@@ -129,6 +137,7 @@
            _r * power * (_c2 *      sine   + _c1 *      cosine);
   }
 
+  @override
   SpringType get type => SpringType.underDamped;
 }
 
@@ -185,10 +194,13 @@
 
   SpringType get type => _solution.type;
 
+  @override
   double x(double time) => _endPosition + _solution.x(time);
 
+  @override
   double dx(double time) => _solution.dx(time);
 
+  @override
   bool isDone(double time) {
     return nearZero(_solution.x(time), tolerance.distance) &&
            nearZero(_solution.dx(time), tolerance.velocity);
@@ -205,5 +217,6 @@
     double velocity
   ) : super(desc, start, end, velocity);
 
+  @override
   double x(double time) => isDone(time) ? _endPosition : super.x(time);
 }
diff --git a/packages/newton/lib/src/tolerance.dart b/packages/newton/lib/src/tolerance.dart
index 5b764d8..5ff48c7 100644
--- a/packages/newton/lib/src/tolerance.dart
+++ b/packages/newton/lib/src/tolerance.dart
@@ -10,6 +10,7 @@
   const Tolerance({this.distance: epsilonDefault, this.time: epsilonDefault,
       this.velocity: epsilonDefault});
 
+  @override
   String toString() => 'Tolerance(distance: $distance, time=$time, velocity: $velocity)';
 }