anchor.diff:  }
   
   class TextFormatter extends CellFormatter {
  -  bool handleRequest(Event e) {
  +  bool _handleRequest(Event e) {
       var input = e.target;
       input.style.textAlign = 'left';
       return true;
  
positive.code: }
  
  class NumberFormatter extends CellFormatter {
    bool handleRequest(Event e) {
      var input = e.target;
      RegExp exp = new RegExp(r"^\s*[\d\.]+\s*$");
      if (!exp.hasMatch(input.value)) return false;
  
negative.code:   number.nextHandler = date;
    date.nextHandler = text;
  
    var c = new StreamController.broadcast();
    container.onChange.listen(c.add);
    container.onClick.listen(c.add);
  
    var subscription = c.stream.
      listen(number.processRequest);
  
    query('#no-numbers').onChange.listen((e){
      var el = e.target;
      if (el.checked) {
        subscription.cancel();
        subscription = c.stream.
          listen(date.processRequest);
      }
      else {
        subscription.cancel();
        subscription = c.stream.
          listen(number.processRequest);
      }
    });
  