Update documentation with new runtime.
diff --git a/org.jacoco.doc/diagrams/implementation-1.dot b/org.jacoco.doc/diagrams/implementation-1.dot
new file mode 100644
index 0000000..f0a6add
--- /dev/null
+++ b/org.jacoco.doc/diagrams/implementation-1.dot
@@ -0,0 +1,39 @@
+digraph G {

+

+  node [shape="rect", penwidth="0.33", style="rounded", margin="0.1,0", height="0.3", fontsize="10", fontname="Arial"];

+  edge [arrowsize="0.75"];

+  {

+    coverage [label="Code Coverage", style="", fontname="Arial Bold"]

+    

+    rt [label="Runtime Profiling"]

+    instrumentation [label="Instrumentation", style="rounded,filled", fillcolor="#ffff80"]

+    coverage -> rt;

+    coverage -> instrumentation;

+    

+    jvmpi [label="JVMPI"]

+    jvmti [label="JVMTI"]

+    rt -> jvmpi;

+    rt -> jvmti;

+    

+    source [label="Source"]

+    bytecode [label="Bytecode", style="rounded,filled", fillcolor="#ffff80"]

+    instrumentation -> source;

+    instrumentation -> bytecode;

+    

+    offline [label="Offline"]

+    onthefly [label="On-The-Fly", style="rounded,filled", fillcolor="#ffff80"]

+    bytecode -> offline;

+    bytecode -> onthefly;

+    

+    replace [label="Replace"]

+    inject [label="Inject"]

+    offline -> replace;

+    offline -> inject;

+  

+    classloader [label="Class Loader"]

+    agent [label="Java Agent", style="rounded,filled", fillcolor="#ffff80"]

+    onthefly -> classloader;

+    onthefly -> agent;

+  }

+

+}
\ No newline at end of file
diff --git a/org.jacoco.doc/diagrams/render.sh b/org.jacoco.doc/diagrams/render.sh
index 6805cd1..8292b7b 100644
--- a/org.jacoco.doc/diagrams/render.sh
+++ b/org.jacoco.doc/diagrams/render.sh
@@ -10,3 +10,5 @@
 dot -Tpng -o$OUTPUT/flow-4b.png flow-4b.dot
 dot -Tpng -o$OUTPUT/flow-5a.png flow-5a.dot
 dot -Tpng -o$OUTPUT/flow-5b.png flow-5b.dot
+
+dot -Tpng -o$OUTPUT/implementation-1.png  implementation-1.dot
diff --git a/org.jacoco.doc/docroot/doc/.resources/implementation-1.png b/org.jacoco.doc/docroot/doc/.resources/implementation-1.png
new file mode 100644
index 0000000..5fe2ba4
--- /dev/null
+++ b/org.jacoco.doc/docroot/doc/.resources/implementation-1.png
Binary files differ
diff --git a/org.jacoco.doc/docroot/doc/implementation.html b/org.jacoco.doc/docroot/doc/implementation.html
index b8040f3..693c0f9 100644
--- a/org.jacoco.doc/docroot/doc/implementation.html
+++ b/org.jacoco.doc/docroot/doc/implementation.html
@@ -47,36 +47,8 @@
   diagram gives an overview with the techniques used by JaCoCo highlighted:

 </p>

 

-<ul>

-  <li>Runtime Profiling

-    <ul>

-      <li>Java Virtual Machine Profiler Interface (JVMPI), until Java 1.4</li>

-      <li>Java Virtual Machine Tool Interface (JVMTI), since Java 1.5</li> 

-    </ul>

-  </li>

-  <li><span class="high">Instrumentation*</span>

-    <ul>

-      <li>Java Source Instrumentation</li>

-      <li><span class="high">Byte Code Instrumentation*</span>

-        <ul>

-          <li>Offline

-            <ul>

-              <li>Replace Original Classes In-Place</li>

-              <li>Inject Instrumented Classes into the Class Path</li>

-            </ul>

-          </li>

-          <li><span class="high">On-The-Fly*</span>

-            <ul>

-              <li>Special Classloader Implementions or Framework Specific Hooks</li>

-              <li><span class="high">Java Agent*</span></li>

-            </ul>

-          </li>

-        </ul>

-      </li>

-    </ul>

-  </li>

-</ul>

- 

+<img src=".resources/implementation-1.png" alt="Coverage Implementation Techniques"/>

+

 <p>

   Byte code instrumentation is very fast, can be implemented in pure Java and

   works with every Java VM. On-the-fly instrumentation with the Java agent

@@ -228,6 +200,12 @@
     runtime registers a custom <code>Handler</code> to receive the parameter

     array. This approach might break environments that install their own log

     managers (e.g. Glassfish).</li> 

+  <li><b><code>URLStreamHandlerRuntime</code></b>: This runtime registers a

+    <code>URLStreamHandler</code> for a "jacoco-xxxxx" protocol. Instrumented

+    classes open a connection on this protocol. The returned connection object

+    is the one that provides access to the coverage runtime through its

+    <code>equals()</code> method. However to register the protocol the runtime

+    needs to access internal members of the <code>java.net.URL</code> class.</li> 

   <li><b><code>ModifiedSystemClassRuntime</code></b>: This approach adds a

     public static field to an existing JRE class through instrumentation. Unlike

     the other methods above this is only possible for environments where a Java