anchor.diff:      }
   }
   
  +class markdown_image extends markdown_node {
  +    String link;
  +    String alt_text;
  +    String title;
  +    markdown_image(String _link, String _alt_text, String _title) : super() {
  +        link = _link;
  +        alt_text = _alt_text;
  +        title = _title;
  +    }
  +
  +    String generate_html() {
  +        return "<img src=\"${link}\" alt=\"${alt_text}\" title=\"${title}\" />";
  +    }
  +}
  +
   /** 
    * Convert markdown to HTML
    * 
  
positive.code: }
  
  main_wrapped() {
      String inp = "A First Level Header\n====================\n\nA Second Level Header\n---------------------\n\nNow is the time for all good men to come to\nthe aid of their `country`. This is just a\nre_gu_lar paragraph.\n\nThe quick brown fox jumped over the lazy\ndog's back.\n\n### Header 3\n\n> This is a blockquote.\n> \n> This is the second paragraph in the blockquote.\n>\n> ## This is an H2 in a blockquote\n\n    code block\n    second line code block\n- this is\n- elements in\n- a list\n[Link Text](http://google.com)";
      print(markdown_to_html(inp));
  }
  
negative.code:     RegExp backslash_asterix = new RegExp(r"\\(\*)");
      RegExp backslash_underscore = new RegExp(r"\\(_)");
  
      RegExp link = new RegExp(r"(?!!)\[([^\]]+)\]\(([^)]+)\)");
      RegExp image = new RegExp(r"!\[([^\]]+)\]\(([^) ]+) ?([^)]*)\)");
      
      regular_expressions.add(new markdown_regex(single_asterix, (Match found) {
                  return new markdown_emphasis(found.group(1));
  