You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by el...@apache.org on 2021/01/07 11:16:07 UTC

[maven-doxia] 01/01: rollback Java 7 breaking change

This is an automated email from the ASF dual-hosted git repository.

elharo pushed a commit to branch rollback
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git

commit 69d1d5c4b988fa31115b2cfa5b1bf25811ae074d
Author: Elliotte Rusty Harold <el...@ibiblio.org>
AuthorDate: Thu Jan 7 06:15:50 2021 -0500

    rollback Java 7 breaking change
---
 doxia-core/pom.xml                                 |   2 +-
 .../apache/maven/doxia/parser/XhtmlBaseParser.java |   3 +-
 .../maven/doxia/sink/impl/Xhtml5BaseSink.java      |   4 +-
 .../maven/doxia/sink/impl/XhtmlBaseSink.java       |   4 +-
 .../org/apache/maven/doxia/AbstractModuleTest.java |   3 +-
 doxia-logging-api/pom.xml                          |   2 +-
 doxia-modules/doxia-module-apt/pom.xml             |   2 +-
 doxia-modules/doxia-module-confluence/pom.xml      |   2 +-
 doxia-modules/doxia-module-docbook-simple/pom.xml  |   2 +-
 doxia-modules/doxia-module-fml/pom.xml             |   2 +-
 doxia-modules/doxia-module-fo/pom.xml              |   2 +-
 doxia-modules/doxia-module-itext/pom.xml           |   2 +-
 doxia-modules/doxia-module-latex/pom.xml           |   2 +-
 doxia-modules/doxia-module-markdown/pom.xml        |  77 +------
 .../src/it/DOXIA-616-fenced-code-block/pom.xml     |  69 ------
 .../src/site/markdown/fenced-code-block.md         |  26 ---
 .../DOXIA-616-fenced-code-block/src/site/site.xml  |  37 ----
 .../it/DOXIA-616-fenced-code-block/verify.groovy   |  43 ----
 .../doxia-module-markdown/src/it/general/pom.xml   |  69 ------
 .../src/it/general/src/site/markdown/index.md      |   5 -
 .../src/it/general/src/site/markdown/metadata.md   |  11 -
 .../src/it/general/src/site/markdown/quotes.md     |   5 -
 .../src/it/general/src/site/site.xml               |  36 ----
 .../src/it/general/verify.groovy                   |  65 ------
 .../doxia-module-markdown/src/it/settings.xml      |  55 -----
 .../module/markdown/FlexmarkDoxiaExtension.java    |  58 +++++
 .../module/markdown/FlexmarkDoxiaNodeRenderer.java | 146 +++++++++++++
 .../doxia/module/markdown/MarkdownParser.java      | 240 +++++++++------------
 .../doxia/module/markdown/MarkdownParserTest.java  |  93 +-------
 .../src/test/resources/fenced-code-block.md        |   5 -
 .../src/test/resources/first-heading.md            |   2 +-
 .../src/test/resources/metadata.md                 |  13 +-
 .../src/test/resources/quote-vs-apostrophe.md      |   3 -
 doxia-modules/doxia-module-rtf/pom.xml             |   2 +-
 doxia-modules/doxia-module-twiki/pom.xml           |   2 +-
 doxia-modules/doxia-module-xdoc/pom.xml            |   2 +-
 doxia-modules/doxia-module-xhtml/pom.xml           |   2 +-
 .../maven/doxia/module/xhtml/XhtmlParser.java      |   2 +-
 doxia-modules/doxia-module-xhtml5/pom.xml          |   2 +-
 doxia-modules/pom.xml                              |   2 +-
 doxia-sink-api/pom.xml                             |   2 +-
 doxia-test-docs/pom.xml                            |   2 +-
 pom.xml                                            |  18 +-
 43 files changed, 347 insertions(+), 779 deletions(-)

diff --git a/doxia-core/pom.xml b/doxia-core/pom.xml
index 449f433..a240a79 100644
--- a/doxia-core/pom.xml
+++ b/doxia-core/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <groupId>org.apache.maven.doxia</groupId>
     <artifactId>doxia</artifactId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java
