diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml
index e30d0ee..5d2a48b 100644
--- a/nbproject/build-impl.xml
+++ b/nbproject/build-impl.xml
@@ -20,10 +20,10 @@
 
         -->
 <project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="Prettify-impl">
-    <fail message="Please build using Ant 1.7.1 or higher.">
+    <fail message="Please build using Ant 1.8.0 or higher.">
         <condition>
             <not>
-                <antversion atleast="1.7.1"/>
+                <antversion atleast="1.8.0"/>
             </not>
         </condition>
     </fail>
@@ -198,6 +198,7 @@
         <property name="javac.fork" value="${jdkBug6558476}"/>
         <property name="jar.index" value="false"/>
         <property name="jar.index.metainf" value="${jar.index}"/>
+        <property name="copylibs.rebase" value="true"/>
         <available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
     </target>
     <target name="-post-init">
@@ -384,6 +385,7 @@
                 <property environment="env"/>
                 <resolve name="profiler.current.path" value="${profiler.info.pathvar}"/>
                 <java classname="@{classname}" dir="${profiler.info.dir}" fork="true" jvm="${profiler.info.jvm}">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
                     <jvmarg value="${profiler.info.jvmargs.agent}"/>
                     <jvmarg line="${profiler.info.jvmargs}"/>
                     <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
@@ -514,7 +516,7 @@
                     </chainedmapper>
                 </pathconvert>
                 <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
-                <copylibs compress="${jar.compress}" index="${jar.index}" indexMetaInf="${jar.index.metainf}" jarfile="${dist.jar}" manifest="@{manifest}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+                <copylibs compress="${jar.compress}" index="${jar.index}" indexMetaInf="${jar.index.metainf}" jarfile="${dist.jar}" manifest="@{manifest}" rebase="${copylibs.rebase}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
                     <fileset dir="${build.classes.dir}"/>
                     <manifest>
                         <attribute name="Class-Path" value="${jar.classpath}"/>
@@ -839,6 +841,14 @@
             -->
     <target depends="init" if="have.sources" name="-javadoc-build">
         <mkdir dir="${dist.javadoc.dir}"/>
+        <condition else="" property="javadoc.endorsed.classpath.cmd.line.arg" value="-J${endorsed.classpath.cmd.line.arg}">
+            <and>
+                <isset property="endorsed.classpath.cmd.line.arg"/>
+                <not>
+                    <equals arg1="${endorsed.classpath.cmd.line.arg}" arg2=""/>
+                </not>
+            </and>
+        </condition>
         <javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
             <classpath>
                 <path path="${javac.classpath}"/>
@@ -850,6 +860,7 @@
                 <include name="**/*.java"/>
                 <exclude name="*.java"/>
             </fileset>
+            <arg line="${javadoc.endorsed.classpath.cmd.line.arg}"/>
         </javadoc>
         <copy todir="${dist.javadoc.dir}">
             <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties
index cde3213..b191729 100644
--- a/nbproject/genfiles.properties
+++ b/nbproject/genfiles.properties
@@ -4,5 +4,5 @@
 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
 nbproject/build-impl.xml.data.CRC32=4d2699c2
-nbproject/build-impl.xml.script.CRC32=95d36cae
-nbproject/build-impl.xml.stylesheet.CRC32=0ae3a408@1.44.1.45
+nbproject/build-impl.xml.script.CRC32=8f94e7f0
+nbproject/build-impl.xml.stylesheet.CRC32=fcddb364@1.50.1.46
diff --git a/nbproject/project.properties b/nbproject/project.properties
index c048c89..eb942db 100644
--- a/nbproject/project.properties
+++ b/nbproject/project.properties
@@ -1,5 +1,6 @@
 annotation.processing.enabled=true
 annotation.processing.enabled.in.editor=false
+annotation.processing.processors.list=
 annotation.processing.run.all.processors=true
 annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
 application.title=Java Prettify
diff --git a/src/prettify/lang/LangCss.java b/src/prettify/lang/LangCss.java
index 71f1d32..f644f2f 100644
--- a/src/prettify/lang/LangCss.java
+++ b/src/prettify/lang/LangCss.java
@@ -49,7 +49,7 @@
     // Quoted strings.  <string1> and <string2>
     _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_STRING, Pattern.compile("^\\\"(?:[^\n\r\f\\\\\\\"]|\\\\(?:\r\n?|\n|\f)|\\\\[\\s\\S])*\\\""), null}));
     _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_STRING, Pattern.compile("^\\'(?:[^\n\r\f\\\\\\']|\\\\(?:\r\n?|\n|\f)|\\\\[\\s\\S])*\\'"), null}));
