anchor.diff:  
   part "color.dart";
   
  -class Complex {
  -  final num real;
  -  final num imag;
  -  const Complex(this.real, this.imag);
  -
  -  @override
  -  bool operator==(other) =>
  -    other is Complex && real==other.real && imag==other.imag;
  -
  -  @override
  -  int get hashCode => real.hashCode ^ imag.hashCode;
  -
  -  @override
  -  toString() => imag >= 0 ? "${real}+${imag}i" : "${real}${imag}i";
  -}
  -
  -/// The area of the complex plane to display in the view.
  -class Camera implements Cloneable {
  -  final Complex center;
  -  final num radius; // distance to shorter of width and height
  -  const Camera(this.center, this.radius);
  -
  -  Camera pan(Complex newCenter) => new Camera(newCenter, radius);
  -
  -  // Below 1.0 means zoom in, above means zoom out.
  -  Camera zoom(num scaleFactor) => new Camera(center, radius * scaleFactor);
  -
  -  @override
  -  clone() => this;
  -}
  -
  -const defaultCamera = const Camera(const Complex(0, 0), 2.0);
  -
  -typedef CameraSaveHandler(Camera next);
  +//
  +// Views
  +//
  +
  +typedef SaveCameraHandler(Camera next);
   
   class MandelbrotApp extends AnimatedTag {
     final Camera startCamera;
  -  final CameraSaveHandler save;
  -
  -  const MandelbrotApp({this.startCamera: defaultCamera, this.save});
  +  final SaveCameraHandler save;
  +
  +  const MandelbrotApp({this.startCamera: Camera.start, this.save});
   
     @override
     Place start() => new Place(startCamera);
  
positive.code:   return maxIterations;
  }
  
  Camera loadCamera() {
    var params = <String, double>{};
    if (window.location.hash.isNotEmpty) {
  
negative.code:   if (params.containsKey("x") && params.containsKey("y") && params.containsKey("r")) {
     return new Camera(new Complex(params["x"], params["y"]), params["r"]);
    } else {
      return Camera.start;
    }
  }
  
  