anchor.diff:    RenderView get renderView => _renderView;
     RenderView _renderView;
   
  -  ViewConstraints _createConstraints() {
  -    return new ViewConstraints(size: new Size(ui.view.width, ui.view.height));
  -  }
  +  final List<MetricListener> _metricListeners = new List<MetricListener>();
  +
  +  /// Calls listener for every event that isn't localized to a given view coordinate
  +  void addMetricListener(MetricListener listener) => _metricListeners.add(listener);
  +
  +  /// Stops calling listener for every event that isn't localized to a given view coordinate
  +  bool removeMetricListener(MetricListener listener) => _metricListeners.remove(listener);
  +
     void _handleMetricsChanged() {
  -    _renderView.rootConstraints = _createConstraints();
  +    Size size = new Size(ui.view.width, ui.view.height);
  +    _renderView.rootConstraints = new ViewConstraints(size: size);
  +    for (MetricListener listener in _metricListeners)
  +      listener(size);
     }
   
     /// Pump the rendering pipeline to generate a frame for the given time stamp
  
positive.code:   }
    return weight;
  }
  
  typedef void EventListener(InputEvent event);
  
  /// A hit test entry used by [FlutterBinding]
  class BindingHitTestEntry extends HitTestEntry {
  
negative.code: import 'hit_test.dart';
  import 'object.dart';
  import 'view.dart';
  
  typedef void EventListener(InputEvent event);
  typedef void MetricListener(Size size);
  
  int _hammingWeight(int value) {
    if (value == 0)
  