-    _fallthroughStylePatterns.add(Arrays.asList(new Object[]{"lang-css-str", Pattern.compile("^url\\(([^\\)\\\"\\']*)\\)", Pattern.CASE_INSENSITIVE)}));
+    _fallthroughStylePatterns.add(Arrays.asList(new Object[]{"lang-css-str", Pattern.compile("^url\\(([^\\)\\\"\\']+)\\)", Pattern.CASE_INSENSITIVE)}));
     _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_KEYWORD, Pattern.compile("^(?:url|rgb|\\!important|@import|@page|@media|@charset|inherit)(?=[^\\-\\w]|$)", Pattern.CASE_INSENSITIVE), null}));
     // A property name -- an identifier followed by a colon.
     _fallthroughStylePatterns.add(Arrays.asList(new Object[]{"lang-css-kw", Pattern.compile("^(-?(?:[_a-z]|(?:\\\\[0-9a-f]+ ?))(?:[_a-z0-9\\-]|\\\\(?:\\\\[0-9a-f]+ ?))*)\\s*:", Pattern.CASE_INSENSITIVE)}));
diff --git a/src/prettify/lang/LangLisp.java b/src/prettify/lang/LangLisp.java
index 9e7721e..b7617a1 100644
--- a/src/prettify/lang/LangLisp.java
+++ b/src/prettify/lang/LangLisp.java
@@ -102,6 +102,6 @@
   }
 
   public static List<String> getFileExtensions() {
-    return Arrays.asList(new String[]{"cl", "el", "lisp", "lsp", "scm"});
+    return Arrays.asList(new String[]{"cl", "el", "lisp", "lsp", "scm", "ss", "rkt"});
   }
 }
diff --git a/src/prettify/lang/LangSql.java b/src/prettify/lang/LangSql.java
index 2610fc8..83def8c 100644
--- a/src/prettify/lang/LangSql.java
+++ b/src/prettify/lang/LangSql.java
@@ -34,8 +34,9 @@
  *
  *
  * http://savage.net.au/SQL/sql-99.bnf.html is the basis for the grammar, and
- * http://msdn.microsoft.com/en-us/library/aa238507(SQL.80).aspx as the basis
- * for the keyword list.
+ * http://msdn.microsoft.com/en-us/library/aa238507(SQL.80).aspx and
+ * http://meta.stackoverflow.com/q/92352/137403 as the bases for the keyword
+ * list.
  *
  * @author mikesamuel@gmail.com
  */
@@ -52,7 +53,7 @@
     // A comment is either a line comment that starts with two dashes, or
     // two dashes preceding a long bracketed block.
     _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_COMMENT, Pattern.compile("^(?:--[^\\r\\n]*|\\/\\*[\\s\\S]*?(?:\\*\\/|$))")}));
-    _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_KEYWORD, Pattern.compile("^(?:ADD|ALL|ALTER|AND|ANY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|MATCH|MERGE|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|USING|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\\w-]|$)", Pattern.CASE_INSENSITIVE), null}));
+    _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_KEYWORD, Pattern.compile("^(?:ADD|ALL|ALTER|AND|ANY|APPLY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOLLOWING|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|MATCH|MERGE|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECEDING|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|ROWS?|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNBOUNDED|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|USING|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\\w-]|$)", Pattern.CASE_INSENSITIVE), null}));
     // A number is a hex integer literal, a decimal real literal, or in
     // scientific notation.
     _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_LITERAL, Pattern.compile("^[+-]?(?:0x[\\da-f]+|(?:(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+\\-]?\\d+)?))", Pattern.CASE_INSENSITIVE)}));
diff --git a/src/prettify/lang/LangVb.java b/src/prettify/lang/LangVb.java
index ee89311..99c96ed 100644
--- a/src/prettify/lang/LangVb.java
+++ b/src/prettify/lang/LangVb.java
@@ -50,7 +50,10 @@
     // A single character can be suffixed with C.
     _shortcutStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_STRING, Pattern.compile("^(?:[\\\"\\u201C\\u201D](?:[^\\\"\\u201C\\u201D]|[\\\"\\u201C\\u201D]{2})(?:[\\\"\\u201C\\u201D]c|$)|[\\\"\\u201C\\u201D](?:[^\\\"\\u201C\\u201D]|[\\\"\\u201C\\u201D]{2})*(?:[\\\"\\u201C\\u201D]|$))", Pattern.CASE_INSENSITIVE), null, "\"\u201C\u201D"}));
     // A comment starts with a single quote and runs until the end of the line.