index 57049e3..36b1024 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java
@@ -509,8 +509,7 @@ public class XhtmlBaseParser
                 || ( parser.getName().equals( HtmlMarkup.SAMP.toString() ) )
                 || ( parser.getName().equals( HtmlMarkup.TT.toString() ) ) )
         {
-            attribs.addAttributes( SinkEventAttributeSet.Semantics.CODE );
-            sink.inline( attribs );
+            sink.inline( SinkEventAttributeSet.Semantics.CODE );
         }
         else if ( parser.getName().equals( HtmlMarkup.A.toString() ) )
         {
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
index 2f0d9bc..96d86a0 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
@@ -1905,9 +1905,7 @@ public class Xhtml5BaseSink
     {
         if ( attributes.containsAttribute( SinkEventAttributes.SEMANTICS, semantic ) )
         {
-            SinkEventAttributes attributesNoSemantics = ( SinkEventAttributes ) attributes.copyAttributes();
-            attributesNoSemantics.removeAttribute( SinkEventAttributes.SEMANTICS );
-            writeStartTag( tag, attributesNoSemantics );
+            writeStartTag( tag );
             tags.add( 0, tag );
         }
     }
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
index 6cb76e1..c4a5aa5 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
@@ -1782,9 +1782,7 @@ public class XhtmlBaseSink
     {
         if ( attributes.containsAttribute( SinkEventAttributes.SEMANTICS, semantic ) )
         {
-            SinkEventAttributes attributesNoSemantics = ( SinkEventAttributes ) attributes.copyAttributes();
-            attributesNoSemantics.removeAttribute( SinkEventAttributes.SEMANTICS );
-            writeStartTag( tag, attributesNoSemantics );
+            writeStartTag( tag );
             tags.add( 0, tag );
         }
     }
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/AbstractModuleTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/AbstractModuleTest.java
index 79249a5..3a1ec80 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/AbstractModuleTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/AbstractModuleTest.java
@@ -30,7 +30,6 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.Writer;
-import java.nio.charset.StandardCharsets;
 
 /**
  * Provide some common convenience methods to test Doxia modules (parsers and sinks).
@@ -173,7 +172,7 @@ public abstract class AbstractModuleTest
 
         assertNotNull( "Could not find resource: " + baseName + "." + extension, is );
 
-        return new InputStreamReader( is, StandardCharsets.UTF_8 );
+        return new InputStreamReader( is );
     }
 
     /**
diff --git a/doxia-logging-api/pom.xml b/doxia-logging-api/pom.xml
index 423314b..2c539a9 100644
--- a/doxia-logging-api/pom.xml
+++ b/doxia-logging-api/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <artifactId>doxia</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-modules/doxia-module-apt/pom.xml b/doxia-modules/doxia-module-apt/pom.xml
index d46c2e7..0330927 100644
--- a/doxia-modules/doxia-module-apt/pom.xml
+++ b/doxia-modules/doxia-module-apt/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <artifactId>doxia-modules</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-modules/doxia-module-confluence/pom.xml b/doxia-modules/doxia-module-confluence/pom.xml
index f6ca781..83f08db 100644
--- a/doxia-modules/doxia-module-confluence/pom.xml
+++ b/doxia-modules/doxia-module-confluence/pom.xml
@@ -23,7 +23,7 @@ under the License.
   <parent>
     <artifactId>doxia-modules</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-modules/doxia-module-docbook-simple/pom.xml b/doxia-modules/doxia-module-docbook-simple/pom.xml
index 0909d03..68ca7e2 100644
--- a/doxia-modules/doxia-module-docbook-simple/pom.xml
+++ b/doxia-modules/doxia-module-docbook-simple/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <artifactId>doxia-modules</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-modules/doxia-module-fml/pom.xml b/doxia-modules/doxia-module-fml/pom.xml
index 9e1a40e..d2cc4b0 100644
--- a/doxia-modules/doxia-module-fml/pom.xml
+++ b/doxia-modules/doxia-module-fml/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <artifactId>doxia-modules</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-modules/doxia-module-fo/pom.xml b/doxia-modules/doxia-module-fo/pom.xml
index 1791f6b..35e1fb4 100644
--- a/doxia-modules/doxia-module-fo/pom.xml
+++ b/doxia-modules/doxia-module-fo/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <artifactId>doxia-modules</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-modules/doxia-module-itext/pom.xml b/doxia-modules/doxia-module-itext/pom.xml
index b805d07..ffd4625 100644
--- a/doxia-modules/doxia-module-itext/pom.xml
+++ b/doxia-modules/doxia-module-itext/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <artifactId>doxia-modules</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-modules/doxia-module-latex/pom.xml b/doxia-modules/doxia-module-latex/pom.xml
index abdd11b..bbe97ee 100644
--- a/doxia-modules/doxia-module-latex/pom.xml
+++ b/doxia-modules/doxia-module-latex/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <artifactId>doxia-modules</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-modules/doxia-module-markdown/pom.xml b/doxia-modules/doxia-module-markdown/pom.xml
index 81061bc..29bbac4 100644
--- a/doxia-modules/doxia-module-markdown/pom.xml
+++ b/doxia-modules/doxia-module-markdown/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <groupId>org.apache.maven.doxia</groupId>
     <artifactId>doxia-modules</artifactId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
@@ -72,80 +72,5 @@ under the License.
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-    </dependency>
   </dependencies>
-  <build>
-
-    <plugins>
-
-      <!-- install -->
-      <plugin>
-        <artifactId>maven-install-plugin</artifactId>
-        <executions>
-
-          <!-- integration-test -->
-          <!-- Copy the Doxia XHTML module from our working directory to the local-repo -->
-          <!-- We do that manually because the invoker:install goal (below) doesn't do it, as -->
-          <!-- it's not the artifact we're working on, but the ones that are produced by our "siblings" -->
-          <execution>
-            <id>copy-doxia-module-xhtml-to-local-repo</id>
-            <phase>integration-test</phase>
-            <goals>
-              <goal>install-file</goal>
-            </goals>
-            <configuration>
-              <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
-              <file>${project.basedir}/../doxia-module-xhtml/target/doxia-module-xhtml-${project.version}.jar</file>
-            </configuration>
-          </execution>
-          <execution>
-            <id>copy-doxia-to-local-repo</id>
-            <phase>integration-test</phase>
-            <goals>
-              <goal>install-file</goal>
-            </goals>
-            <configuration>
-              <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
-              <file>${project.basedir}/../../doxia-core/target/doxia-core-${project.version}.jar</file>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <!--  maven-invoker-plugin -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-invoker-plugin</artifactId>
-        <!-- <version>2.0.0</version> -->
-        <configuration>
-          <debug>false</debug>
-          <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
-          <pomIncludes>
-            <pomInclude>**/pom.xml</pomInclude>
-          </pomIncludes>
-          <postBuildHookScript>verify</postBuildHookScript>
-          <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
-          <extraArtifacts></extraArtifacts>
-          <settingsFile>src/it/settings.xml</settingsFile>
-          <goals>
-            <goal>clean</goal>
-            <goal>site</goal>
-          </goals>
-        </configuration>
-        <executions>
-          <execution>
-            <id>integration-test</id>
-            <goals>
-              <goal>install</goal>
-              <goal>run</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-
-    </plugins>
-  </build>
 </project>
diff --git a/doxia-modules/doxia-module-markdown/src/it/DOXIA-616-fenced-code-block/pom.xml b/doxia-modules/doxia-module-markdown/src/it/DOXIA-616-fenced-code-block/pom.xml
deleted file mode 100644
index 12afb4f..0000000
--- a/doxia-modules/doxia-module-markdown/src/it/DOXIA-616-fenced-code-block/pom.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>org.apache.maven.doxia</groupId>
-  <artifactId>it</artifactId>
-  <version>1.0-SNAPSHOT</version>
-  <packaging>pom</packaging>
-
-  <description>Project Description</description>
-
-  <build>
-    <plugins>
-
-      <!-- site -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-site-plugin</artifactId>
-        <version>3.9.1</version>
-        <configuration>
-          <generateReports>false</generateReports>
-          <generateProjectInfo>false</generateProjectInfo>
-          <inputEncoding>UTF-8</inputEncoding>
-          <outputEncoding>UTF-8</outputEncoding>
-        </configuration>
-        <dependencies>
-          <dependency>
-            <groupId>org.apache.maven.doxia</groupId>
-            <artifactId>doxia-core</artifactId>
-            <version>@project.version@</version>
-          </dependency>
-          <dependency>
-            <groupId>org.apache.maven.doxia</groupId>
-            <artifactId>doxia-module-xhtml</artifactId>
-            <version>@project.version@</version>
-          </dependency>
-          <dependency>
-            <groupId>@project.groupId@</groupId>
-            <artifactId>@project.artifactId@</artifactId>
-            <version>@project.version@</version>
-          </dependency>
-        </dependencies>
-
-      </plugin>
-
-    </plugins>
-  </build>
-
-</project>
diff --git a/doxia-modules/doxia-module-markdown/src/it/DOXIA-616-fenced-code-block/src/site/markdown/fenced-code-block.md b/doxia-modules/doxia-module-markdown/src/it/DOXIA-616-fenced-code-block/src/site/markdown/fenced-code-block.md
deleted file mode 100644
index 3f4da06..0000000
--- a/doxia-modules/doxia-module-markdown/src/it/DOXIA-616-fenced-code-block/src/site/markdown/fenced-code-block.md
+++ /dev/null
@@ -1,26 +0,0 @@
-author: Bertrand Martin
-
-# Fenced Code Block
-
-This is Java code and must be tagged so such.
-
-```java
-// Fenced Code Block 1
-System.out.println("Hello, Fenced Code Block!");
-```
-
-This is non-specified code:
-
-```
-# Fenced Code Block 2
-ch = fopen("/tmp/test.log", "r");
-```
-
-This is similar to indented block:
-
-    // Indented Code Block
-    System.out.println("Hello, Indented Block");
-
-And it is also different from the inline code: `System.out.println("Hello, Inline Code");`, which remains simple.
-
-And what about ```System.out.println("Inline fenced code");```?
\ No newline at end of file
diff --git a/doxia-modules/doxia-module-markdown/src/it/DOXIA-616-fenced-code-block/src/site/site.xml b/doxia-modules/doxia-module-markdown/src/it/DOXIA-616-fenced-code-block/src/site/site.xml
deleted file mode 100644
index ebc6ae2..0000000
--- a/doxia-modules/doxia-module-markdown/src/it/DOXIA-616-fenced-code-block/src/site/site.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<project name="${project.name} from site.xml">
-
-  <skin>
-    <groupId>org.apache.maven.skins</groupId>
-    <artifactId>maven-fluido-skin</artifactId>
-    <version>1.9</version>
-  </skin>
-
-  <body>
-
-    <menu name="Testing">
-      <item name="Fenced Code Block" href="fenced-code-block.html" />
-    </menu>
-
-  </body>
-</project>
diff --git a/doxia-modules/doxia-module-markdown/src/it/DOXIA-616-fenced-code-block/verify.groovy b/doxia-modules/doxia-module-markdown/src/it/DOXIA-616-fenced-code-block/verify.groovy
deleted file mode 100644
index b52ff05..0000000
--- a/doxia-modules/doxia-module-markdown/src/it/DOXIA-616-fenced-code-block/verify.groovy
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
- // Verify fenced-code-block.html
-
-// File was produced
-File resultFile = new File(basedir, "target/site/fenced-code-block.html")
-assert resultFile.isFile()
-
-// Check the content
-String content = resultFile.text;
-
-// Our first fenced code block is <div class="source"><pre><code class="language-java">...</code></pre></div>
-assert content =~ '<div class="source">.*<pre.*>.*<code.*class=".*language-java.*">.*// Fenced Code Block 1'
-
-// Our second fenced code block doesn't specify a language
-assert content =~ '<div class="source">.*<pre.*>.*<code.*># Fenced Code Block 2'
-assert !(content =~ '<div class="source">.*<pre.*>.*<code.*language-.*># Fenced Code Block 2')
-
-// Our third code block is indented, and it shows the same way
-assert content =~ '<div class="source">.*<pre.*>.*<code.*>// Indented Code Block'
-
-// Then we have inline code, which must be in simple <code>
-assert content =~ 'inline code: <code>System.out.println'
-
-// The last one is inline "fenced" code block which must be in simple <code>
-assert content =~ 'And what about <code>System.out.println'
diff --git a/doxia-modules/doxia-module-markdown/src/it/general/pom.xml b/doxia-modules/doxia-module-markdown/src/it/general/pom.xml
deleted file mode 100644
index 12afb4f..0000000
--- a/doxia-modules/doxia-module-markdown/src/it/general/pom.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>org.apache.maven.doxia</groupId>
-  <artifactId>it</artifactId>
-  <version>1.0-SNAPSHOT</version>
-  <packaging>pom</packaging>
-
-  <description>Project Description</description>
-
-  <build>
-    <plugins>
-
-      <!-- site -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-site-plugin</artifactId>
-        <version>3.9.1</version>
-        <configuration>
-          <generateReports>false</generateReports>
-          <generateProjectInfo>false</generateProjectInfo>
-          <inputEncoding>UTF-8</inputEncoding>
-          <outputEncoding>UTF-8</outputEncoding>
-        </configuration>
-        <dependencies>
-          <dependency>
-            <groupId>org.apache.maven.doxia</groupId>
-            <artifactId>doxia-core</artifactId>
-            <version>@project.version@</version>
-          </dependency>
-          <dependency>
-            <groupId>org.apache.maven.doxia</groupId>
-            <artifactId>doxia-module-xhtml</artifactId>
-            <version>@project.version@</version>
-          </dependency>
-          <dependency>
-            <groupId>@project.groupId@</groupId>
-            <artifactId>@project.artifactId@</artifactId>
-            <version>@project.version@</version>
-          </dependency>
-        </dependencies>
-
-      </plugin>
-
-    </plugins>
-  </build>
-
-</project>
diff --git a/doxia-modules/doxia-module-markdown/src/it/general/src/site/markdown/index.md b/doxia-modules/doxia-module-markdown/src/it/general/src/site/markdown/index.md
deleted file mode 100644
index f509994..0000000
--- a/doxia-modules/doxia-module-markdown/src/it/general/src/site/markdown/index.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# General Integration Tests for Doxia Markdown Module
-
-Each page is dedicated to one specific feature of the Doxia Markdown Module.
-
-Everything is tested in **verify.groovy**.
\ No newline at end of file
diff --git a/doxia-modules/doxia-module-markdown/src/it/general/src/site/markdown/metadata.md b/doxia-modules/doxia-module-markdown/src/it/general/src/site/markdown/metadata.md
deleted file mode 100644
index de13a27..0000000
--- a/doxia-modules/doxia-module-markdown/src/it/general/src/site/markdown/metadata.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Author: Bertrand 'Yours, Truly' Martin
-Title: Title from Header
-Keywords: smile,😉,utf-8
-Empty:
-
-   Weird   :      Spacing
-
-
-# Title from Title
-
-description: This description must not be included in the header
diff --git a/doxia-modules/doxia-module-markdown/src/it/general/src/site/markdown/quotes.md b/doxia-modules/doxia-module-markdown/src/it/general/src/site/markdown/quotes.md
deleted file mode 100644
index a922055..0000000
--- a/doxia-modules/doxia-module-markdown/src/it/general/src/site/markdown/quotes.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Quotes
-
-This ain't a quote, but an apostrophe.
-
-This 'quoted text' isn't surrounded with apostrophes.
diff --git a/doxia-modules/doxia-module-markdown/src/it/general/src/site/site.xml b/doxia-modules/doxia-module-markdown/src/it/general/src/site/site.xml
deleted file mode 100644
index 7bbac30..0000000
--- a/doxia-modules/doxia-module-markdown/src/it/general/src/site/site.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<project name="${project.name} from site.xml">
-
-  <body>
-
-    <menu name="Getting Started">
-      <item name="Overview" href="index.html" />
-    </menu>
-
-    <menu name="Testing">
-      <item name="Metadata" href="metadata.html" />
-      <item name="Quotes" href="quotes.html" />
-    </menu>
-
-  </body>
-</project>
diff --git a/doxia-modules/doxia-module-markdown/src/it/general/verify.groovy b/doxia-modules/doxia-module-markdown/src/it/general/verify.groovy
deleted file mode 100644
index a6199f4..0000000
--- a/doxia-modules/doxia-module-markdown/src/it/general/verify.groovy
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-// Verify index.html
-
-// File was produced
-File resultFile = new File(basedir, "target/site/index.html")
-assert resultFile.isFile()
-
-
-// Verify metadata.html
-
-// File was produced
-resultFile = new File(basedir, "target/site/metadata.html")
-assert resultFile.isFile()
-
-// Check the content
-String content = resultFile.text;
-
-// <title> must contain the specified title in the metadata, not in the first heading
-assert content =~ '<title>.*Title from Header.*</title>'
-
-// Author is Bertrand, yours truly
-// Apostrophe must have been interpreted properly
-assert content =~ '<meta name="Author" content="Bertrand \'Yours, Truly\' Martin" />'
-
-// Keywords do support utf-8 smileys
-assert content =~ '<meta name="Keywords" content="smile,&#x1f609;,utf-8" />'
-
-// Meta are properly trimmed
-assert content =~ '<meta name="Weird" content="Spacing" />'
-
-// Empty is empty
-assert content =~ '<meta name="Empty" content="" />'
-
-// No description is provided, as it was not part of the metadata at the beginning of the doc
-assert !(content =~ '<meta name="description"')
-
-
-// Verify quotes.html
-
-resultFile = new File(basedir, "target/site/quotes.html")
-assert resultFile.isFile()
-
-content = resultFile.text;
-assert content =~ /This ain't a quote, but an apostrophe./
-assert content =~ /This &#x2018;quoted text&#x2019; isn't surrounded with apostrophes./
-
diff --git a/doxia-modules/doxia-module-markdown/src/it/settings.xml b/doxia-modules/doxia-module-markdown/src/it/settings.xml
deleted file mode 100644
index a163718..0000000
--- a/doxia-modules/doxia-module-markdown/src/it/settings.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<settings>
-  <profiles>
-    <profile>
-      <id>it-repo</id>
-      <activation>
-        <activeByDefault>true</activeByDefault>
-      </activation>
-      <repositories>
-        <repository>
-          <id>1local.central</id>
-          <url>@localRepositoryUrl@</url>
-          <releases>
-            <enabled>true</enabled>
-          </releases>
-          <snapshots>
-            <enabled>true</enabled>
-          </snapshots>
-        </repository>
-      </repositories>
-      <pluginRepositories>
-        <pluginRepository>
-          <id>1local.central</id>
-          <url>@localRepositoryUrl@</url>
-          <releases>
-            <enabled>true</enabled>
-          </releases>
-          <snapshots>
-            <enabled>true</enabled>
-          </snapshots>
-        </pluginRepository>
-      </pluginRepositories>
-    </profile>
-  </profiles>
-</settings>
diff --git a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaExtension.java b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaExtension.java
new file mode 100644
index 0000000..f020d45
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaExtension.java
@@ -0,0 +1,58 @@
+package org.apache.maven.doxia.module.markdown;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import com.vladsch.flexmark.html.HtmlRenderer;
+import com.vladsch.flexmark.util.builder.Extension;
+import com.vladsch.flexmark.util.options.DataKey;
+import com.vladsch.flexmark.util.options.MutableDataHolder;
+
+/**
+ * Implements flexmark-java extension to render fenced code and indented code using doxia format
+ */
+class FlexmarkDoxiaExtension implements HtmlRenderer.HtmlRendererExtension
+{
+    /** Constant <code>INPUT_FILE_EXTENSION</code> */
+    public static final DataKey<String> INPUT_FILE_EXTENSION = new DataKey<>( "INPUT_FILE_EXTENSION", "md" );
+
+    /** {@inheritDoc} */
+    @Override
+    public void rendererOptions( final MutableDataHolder options )
+    {
+
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void extend( HtmlRenderer.Builder rendererBuilder, String rendererType )
+    {
+        rendererBuilder.nodeRendererFactory( new FlexmarkDoxiaNodeRenderer.Factory() );
+    }
+
+    /**
+     * <p>create.</p>
+     *
+     * @return a {@link com.vladsch.flexmark.util.builder.Extension} object.
+     */
+    public static Extension create()
+    {
+        return new FlexmarkDoxiaExtension();
+    }
+}
diff --git a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaNodeRenderer.java b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaNodeRenderer.java
new file mode 100644
index 0000000..dadf24b
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaNodeRenderer.java
@@ -0,0 +1,146 @@
+package org.apache.maven.doxia.module.markdown;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import com.vladsch.flexmark.ast.FencedCodeBlock;
+import com.vladsch.flexmark.ast.IndentedCodeBlock;
+import com.vladsch.flexmark.html.CustomNodeRenderer;
+import com.vladsch.flexmark.html.HtmlWriter;
+import com.vladsch.flexmark.html.renderer.NodeRenderer;
+import com.vladsch.flexmark.html.renderer.NodeRendererContext;
+import com.vladsch.flexmark.html.renderer.NodeRendererFactory;
+import com.vladsch.flexmark.html.renderer.NodeRenderingHandler;
+import com.vladsch.flexmark.util.options.DataHolder;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * The node renderer that renders all the core nodes (comes last in the order of node renderers).
+ */
+@SuppressWarnings( "WeakerAccess" )
+class FlexmarkDoxiaNodeRenderer implements NodeRenderer
+{
+    FlexmarkDoxiaNodeRenderer( DataHolder options )
+    {
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public Set<NodeRenderingHandler<?>> getNodeRenderingHandlers()
+    {
+        return new HashSet<NodeRenderingHandler<?>>( Arrays.asList(
+                new NodeRenderingHandler<>( IndentedCodeBlock.class, new CustomNodeRenderer<IndentedCodeBlock>()
+                {
+                    @Override
+                    public void render( IndentedCodeBlock node, NodeRendererContext context, HtmlWriter html )
+                    {
+                        FlexmarkDoxiaNodeRenderer.this.render( node, context, html );
+                    }
+                } ),
+                new NodeRenderingHandler<>( FencedCodeBlock.class, new CustomNodeRenderer<FencedCodeBlock>()
+                {
+                    @Override
+                    public void render( FencedCodeBlock node, NodeRendererContext context, HtmlWriter html )
+                    {
+                        FlexmarkDoxiaNodeRenderer.this.render( node, context, html );
+                    }
+                } )
+        ) );
+    }
+
+    private void render( IndentedCodeBlock node, NodeRendererContext context, HtmlWriter html )
+    {
+        html.line();
+        html.attr( "class", "source" ).withAttr().tag( "div" );
+        html.srcPosWithEOL( node.getChars() ).tag( "pre" ).openPre();
+
+        String noLanguageClass = context.getHtmlOptions().noLanguageClass.trim();
+        if ( !noLanguageClass.isEmpty() )
+        {
+            html.attr( "class", noLanguageClass );
+        }
+
+        //html.srcPosWithEOL(node.getContentChars()).withAttr(CoreNodeRenderer.CODE_CONTENT).tag("code");
+        String s = node.getContentChars().trimTailBlankLines().normalizeEndWithEOL();
+        while ( !s.isEmpty() && s.charAt( 0 ) == '\n' )
+        {
+            html.raw( "<br/>" );
+            s = s.substring( 1 );
+        }
+        html.text( s );
+
+        //html.tag("/code");
+        html.tag( "/pre" ).closePre();
+        html.tag( "/div" );
+        html.line();
+    }
+
+    private void render( FencedCodeBlock node, NodeRendererContext context, HtmlWriter html )
+    {
+        html.line();
+        html.attr( "class", "source" ).withAttr().tag( "div" );
+        html.srcPosWithTrailingEOL( node.getChars() ).tag( "pre" ).openPre();
+
+        //BasedSequence info = node.getInfo();
+        //if (info.isNotNull() && !info.isBlank()) {
+        //    int space = info.indexOf(' ');
+        //    BasedSequence language;
+        //    if (space == -1) {
+        //        language = info;
+        //    } else {
+        //        language = info.subSequence(0, space);
+        //    }
+        //    html.attr("class", context.getHtmlOptions().languageClassPrefix + language.unescape());
+        //} else  {
+        //    String noLanguageClass = context.getHtmlOptions().noLanguageClass.trim();
+        //    if (!noLanguageClass.isEmpty()) {
+        //        html.attr("class", noLanguageClass);
+        //    }
+        //}
+
+        //html.srcPosWithEOL(node.getContentChars()).withAttr(CoreNodeRenderer.CODE_CONTENT).tag("code");
+        String s = node.getContentChars().normalizeEOL();
+        while ( !s.isEmpty() && s.charAt( 0 ) == '\n' )
+        {
+            html.raw( "<br/>" );
+            s = s.substring( 1 );
+        }
+        html.text( s );
+
+        //html.tag("/code");
+        html.tag( "/pre" ).closePre();
+        html.tag( "/div" );
+        html.line();
+    }
+
+    /**
+     * Factory for doxia node renderer
+     */
+    public static class Factory implements NodeRendererFactory
+    {
+        @Override
+        public NodeRenderer create( final DataHolder options )
+        {
+            return new FlexmarkDoxiaNodeRenderer( options );
+        }
+    }
+}
diff --git a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java
index 971c35f..f40e123 100644
--- a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java
+++ b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java
@@ -24,24 +24,18 @@ import com.vladsch.flexmark.ast.HtmlCommentBlock;
 import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.ast.util.TextCollectingVisitor;
 import com.vladsch.flexmark.html.HtmlRenderer;
-import com.vladsch.flexmark.util.options.MutableDataSet;
-import com.vladsch.flexmark.ext.escaped.character.EscapedCharacterExtension;
-import com.vladsch.flexmark.ext.abbreviation.AbbreviationExtension;
-import com.vladsch.flexmark.ext.autolink.AutolinkExtension;
-import com.vladsch.flexmark.ext.definition.DefinitionExtension;
-import com.vladsch.flexmark.ext.typographic.TypographicExtension;
-import com.vladsch.flexmark.ext.tables.TablesExtension;
-import com.vladsch.flexmark.ext.wikilink.WikiLinkExtension;
-import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughExtension;
-
-import org.apache.commons.io.input.CharSequenceReader;
+import com.vladsch.flexmark.profiles.pegdown.Extensions;
+import com.vladsch.flexmark.profiles.pegdown.PegdownOptionsAdapter;
+import com.vladsch.flexmark.util.builder.Extension;
+import com.vladsch.flexmark.util.options.MutableDataHolder;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.maven.doxia.markup.HtmlMarkup;
 import org.apache.maven.doxia.module.xhtml.XhtmlParser;
 import org.apache.maven.doxia.parser.AbstractParser;
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.Sink;
-import org.apache.maven.doxia.util.HtmlTools;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.util.IOUtil;
@@ -49,7 +43,8 @@ import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 
 import java.io.IOException;
 import java.io.Reader;
-import java.util.Arrays;
+import java.io.StringReader;
+import java.util.ArrayList;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -79,100 +74,48 @@ public class MarkdownParser
 
     /**
      * Regex that identifies a multimarkdown-style metadata section at the start of the document
-     *
-     * In order to ensure that we have minimal risk of false positives when slurping metadata sections, the
-     * first key in the metadata section must be one of these standard keys or else the entire metadata section is
-     * ignored.
      */
-    private static final Pattern METADATA_SECTION_PATTERN = Pattern.compile(
-            "\\A^\\s*"
-            + "(?:title|author|date|address|affiliation|copyright|email|keywords|language|phone|subtitle)"
-            + "\\h*:\\h*\\V*\\h*$\\v+"
-            + "(?:^\\h*[^:\\v]+\\h*:\\h*\\V*\\h*$\\v+)*",
-            Pattern.MULTILINE | Pattern.CASE_INSENSITIVE );
+    private static final String MULTI_MARKDOWN_METADATA_SECTION =
+        "^(((?:[^\\s:][^:]*):(?:.*(?:\r?\n\\p{Blank}+[^\\s].*)*\r?\n))+)(?:\\s*\r?\n)";
 
     /**
      * Regex that captures the key and value of a multimarkdown-style metadata entry.
      */
-    private static final Pattern METADATA_ENTRY_PATTERN = Pattern.compile(
-            "^\\h*([^:\\v]+?)\\h*:\\h*(\\V*)\\h*$",
-            Pattern.MULTILINE );
+    private static final String MULTI_MARKDOWN_METADATA_ENTRY =
+        "([^\\s:][^:]*):(.*(?:\r?\n\\p{Blank}+[^\\s].*)*)\r?\n";
+
+    /**
+     * In order to ensure that we have minimal risk of false positives when slurping metadata sections, the
+     * first key in the metadata section must be one of these standard keys or else the entire metadata section is
+     * ignored.
+     */
+    private static final String[] STANDARD_METADATA_KEYS =
+        { "title", "author", "date", "address", "affiliation", "copyright", "email", "keywords", "language", "phone",
+            "subtitle" };
 
     /**
      * <p>getType.</p>
      *
      * @return a int.
      */
-    @Override
     public int getType()
     {
         return TXT_TYPE;
     }
 
-    /**
-     * The parser of the HTML produced by Flexmark, that we will
-     * use to convert this HTML to Sink events
-     */
     @Requirement
     private MarkdownHtmlParser parser;
 
-    /**
-     * Flexmark's Markdown parser (one static instance fits all)
-     */
-    private static final com.vladsch.flexmark.parser.Parser FLEXMARK_PARSER;
-
-    /**
-     * Flexmark's HTML renderer (its output will be re-parsed and converted to Sink events)
-     */
-    private static final HtmlRenderer FLEXMARK_HTML_RENDERER;
-
-    // Initialize the Flexmark parser and renderer, once and for all
-    static
-    {
-        MutableDataSet flexmarkOptions = new MutableDataSet();
-
-        // Enable the extensions that we used to have in Pegdown
-        flexmarkOptions.set( com.vladsch.flexmark.parser.Parser.EXTENSIONS, Arrays.asList(
-                EscapedCharacterExtension.create(),
-                AbbreviationExtension.create(),
-                AutolinkExtension.create(),
-                DefinitionExtension.create(),
-                TypographicExtension.create(),
-                TablesExtension.create(),
-                WikiLinkExtension.create(),
-                StrikethroughExtension.create()
-        ) );
-
-        // Disable wrong apostrophe replacement
-        flexmarkOptions.set( TypographicExtension.SINGLE_QUOTE_UNMATCHED, "&apos;" );
-
-        // Additional options on the HTML rendering
-        flexmarkOptions.set( HtmlRenderer.HTML_BLOCK_OPEN_TAG_EOL, false );
-        flexmarkOptions.set( HtmlRenderer.HTML_BLOCK_CLOSE_TAG_EOL, false );
-        flexmarkOptions.set( HtmlRenderer.MAX_TRAILING_BLANK_LINES, -1 );
-
-        // Build the Markdown parser
-        FLEXMARK_PARSER = com.vladsch.flexmark.parser.Parser.builder( flexmarkOptions ).build();
-
-        // Build the HTML renderer
-        FLEXMARK_HTML_RENDERER = HtmlRenderer.builder( flexmarkOptions )
-                .linkResolverFactory( new FlexmarkDoxiaLinkResolver.Factory() )
-                .build();
-
-    }
-
     /** {@inheritDoc} */
-    @Override
     public void parse( Reader source, Sink sink )
         throws ParseException
     {
         try
         {
             // Markdown to HTML (using flexmark-java library)
-            CharSequence html = toHtml( source );
-
+            String html = toHtml( source );
             // then HTML to Sink API
-            parser.parse( new CharSequenceReader( html ), sink );
+            parser.parse( new StringReader( html ), sink );
         }
         catch ( IOException e )
         {
@@ -187,98 +130,133 @@ public class MarkdownParser
      * @return HTML content generated by flexmark-java
      * @throws IOException passed through
      */
-    CharSequence toHtml( Reader source )
+    String toHtml( Reader source )
         throws IOException
     {
-        // Read the source
         String text = IOUtil.toString( source );
+        MutableDataHolder flexmarkOptions = PegdownOptionsAdapter.flexmarkOptions(
+                Extensions.ALL & ~( Extensions.HARDWRAPS | Extensions.ANCHORLINKS ) ).toMutable();
+        ArrayList<Extension> extensions = new ArrayList<>();
+        for ( Extension extension : flexmarkOptions.get( com.vladsch.flexmark.parser.Parser.EXTENSIONS ) )
+        {
+            extensions.add( extension );
+        }
+
+        extensions.add( FlexmarkDoxiaExtension.create() );
+        flexmarkOptions.set( com.vladsch.flexmark.parser.Parser.EXTENSIONS, extensions );
+        flexmarkOptions.set( HtmlRenderer.HTML_BLOCK_OPEN_TAG_EOL, false );
+        flexmarkOptions.set( HtmlRenderer.HTML_BLOCK_CLOSE_TAG_EOL, false );
+        flexmarkOptions.set( HtmlRenderer.MAX_TRAILING_BLANK_LINES, -1 );
+
+        com.vladsch.flexmark.parser.Parser parser = com.vladsch.flexmark.parser.Parser.builder( flexmarkOptions )
+                .build();
+        HtmlRenderer renderer = HtmlRenderer.builder( flexmarkOptions )
+                                    .linkResolverFactory( new FlexmarkDoxiaLinkResolver.Factory() )
+                                    .build();
+
 
-        // Now, build the HTML document
         StringBuilder html = new StringBuilder( 1000 );
         html.append( "<html>" );
         html.append( "<head>" );
-
-        // First, we interpret the "metadata" section of the document and add the corresponding HTML headers
-        Matcher metadataMatcher = METADATA_SECTION_PATTERN.matcher( text );
+        Pattern metadataPattern = Pattern.compile( MULTI_MARKDOWN_METADATA_SECTION, Pattern.MULTILINE );
+        Matcher metadataMatcher = metadataPattern.matcher( text );
         boolean haveTitle = false;
         if ( metadataMatcher.find() )
         {
-            Matcher entryMatcher = METADATA_ENTRY_PATTERN.matcher( metadataMatcher.group( 0 ) );
-            while ( entryMatcher.find() )
+            metadataPattern = Pattern.compile( MULTI_MARKDOWN_METADATA_ENTRY, Pattern.MULTILINE );
+            Matcher lineMatcher = metadataPattern.matcher( metadataMatcher.group( 1 ) );
+            boolean first = true;
+            while ( lineMatcher.find() )
             {
-                String key = entryMatcher.group( 1 );
-                String value = entryMatcher.group( 2 );
+                String key = StringUtils.trimToEmpty( lineMatcher.group( 1 ) );
+                if ( first )
+                {
+                    boolean found = false;
+                    for ( String k : STANDARD_METADATA_KEYS )
+                    {
+                        if ( k.equalsIgnoreCase( key ) )
+                        {
+                            found = true;
+                            break;
+                        }
+                    }
+                    if ( !found )
+                    {
+                        break;
+                    }
+                    first = false;
+                }
+                String value = StringUtils.trimToEmpty( lineMatcher.group( 2 ) );
                 if ( "title".equalsIgnoreCase( key ) )
                 {
                     haveTitle = true;
                     html.append( "<title>" );
-                    html.append( HtmlTools.escapeHTML( value, false ) );
+                    html.append( StringEscapeUtils.escapeXml( value ) );
                     html.append( "</title>" );
                 }
+                else if ( "author".equalsIgnoreCase( key ) )
+                {
+                    html.append( "<meta name=\'author\' content=\'" );
+                    html.append( StringEscapeUtils.escapeXml( value ) );
+                    html.append( "\' />" );
+                }
+                else if ( "date".equalsIgnoreCase( key ) )
+                {
+                    html.append( "<meta name=\'date\' content=\'" );
+                    html.append( StringEscapeUtils.escapeXml( value ) );
+                    html.append( "\' />" );
+                }
                 else
                 {
-                    html.append( "<meta name='" );
-                    html.append( HtmlTools.escapeHTML( key ) );
-                    html.append( "' content='" );
-                    html.append( HtmlTools.escapeHTML( value ) );
-                    html.append( "' />" );
+                    html.append( "<meta name=\'" );
+                    html.append( StringEscapeUtils.escapeXml( key ) );
+                    html.append( "\' content=\'" );
+                    html.append( StringEscapeUtils.escapeXml( value ) );
+                    html.append( "\' />" );
                 }
             }
-
-            // Trim the metadata from the source
-            text = text.substring( metadataMatcher.end( 0 ) );
-
+            if ( !first )
+            {
+                text = text.substring( metadataMatcher.end() );
+            }
         }
 
-        // Now is the time to parse the Markdown document
-        // (after we've trimmed out the metadatas, and before we check for its headings)
-        Node documentRoot = FLEXMARK_PARSER.parse( text );
+        Node rootNode = parser.parse( text );
+        String markdownHtml = renderer.render( rootNode );
 
-        // Special trick: if there is no title specified as a metadata in the header, we will use the first
-        // heading as the document title
-        if ( !haveTitle && documentRoot.hasChildren() )
+        if ( !haveTitle && rootNode.hasChildren() )
         {
-            // Skip the comment nodes
-            Node firstNode = documentRoot.getFirstChild();
-            while ( firstNode != null && firstNode instanceof HtmlCommentBlock )
+            // use the first (non-comment) node only if it is a heading
+            Node firstNode = rootNode.getFirstChild();
+            while ( firstNode != null && !( firstNode instanceof Heading ) )
             {
+                if ( !( firstNode instanceof HtmlCommentBlock ) )
+                {
+                    break;
+                }
                 firstNode = firstNode.getNext();
             }
 
-            // If this first non-comment node is a heading, we use it as the document title
-            if ( firstNode != null && firstNode instanceof Heading )
+            if ( firstNode instanceof Heading )
             {
                 html.append( "<title>" );
                 TextCollectingVisitor collectingVisitor = new TextCollectingVisitor();
                 String headingText = collectingVisitor.collectAndGetText( firstNode );
-                html.append( HtmlTools.escapeHTML( headingText, false ) );
+                html.append( StringEscapeUtils.escapeXml( headingText ) );
                 html.append( "</title>" );
             }
         }
         html.append( "</head>" );
         html.append( "<body>" );
-
-        // Convert our Markdown document to HTML and append it to our HTML
-        FLEXMARK_HTML_RENDERER.render( documentRoot, html );
-
+        html.append( markdownHtml );
         html.append( "</body>" );
         html.append( "</html>" );
 
-        return html;
+        return html.toString();
     }
 
     /**
      * Internal parser for HTML generated by the Markdown library.
-     *
-     * 2 special things:
-     * <ul>
-     * <li> DIV elements are translated as Unknown Sink events
-     * <li> PRE elements are all considered as boxed
-     * </ul>
-     * PRE elements need to be "boxed" because the XhtmlSink will surround the
-     * corresponding verbatim() Sink event with a DIV element with class="source",
-     * which is how most Maven Skin (incl. Fluido) recognize a block of code, which
-     * needs to be highlighted accordingly.
      */
     @Component( role = MarkdownHtmlParser.class )
     public static class MarkdownHtmlParser
@@ -290,13 +268,6 @@ public class MarkdownParser
         }
 
         @Override
-        protected void init()
-        {
-            super.init();
-            super.boxed = true;
-        }
-
-        @Override
         protected boolean baseEndTag( XmlPullParser parser, Sink sink )
         {
             boolean visited = super.baseEndTag( parser, sink );
@@ -320,7 +291,6 @@ public class MarkdownParser
                 if ( parser.getName().equals( HtmlMarkup.DIV.toString() ) )
                 {
                     handleUnknown( parser, sink, TAG_TYPE_START );
-                    super.boxed = true;
                     visited = true;
                 }
             }
diff --git a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java
index 1431bd6..8110378 100644
--- a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java
+++ b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java
@@ -165,43 +165,12 @@ public class MarkdownParserTest
     {
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "code" ).getEventList().iterator();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "text", "paragraph_", "text", "verbatim", "inline", "text", "inline_", "verbatim_", "body_" );
+        assertEquals( it, "head", "head_", "body", "paragraph", "text", "paragraph_", "text", "unknown", "verbatim", "text", "verbatim_", "unknown", "body_" );
 
         assertFalse( it.hasNext() );
     }
 
     /**
-     * Assert the verbatim sink event is fired when parsing "fenced-code-block.md".
-     *
-     * @throws Exception if the event list is not correct when parsing the document
-     */
-    public void testFencedCodeBlockSinkEvent()
-        throws Exception
-    {
-        List<SinkEventElement> eventList = parseFileToEventTestingSink( "fenced-code-block" ).getEventList();
-        Iterator<SinkEventElement> it = eventList.iterator();
-
-        assertEquals( it, "head", "head_", "body", "paragraph", "text", "paragraph_", "text", "verbatim", "inline", "text", "inline_", "verbatim_", "body_" );
-
-        assertFalse( it.hasNext() );
-
-        // PRE element must be a "verbatim" Sink event that specifies
-        // BOXED = true
-        SinkEventElement pre = eventList.get( 7 );
-        assertEquals( "verbatim", pre.getName() );
-        SinkEventAttributeSet preAtts = (SinkEventAttributeSet) pre.getArgs()[0];
-        assertTrue( preAtts.containsAttribute( SinkEventAttributes.DECORATION, "boxed" ) );
-
-        // * CODE element must be an "inline" Sink event that specifies:
-        // * SEMANTICS = "code" and CLASS = "language-java"
-        SinkEventElement code = eventList.get( 8 );
-        assertEquals( "inline", code.getName() );
-        SinkEventAttributeSet codeAtts = (SinkEventAttributeSet) code.getArgs()[0];
-        assertTrue( codeAtts.containsAttribute( SinkEventAttributes.SEMANTICS, "code" ) );
-        assertTrue( codeAtts.containsAttribute( SinkEventAttributes.CLASS, "language-java" ) );
-    }
-
-    /**
      * Assert the figureGraphics sink event is fired when parsing "image.md".
      *
      * @throws Exception if the event list is not correct when parsing the document
@@ -254,7 +223,7 @@ public class MarkdownParserTest
     public void testLinkWithAnchorAndQuery() throws Exception
     {
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "link_anchor_query" ).getEventList().iterator();
-
+        
         assertEquals( it, "head", "head_", "body", "paragraph", "link", "text", "link_", "paragraph_", "body_" );
 
         assertFalse( it.hasNext() );
@@ -300,36 +269,14 @@ public class MarkdownParserTest
     public void testMetadataSinkEvent()
         throws Exception
     {
-        List<SinkEventElement> eventList = parseFileToEventTestingSink( "metadata" ).getEventList();
-        Iterator<SinkEventElement> it = eventList.iterator();
+        Iterator<SinkEventElement> it = parseFileToEventTestingSink( "metadata" ).getEventList().iterator();
 
-        assertEquals( it, "head", "title", "text", "text", "text", "title_", "author", "text", "author_", "date", "text", "date_",
-                      "unknown", "head_", "body", "unknown", "text", "unknown", "paragraph", "text", "paragraph_", "section1",
+        assertEquals( it, "head", "title", "text", "title_", "author", "text", "author_", "date", "text", "date_",
+                      "head_", "body", "unknown", "text", "unknown", "paragraph", "text", "paragraph_", "section1",
                       "sectionTitle1", "text", "sectionTitle1_", "paragraph", "text", "paragraph_", "section1_",
                       "body_" );
 
         assertFalse( it.hasNext() );
-
-        // Title must be "A Title & a Test"
-        assertEquals( "A Title ", eventList.get( 2 ).getArgs()[0]);
-        assertEquals( "&", eventList.get( 3 ).getArgs()[0]);
-        assertEquals( " a 'Test'", eventList.get( 4 ).getArgs()[0]);
-
-        // Author must be "Somebody <so...@somewhere.org>"
-        assertEquals( "Somebody 'Nickname' Great <so...@somewhere.org>", eventList.get( 7 ).getArgs()[0]);
-
-        // Date must be "2013 © Copyleft"
-        assertEquals( "2013 \u00A9 Copyleft", eventList.get( 10 ).getArgs()[0]);
-
-        // * META element must be an "unknown" Sink event that specifies:
-        // * name = "keywords" and content = "maven,doxia,markdown"
-        SinkEventElement meta = eventList.get( 12 );
-        assertEquals( "unknown", meta.getName() );
-        assertEquals( "meta", meta.getArgs()[0] );
-        SinkEventAttributeSet metaAtts = (SinkEventAttributeSet) meta.getArgs()[2];
-        assertTrue( metaAtts.containsAttribute( SinkEventAttributes.NAME, "keywords" ) );
-        assertTrue( metaAtts.containsAttribute( "content", "maven,doxia,markdown" ) );
-
     }
 
     /**
@@ -343,9 +290,8 @@ public class MarkdownParserTest
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "first-heading" ).getEventList().iterator();
 
         // NOTE: H1 is rendered as "unknown" and H2 is "section1" (see DOXIA-203)
-        assertEquals( it, "head", "title", "text", "title_", "head_", "body", "comment", "text",
-                "section1", "sectionTitle1", "text", "sectionTitle1_", "paragraph", "text",
-                "paragraph_", "section1_", "body_" );
+        assertEquals( it, "head", "title", "text", "title_", "head_", "body", "section1", "sectionTitle1", "text",
+                      "sectionTitle1_", "paragraph", "text", "paragraph_", "section1_", "body_" );
 
         assertFalse( it.hasNext() );
     }
@@ -412,7 +358,7 @@ public class MarkdownParserTest
     {
         try ( Reader reader = getTestReader( file ) )
         {
-            return parser.toHtml( reader ).toString();
+            return parser.toHtml( reader );
         }
     }
 
@@ -473,27 +419,4 @@ public class MarkdownParserTest
     {
         parseFileToEventTestingSink( "flex-384" );
     }
-
-    // Apostrophe versus single quotes
-    // Simple apostrophes (like in Sophie's Choice) must not be replaced with a single quote
-    public void testQuoteVsApostrophe()
-        throws Exception
-    {
-        List<SinkEventElement> eventList = parseFileToEventTestingSink( "quote-vs-apostrophe" ).getEventList();
-
-        StringBuilder content = new StringBuilder();
-        for ( SinkEventElement element : eventList )
-        {
-            if ( "text".equals(element.getName()) )
-            {
-                content.append( element.getArgs()[0] );
-            }
-        }
-        assertEquals(
-                "This apostrophe isn't a quote."
-                + "This \u2018quoted text\u2019 isn't surrounded by apostrophes.",
-                content.toString() );
-
-    }
-
 }
diff --git a/doxia-modules/doxia-module-markdown/src/test/resources/fenced-code-block.md b/doxia-modules/doxia-module-markdown/src/test/resources/fenced-code-block.md
deleted file mode 100644
index d8df735..0000000
--- a/doxia-modules/doxia-module-markdown/src/test/resources/fenced-code-block.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Below code is Java:
-
-```java
-System.out.println(helloWorld);
-```
diff --git a/doxia-modules/doxia-module-markdown/src/test/resources/first-heading.md b/doxia-modules/doxia-module-markdown/src/test/resources/first-heading.md
index 108f199..622fffe 100644
--- a/doxia-modules/doxia-module-markdown/src/test/resources/first-heading.md
+++ b/doxia-modules/doxia-module-markdown/src/test/resources/first-heading.md
@@ -1,7 +1,7 @@
 
 
 
-<!-- To be discarded -->
+
 
 
 First heading
diff --git a/doxia-modules/doxia-module-markdown/src/test/resources/metadata.md b/doxia-modules/doxia-module-markdown/src/test/resources/metadata.md
index 97ce7f1..dac8009 100644
--- a/doxia-modules/doxia-module-markdown/src/test/resources/metadata.md
+++ b/doxia-modules/doxia-module-markdown/src/test/resources/metadata.md
@@ -1,13 +1,10 @@
+title: A title
+author: Somebody
+date: 2013
 
-title: A Title & a 'Test'
-author: Somebody 'Nickname' Great <so...@somewhere.org>
+# The document
 
-date: 2013 © Copyleft
-keywords: maven,doxia,markdown
-
-# The document with look-alike header
-
-copyright: none
+Some text
 
 ## A subheading
 
diff --git a/doxia-modules/doxia-module-markdown/src/test/resources/quote-vs-apostrophe.md b/doxia-modules/doxia-module-markdown/src/test/resources/quote-vs-apostrophe.md
deleted file mode 100644
index 085244f..0000000
--- a/doxia-modules/doxia-module-markdown/src/test/resources/quote-vs-apostrophe.md
+++ /dev/null
@@ -1,3 +0,0 @@
-This apostrophe isn't a quote.
-
-This 'quoted text' isn't surrounded by apostrophes.
\ No newline at end of file
diff --git a/doxia-modules/doxia-module-rtf/pom.xml b/doxia-modules/doxia-module-rtf/pom.xml
index facf00d..2a30e2e 100644
--- a/doxia-modules/doxia-module-rtf/pom.xml
+++ b/doxia-modules/doxia-module-rtf/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <artifactId>doxia-modules</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-modules/doxia-module-twiki/pom.xml b/doxia-modules/doxia-module-twiki/pom.xml
index d85610a..90972bf 100644
--- a/doxia-modules/doxia-module-twiki/pom.xml
+++ b/doxia-modules/doxia-module-twiki/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <artifactId>doxia-modules</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-modules/doxia-module-xdoc/pom.xml b/doxia-modules/doxia-module-xdoc/pom.xml
index 7998ffa..cf795d0 100644
--- a/doxia-modules/doxia-module-xdoc/pom.xml
+++ b/doxia-modules/doxia-module-xdoc/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <artifactId>doxia-modules</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-modules/doxia-module-xhtml/pom.xml b/doxia-modules/doxia-module-xhtml/pom.xml
index 9346526..60174a5 100644
--- a/doxia-modules/doxia-module-xhtml/pom.xml
+++ b/doxia-modules/doxia-module-xhtml/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <artifactId>doxia-modules</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java b/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
index 470fc2f..00cfc8d 100644
--- a/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
+++ b/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
@@ -53,7 +53,7 @@ public class XhtmlParser
     implements XhtmlMarkup
 {
     /** For boxed verbatim. */
-    protected boolean boxed;
+    private boolean boxed;
 
     /** Empty elements don't write a closing tag. */
     private boolean isEmptyElement;
diff --git a/doxia-modules/doxia-module-xhtml5/pom.xml b/doxia-modules/doxia-module-xhtml5/pom.xml
index 8045623..ff86bf9 100644
--- a/doxia-modules/doxia-module-xhtml5/pom.xml
+++ b/doxia-modules/doxia-module-xhtml5/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <artifactId>doxia-modules</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-modules/pom.xml b/doxia-modules/pom.xml
index 2947978..e12b2b9 100644
--- a/doxia-modules/pom.xml
+++ b/doxia-modules/pom.xml
@@ -22,7 +22,7 @@ under the License.
   <parent>
     <artifactId>doxia</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-sink-api/pom.xml b/doxia-sink-api/pom.xml
index 0c09e35..9d84aff 100644
--- a/doxia-sink-api/pom.xml
+++ b/doxia-sink-api/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <artifactId>doxia</artifactId>
     <groupId>org.apache.maven.doxia</groupId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/doxia-test-docs/pom.xml b/doxia-test-docs/pom.xml
index 7ee1601..0f4a436 100644
--- a/doxia-test-docs/pom.xml
+++ b/doxia-test-docs/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <groupId>org.apache.maven.doxia</groupId>
     <artifactId>doxia</artifactId>
-    <version>1.10-SNAPSHOT</version>
+    <version>1.9.2-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/pom.xml b/pom.xml
index d54de47..b634aa6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@ under the License.
 
   <groupId>org.apache.maven.doxia</groupId>
   <artifactId>doxia</artifactId>
-  <version>1.10-SNAPSHOT</version>
+  <version>1.9.2-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <name>Doxia</name>
@@ -207,14 +207,6 @@ under the License.
         <artifactId>plexus-utils</artifactId>
         <version>3.3.0</version>
       </dependency>
-
-      <!-- Apache Commons IO -->
-      <dependency>
-        <groupId>commons-io</groupId>
-        <artifactId>commons-io</artifactId>
-        <version>2.6</version>
-      </dependency>
-
     </dependencies>
   </dependencyManagement>
 
@@ -270,7 +262,6 @@ under the License.
               <exclude>src/test/site/**/*.confluence</exclude>
               <exclude>src/test/resources/**/*.twiki</exclude>
               <exclude>src/test/resources/**/*.md</exclude>
-              <exclude>src/it/**/site/**/*.md</exclude>
             </excludes>
           </configuration>
         </plugin>
@@ -326,13 +317,6 @@ under the License.
                 <exclude>org/apache/maven/doxia/module/fml/FmlContentParser</exclude>
                 <exclude>org/apache/maven/doxia/module/xdoc/XdocParser</exclude>
               </excludes>
-              <ignored>
-                <!-- DOXIA-616 -->
-                <difference>
-                  <differenceType>8001</differenceType>
-                  <className>org/apache/maven/doxia/module/markdown/FlexmarkDoxiaNodeRenderer$Factory</className>
-                </difference>
-              </ignored>
             </configuration>
           </execution>
         </executions>