anchor.diff:    print('  ' + path.absolute(path.join(directory, underscoreName + '.dart')));
     print('  ' + path.absolute(path.join(directory, underscoreName + '.html')));
   }
  +
  +/**
  + * HTML element to DOM type mapping. Source:
  + * <http://dev.w3.org/html5/spec/section-index.html#element-interfaces>
  + *
  + * The 'HTML' prefix has been removed to match `dart:html`, as per:
  + * <http://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/lib/html/scripts/htmlrenamer.py>
  + * It does not appear any element types are being renamed other than the prefix.
  + * However there does not appear to be the last subtypes for the following tags:
  + * command, data, dialog, td, th, and time.
  + */
  +const _htmlElementNames = const {
  +  'a': 'AnchorElement',
  +  'abbr': 'Element',
  +  'address': 'Element',
  +  'area': 'AreaElement',
  +  'article': 'Element',
  +  'aside': 'Element',
  +  'audio': 'AudioElement',
  +  'b': 'Element',
  +  'base': 'BaseElement',
  +  'bdi': 'Element',
  +  'bdo': 'Element',
  +  'blockquote': 'QuoteElement',
  +  'body': 'BodyElement',
  +  'br': 'BRElement',
  +  'button': 'ButtonElement',
  +  'canvas': 'CanvasElement',
  +  'caption': 'TableCaptionElement',
  +  'cite': 'Element',
  +  'code': 'Element',
  +  'col': 'TableColElement',
  +  'colgroup': 'TableColElement',
  +  'command': 'Element', // see doc comment, was: 'CommandElement'
  +  'data': 'Element', // see doc comment, was: 'DataElement'
  +  'datalist': 'DataListElement',
  +  'dd': 'Element',
  +  'del': 'ModElement',
  +  'details': 'DetailsElement',
  +  'dfn': 'Element',
  +  'dialog': 'Element', // see doc comment, was: 'DialogElement'
  +  'div': 'DivElement',
  +  'dl': 'DListElement',
  +  'dt': 'Element',
  +  'em': 'Element',
  +  'embed': 'EmbedElement',
  +  'fieldset': 'FieldSetElement',
  +  'figcaption': 'Element',
  +  'figure': 'Element',
  +  'footer': 'Element',
  +  'form': 'FormElement',
  +  'h1': 'HeadingElement',
  +  'h2': 'HeadingElement',
  +  'h3': 'HeadingElement',
  +  'h4': 'HeadingElement',
  +  'h5': 'HeadingElement',
  +  'h6': 'HeadingElement',
  +  'head': 'HeadElement',
  +  'header': 'Element',
  +  'hgroup': 'Element',
  +  'hr': 'HRElement',
  +  'html': 'HtmlElement',
  +  'i': 'Element',
  +  'iframe': 'IFrameElement',
  +  'img': 'ImageElement',
  +  'input': 'InputElement',
  +  'ins': 'ModElement',
  +  'kbd': 'Element',
  +  'keygen': 'KeygenElement',
  +  'label': 'LabelElement',
  +  'legend': 'LegendElement',
  +  'li': 'LIElement',
  +  'link': 'LinkElement',
  +  'map': 'MapElement',
  +  'mark': 'Element',
  +  'menu': 'MenuElement',
  +  'meta': 'MetaElement',
  +  'meter': 'MeterElement',
  +  'nav': 'Element',
  +  'noscript': 'Element',
  +  'object': 'ObjectElement',
  +  'ol': 'OListElement',
  +  'optgroup': 'OptGroupElement',
  +  'option': 'OptionElement',
  +  'output': 'OutputElement',
  +  'p': 'ParagraphElement',
  +  'param': 'ParamElement',
  +  'pre': 'PreElement',
  +  'progress': 'ProgressElement',
  +  'q': 'QuoteElement',
  +  'rp': 'Element',
  +  'rt': 'Element',
  +  'ruby': 'Element',
  +  's': 'Element',
  +  'samp': 'Element',
  +  'script': 'ScriptElement',
  +  'section': 'Element',
  +  'select': 'SelectElement',
  +  'small': 'Element',
  +  'source': 'SourceElement',
  +  'span': 'SpanElement',
  +  'strong': 'Element',
  +  'style': 'StyleElement',
  +  'sub': 'Element',
  +  'summary': 'Element',
  +  'sup': 'Element',
  +  'table': 'TableElement',
  +  'tbody': 'TableSectionElement',
  +  'td': 'TableCellElement', // see doc comment, was: 'TableDataCellElement'
  +  'template': 'Element', // should be 'TemplateElement', but it is not yet
  +                         // in dart:html
  +  'textarea': 'TextAreaElement',
  +  'tfoot': 'TableSectionElement',
  +  'th': 'TableCellElement', // see doc comment, was: 'TableHeaderCellElement'
  +  'thead': 'TableSectionElement',
  +  'time': 'Element', // see doc comment, was: 'TimeElement'
  +  'title': 'TitleElement',
  +  'tr': 'TableRowElement',
  +  'track': 'TrackElement',
  +  'u': 'Element',
  +  'ul': 'UListElement',
  +  'var': 'Element',
  +  'video': 'VideoElement',
  +  'wbr': 'Element',
  +};
  
positive.code:   new File(htmlFile).writeAsStringSync(html);
  
    String dart = '''
  import 'package:polymer/polymer.dart';
  
  /**
   * A Polymer $element element.
   */
  @CustomTag('$element')
  class $capitalizedName extends PolymerElement {
  
    /// Constructor used to create instance of ${capitalizedName}.
    ${capitalizedName}.created() : super.created() {
    }
  
    /*
  
negative.code:       distanceToPackageRoot--;
      }
    }
    
    var superElement = options['extends'];
    
    if ((superElement == null ) || 
        _isDOMElement(superElement) ||
        _isPolymerElement(superElement)) {
      try {
        _createBoilerPlate(element, options['extends'], outputDir, 
            distanceToPackageRoot);
      } on Exception catch(e, t) {
        print('Error creating files in $outputDir');
        print('$e $t');
        exitCode = 1;
        return;
      }
    } else {
      if (superElement.contains('-')) {
        print('Extending invalid element "$superElement". Polymer elements '
            'may contain only lowercase letters at least one hyphen.');
      } else {
        print('Extending invalid element "$superElement". $superElement is not '
            ' a builtin DOM type.');
      }
      exitCode = 1;
      return;
    }
  