-    _shortcutStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_COMMENT, Pattern.compile("^[\\'\\u2018\\u2019][^\\r\\n\\u2028\\u2029]*"), null, "'\u2018\u2019"}));
+    // VB6 apparently allows _ as an escape sequence for newlines though
+    // this is not a documented feature of VB.net.
+    // http://meta.stackoverflow.com/q/121497/137403
+    _shortcutStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_COMMENT, Pattern.compile("^[\\'\\u2018\\u2019](?:_(?:\r\n?|[^\r]?)|[^\\r\\n_\\u2028\\u2029])*"), null, "'\u2018\u2019"}));
     _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_KEYWORD, Pattern.compile("^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\\b", Pattern.CASE_INSENSITIVE), null}));
     // A second comment form
     _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_COMMENT, Pattern.compile("^REM[^\\r\\n\\u2028\\u2029]*", Pattern.CASE_INSENSITIVE)}));
diff --git a/src/prettify/parser/Prettify.java b/src/prettify/parser/Prettify.java
index f81c2cf..ab6714e 100644
--- a/src/prettify/parser/Prettify.java
+++ b/src/prettify/parser/Prettify.java
@@ -104,12 +104,13 @@
           + "transient";
   public static final String CSHARP_KEYWORDS = JAVA_KEYWORDS + ","
           + "as,base,by,checked,decimal,delegate,descending,dynamic,event,"
-          + "fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,"
-          + "object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,"
-          + "stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var";
+          + "fixed,foreach,from,group,implicit,in,interface,internal,into,is,let,"
+          + "lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,"
+          + "sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,"
+          + "var,virtual,where";
   public static final String COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally,"
           + "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,"
-          + "true,try,unless,until,when,while,yes";
+          + "throw,true,try,unless,until,when,while,yes";
   public static final String JSCRIPT_KEYWORDS = COMMON_KEYWORDS + ","
           + "debugger,eval,export,function,get,null,set,undefined,var,with,"
           + "Infinity,NaN";
@@ -621,8 +622,9 @@
                     null,
                     "#"}));
         }
