anchor.diff:  
     InferredInfoNode({this.name: "", this.description, this.type});
   
  -  void emitHtml(ProgramInfo programInfo, StringSink buffer) {
  -    buffer.write('\n');
  +  void emitHtml(ProgramInfo programInfo, StringBuffer buffer,
  +      [String indentation = '']) {
  +    buffer.write(indentation);
       buffer.write(
           div('${span("Inferred " + description, cls: "kind")} '
               '${span(esc(name), cls: "name")} '
               '${span(esc(type), cls: "type")} ',
               cls: "attr"));
  +    buffer.write('\n');
     }
   }
   
  
positive.code: 
    int get size;
  
    void emitHtml(ProgramInfo programInfo, StringSink buffer);
  }
  
  /// An [ElementNode] holds information about an [Element]
  
negative.code:       var containers = document.getElementsByClassName('container');
        for (var i = 0; i < containers.length; i++) {
          var container = containers[i];
          container.querySelector('.details').addEventListener('click',
            toggler(container.querySelector('.contents')), false);
          container.querySelector('.contents').hidden = true;
        }
  
        function sortBySize() {
          var toSort = document.querySelectorAll('.contents');
          for (var i = 0; i < toSort.length; ++i) {
            sortNodes(toSort[i], function(a, b) {
              if (a[1] !== b[1]) {
                return a[1] > b[1] ? -1 : 1;
              }
              return a[2] === b[2] ? 0 : a[2] > b[2] ? 1 : -1;
            });
          }
        }
  
        function findSize(node) {
          var size = 0;
          var details = node.querySelector('.details');
          if (details) {
            var sizeElement = details.querySelector('.size');
            if (sizeElement) {
              size = parseInt(sizeElement.textContent);
            } else {
              // For classes, sum up the contents for sorting purposes.
              var kind = details.querySelector('.kind');
              if (kind && kind.textContent === 'class') {
                var contents = node.querySelector('.contents');
                if (contents) {
                  var child = contents.firstElementChild;
                  while (child) {
                    size += findSize(child);
                    child = child.nextElementSibling;
                  }
                }
              }
            }
          }
          return size;
        }
  
        function findName(node) {
          var name = '';
          var nameNode = node.querySelector('.name');
          if (nameNode) {
            return nameNode.textContent;
          }
          return node.textContent;
        }
        function sortNodes(node, fn) {
          var items = [];
          var child = node.firstElementChild;
          while (child) {
            items.push([child, findSize(child), findName(child)]);
            child = child.nextElementSibling;
          }
          items.sort(fn);
          for (var i = 0; i < items.length; ++i) {
            node.appendChild(items[i][0]);
          }
        }
        document.querySelector('.sort_by_size').addEventListener('click',
            function() {
              sortBySize();
            }, false);
      </script>
    </body>
  </html>""");
  