+        // #include <stdio.h>
         fallthroughStylePatterns.add(Arrays.asList(new Object[]{PR_STRING,
-                  Pattern.compile("^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h|[a-z]\\w*)>"),
+                  Pattern.compile("^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h(?:h|pp|\\+\\+)?|[a-z]\\w*)>"),
                   null}));
       } else {
         shortcutStylePatterns.add(Arrays.asList(new Object[]{PR_COMMENT,
diff --git a/test/prettify/PrettifyTest/result/css.txt b/test/prettify/PrettifyTest/result/css.txt
index e61e3ff..583fa07 100644
--- a/test/prettify/PrettifyTest/result/css.txt
+++ b/test/prettify/PrettifyTest/result/css.txt
@@ -16,4 +16,6 @@
   * regardless of case.
   */`END`PLN
 blink `END`PUN{`END`PLN `END`KWDtext-decoration`END`PUN:`END`PLN BLINK `END`KWD!IMPORTANT`END`PUN;`END`PLN `END`KWDfont-weight`END`PUN:`END`PLN bolder `END`PUN}`END`PLN
+`END`COM/* Empty url() was causing infinite recursion */`END`PLN
+a `END`PUN{`END`PLN `END`KWDbackground-image`END`PUN:`END`PLN `END`KWDurl`END`PUN();`END`PLN `END`PUN}`END`PLN
 `END`COM--&gt;`END
\ No newline at end of file
diff --git a/test/prettify/PrettifyTest/result/issue27.txt b/test/prettify/PrettifyTest/result/issue27.txt
index 49af8d5..49d93ae 100644
--- a/test/prettify/PrettifyTest/result/issue27.txt
+++ b/test/prettify/PrettifyTest/result/issue27.txt
@@ -1,43 +1,46 @@
-`KWDImports`END`PLN System
-
-`END`KWDClass`END`PLN [class]
-    `END`KWDShared`END`PLN `END`KWDSub`END`PLN [shared]`END`PUN(`END`KWDByVal`END`PLN [boolean] `END`KWDAs`END`PLN `END`KWDBoolean`END`PUN)`END`PLN
-        `END`KWDIf`END`PLN [boolean] `END`KWDThen`END`PLN
-            Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR"true"`END`PUN)`END`PLN
-        `END`KWDElse`END`PLN
-            Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR"false"`END`PUN)`END`PLN
-        `END`KWDEnd`END`PLN `END`KWDIf`END`PLN
-    `END`KWDEnd`END`PLN `END`KWDSub`END`PLN
-`END`KWDEnd`END`PLN `END`KWDClass`END`PLN
-
-`END`KWDModule`END`PLN [module]
-    `END`KWDSub`END`PLN Main`END`PUN()`END`PLN
-        [class]`END`PUN.`END`PLN[shared]`END`PUN(`END`LITTrue`END`PUN)`END`PLN
-
-        `END`COM' This prints out: ".`END`PLN
-        Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR""""`END`PUN)`END`PLN
-
-        `END`COM' This prints out: a"b.`END`PLN
-        Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR"a""b"`END`PUN)`END`PLN
-
-        `END`COM' This prints out: a.`END`PLN
-        Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR"a"c`END`PUN)`END`PLN
-
-        `END`COM' This prints out: ".`END`PLN
-        Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR""""c`END`PUN)`END`PLN
-    `END`KWDEnd`END`PLN `END`KWDSub`END`PLN
-`END`KWDEnd`END`PLN `END`KWDModule`END`PLN
-
-`END`KWDDim`END`PLN d `END`KWDAs`END`PLN `END`KWDDate`END`PLN
-d `END`PUN=`END`PLN `END`LIT# 8/23/1970 3:45:39AM #`END`PLN
-d `END`PUN=`END`PLN `END`LIT# 8/23/1970 #`END`PLN
-d `END`PUN=`END`PLN `END`LIT# 3:45:39AM #`END`PLN
-d `END`PUN=`END`PLN `END`LIT# 3:45:39 #`END`PLN
-d `END`PUN=`END`PLN `END`LIT# 13:45:39 #`END`PLN
-d `END`PUN=`END`PLN `END`LIT# 13:45:39PM #`END`PLN
-
-`END`KWDDim`END`PLN n `END`KWDAs`END`PLN Float
-n `END`PUN=`END`PLN `END`PUN(`END`LIT0.0`END`PUN,`END`PLN `END`LIT.99F`END`PUN,`END`PLN `END`LIT1.0E-2D`END`PUN,`END`PLN `END`LIT1.0E+3D`END`PUN,`END`PLN `END`LIT.5E4`END`PUN,`END`PLN `END`LIT1E3R`END`PUN,`END`PLN `END`LIT4D`END`PUN)`END`PLN
-
-`END`KWDDim`END`PLN i `END`KWDAs`END`PLN `END`KWDInteger`END`PLN
+`KWDImports`END`PLN System
+
+`END`KWDClass`END`PLN [class]
+    `END`KWDShared`END`PLN `END`KWDSub`END`PLN [shared]`END`PUN(`END`KWDByVal`END`PLN [boolean] `END`KWDAs`END`PLN `END`KWDBoolean`END`PUN)`END`PLN
+        `END`KWDIf`END`PLN [boolean] `END`KWDThen`END`PLN
+            Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR"true"`END`PUN)`END`PLN
+        `END`KWDElse`END`PLN
+            Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR"false"`END`PUN)`END`PLN
+        `END`KWDEnd`END`PLN `END`KWDIf`END`PLN
+    `END`KWDEnd`END`PLN `END`KWDSub`END`PLN
+`END`KWDEnd`END`PLN `END`KWDClass`END`PLN
+
+`END`COM' Comment`END`PLN
+`END`COM‘ Second Line comment with a smart quote _
+  continued line using VB6 syntax.`END`PLN
+`END`KWDModule`END`PLN [module]
+    `END`KWDSub`END`PLN Main`END`PUN()`END`PLN
+        [class]`END`PUN.`END`PLN[shared]`END`PUN(`END`LITTrue`END`PUN)`END`PLN
+
+        `END`COM' This prints out: ".`END`PLN
+        Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR""""`END`PUN)`END`PLN
+
+        `END`COM' This prints out: a"b.`END`PLN
+        Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR"a""b"`END`PUN)`END`PLN
+
+        `END`COM' This prints out: a.`END`PLN
+        Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR"a"c`END`PUN)`END`PLN
+
+        `END`COM' This prints out: ".`END`PLN
+        Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR""""c`END`PUN)`END`PLN
+    `END`KWDEnd`END`PLN `END`KWDSub`END`PLN
+`END`KWDEnd`END`PLN `END`KWDModule`END`PLN
+
+`END`KWDDim`END`PLN d `END`KWDAs`END`PLN `END`KWDDate`END`PLN
+d `END`PUN=`END`PLN `END`LIT# 8/23/1970 3:45:39AM #`END`PLN
+d `END`PUN=`END`PLN `END`LIT# 8/23/1970 #`END`PLN
+d `END`PUN=`END`PLN `END`LIT# 3:45:39AM #`END`PLN
+d `END`PUN=`END`PLN `END`LIT# 3:45:39 #`END`PLN
+d `END`PUN=`END`PLN `END`LIT# 13:45:39 #`END`PLN
+d `END`PUN=`END`PLN `END`LIT# 13:45:39PM #`END`PLN
+
+`END`KWDDim`END`PLN n `END`KWDAs`END`PLN Float
+n `END`PUN=`END`PLN `END`PUN(`END`LIT0.0`END`PUN,`END`PLN `END`LIT.99F`END`PUN,`END`PLN `END`LIT1.0E-2D`END`PUN,`END`PLN `END`LIT1.0E+3D`END`PUN,`END`PLN `END`LIT.5E4`END`PUN,`END`PLN `END`LIT1E3R`END`PUN,`END`PLN `END`LIT4D`END`PUN)`END`PLN
+
+`END`KWDDim`END`PLN i `END`KWDAs`END`PLN `END`KWDInteger`END`PLN
 i `END`PUN=`END`PLN `END`PUN(`END`LIT0`END`PUN,`END`PLN `END`LIT123`END`PUN,`END`PLN `END`LIT45L`END`PUN,`END`PLN `END`LIT&amp;HA0I`END`PUN,`END`PLN `END`LIT&amp;O177S`END`PUN)`END
\ No newline at end of file
diff --git a/test/prettify/PrettifyTest/source/css.txt b/test/prettify/PrettifyTest/source/css.txt
index be19d0b..c0dab2c 100644
--- a/test/prettify/PrettifyTest/source/css.txt
+++ b/test/prettify/PrettifyTest/source/css.txt
@@ -16,4 +16,6 @@
   * regardless of case.
   */
 blink { text-decoration: BLINK !IMPORTANT; font-weight: bolder }
+/* Empty url() was causing infinite recursion */
+a { background-image: url(); }
 -->
\ No newline at end of file
diff --git a/test/prettify/PrettifyTest/source/issue27.txt b/test/prettify/PrettifyTest/source/issue27.txt
index 5e251e2..0045f4a 100644
--- a/test/prettify/PrettifyTest/source/issue27.txt
+++ b/test/prettify/PrettifyTest/source/issue27.txt
@@ -1,43 +1,46 @@
-Imports System
-
-Class [class]
-    Shared Sub [shared](ByVal [boolean] As Boolean)
-        If [boolean] Then
-            Console.WriteLine("true")
-        Else
-            Console.WriteLine("false")
-        End If
-    End Sub
-End Class
-
-Module [module]
-    Sub Main()
-        [class].[shared](True)
-
-        ' This prints out: ".
-        Console.WriteLine("""")
-
-        ' This prints out: a"b.
-        Console.WriteLine("a""b")
-
-        ' This prints out: a.
-        Console.WriteLine("a"c)
-
-        ' This prints out: ".
-        Console.WriteLine(""""c)
-    End Sub
-End Module
-
-Dim d As Date
-d = # 8/23/1970 3:45:39AM #
-d = # 8/23/1970 #
-d = # 3:45:39AM #
-d = # 3:45:39 #
-d = # 13:45:39 #
-d = # 13:45:39PM #
-
-Dim n As Float
-n = (0.0, .99F, 1.0E-2D, 1.0E+3D, .5E4, 1E3R, 4D)
-
-Dim i As Integer
+Imports System
+
+Class [class]
+    Shared Sub [shared](ByVal [boolean] As Boolean)
+        If [boolean] Then
+            Console.WriteLine("true")
+        Else
+            Console.WriteLine("false")
+        End If
+    End Sub
+End Class
+
+' Comment
+‘ Second Line comment with a smart quote _
+  continued line using VB6 syntax.
+Module [module]
+    Sub Main()
+        [class].[shared](True)
+
+        ' This prints out: ".
+        Console.WriteLine("""")
+
+        ' This prints out: a"b.
+        Console.WriteLine("a""b")
+
+        ' This prints out: a.
+        Console.WriteLine("a"c)
+
+        ' This prints out: ".
+        Console.WriteLine(""""c)
+    End Sub
+End Module
+
+Dim d As Date
+d = # 8/23/1970 3:45:39AM #
+d = # 8/23/1970 #
+d = # 3:45:39AM #
+d = # 3:45:39 #
+d = # 13:45:39 #
+d = # 13:45:39PM #
+
+Dim n As Float
+n = (0.0, .99F, 1.0E-2D, 1.0E+3D, .5E4, 1E3R, 4D)
+
+Dim i As Integer
 i = (0, 123, 45L, &HA0I, &O177S)
\ No newline at end of file
