summaryrefslogtreecommitdiffstats
path: root/src/doc/book/second-edition/src/img
diff options
context:
space:
mode:
Diffstat (limited to 'src/doc/book/second-edition/src/img')
-rw-r--r--src/doc/book/second-edition/src/img/trpl04-01.svg68
-rw-r--r--src/doc/book/second-edition/src/img/trpl04-02.svg95
-rw-r--r--src/doc/book/second-edition/src/img/trpl04-03.svg123
-rw-r--r--src/doc/book/second-edition/src/img/trpl04-04.svg96
-rw-r--r--src/doc/book/second-edition/src/img/trpl04-05.svg87
-rw-r--r--src/doc/book/second-edition/src/img/trpl04-06.svg115
-rw-r--r--src/doc/book/second-edition/src/img/trpl14-01.pngbin0 -> 65437 bytes
-rw-r--r--src/doc/book/second-edition/src/img/trpl14-02.pngbin0 -> 175642 bytes
-rw-r--r--src/doc/book/second-edition/src/img/trpl14-03.pngbin0 -> 43085 bytes
-rw-r--r--src/doc/book/second-edition/src/img/trpl14-04.pngbin0 -> 68900 bytes
-rw-r--r--src/doc/book/second-edition/src/img/trpl15-01.svg43
-rw-r--r--src/doc/book/second-edition/src/img/trpl15-02.svg26
-rw-r--r--src/doc/book/second-edition/src/img/trpl15-03.svg109
-rw-r--r--src/doc/book/second-edition/src/img/trpl15-04.svg55
-rw-r--r--src/doc/book/second-edition/src/img/trpl20-01.pngbin0 -> 8491 bytes
15 files changed, 817 insertions, 0 deletions
diff --git a/src/doc/book/second-edition/src/img/trpl04-01.svg b/src/doc/book/second-edition/src/img/trpl04-01.svg
new file mode 100644
index 000000000..314f53ba1
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl04-01.svg
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: %3 Pages: 1 -->
+<svg
+ viewBox="0.00 0.00 1000.00 700.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(4.1667 4.1667) rotate(0) translate(4 152)">
+<title>%3</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-152 233,-152 233,4 -4,4"/>
+<!-- table0 -->
+<g id="node1" class="node">
+<title>table0</title>
+<polyline fill="none" stroke="#000000" points="8,-124 96,-124 "/>
+<text text-anchor="start" x="45.7759" y="-129.8" font-family="Times,serif" font-size="14.00" fill="#000000">s1</text>
+<polygon fill="none" stroke="#000000" points="8,-104 8,-124 60,-124 60,-104 8,-104"/>
+<text text-anchor="start" x="18.8413" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">name</text>
+<polygon fill="none" stroke="#000000" points="60,-104 60,-124 96,-124 96,-104 60,-104"/>
+<text text-anchor="start" x="62.8413" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="8,-84 8,-104 60,-104 60,-84 8,-84"/>
+<text text-anchor="start" x="26.2241" y="-89.8" font-family="Times,serif" font-size="14.00" fill="#000000">ptr</text>
+<polygon fill="none" stroke="#000000" points="60,-84 60,-104 96,-104 96,-84 60,-84"/>
+<polygon fill="none" stroke="#000000" points="8,-64 8,-84 60,-84 60,-64 8,-64"/>
+<text text-anchor="start" x="25.4482" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">len</text>
+<polygon fill="none" stroke="#000000" points="60,-64 60,-84 96,-84 96,-64 60,-64"/>
+<text text-anchor="start" x="74.5" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+<polygon fill="none" stroke="#000000" points="8,-44 8,-64 60,-64 60,-44 8,-44"/>
+<text text-anchor="start" x="10.6826" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">capacity</text>
+<polygon fill="none" stroke="#000000" points="60,-44 60,-64 96,-64 96,-44 60,-44"/>
+<text text-anchor="start" x="74.5" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+</g>
+<!-- table1 -->
+<g id="node2" class="node">
+<title>table1</title>
+<polygon fill="none" stroke="#000000" points="148.5,-104 148.5,-124 185.5,-124 185.5,-104 148.5,-104"/>
+<text text-anchor="start" x="151.4482" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">index</text>
+<polygon fill="none" stroke="#000000" points="185.5,-104 185.5,-124 221.5,-124 221.5,-104 185.5,-104"/>
+<text text-anchor="start" x="188.3413" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="148.5,-84 148.5,-104 185.5,-104 185.5,-84 148.5,-84"/>
+<text text-anchor="start" x="163.5" y="-89.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text>
+<polygon fill="none" stroke="#000000" points="185.5,-84 185.5,-104 221.5,-104 221.5,-84 185.5,-84"/>
+<text text-anchor="start" x="200" y="-89.8" font-family="Times,serif" font-size="14.00" fill="#000000">h</text>
+<polygon fill="none" stroke="#000000" points="148.5,-64 148.5,-84 185.5,-84 185.5,-64 148.5,-64"/>
+<text text-anchor="start" x="163.5" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text>
+<polygon fill="none" stroke="#000000" points="185.5,-64 185.5,-84 221.5,-84 221.5,-64 185.5,-64"/>
+<text text-anchor="start" x="200.3931" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">e</text>
+<polygon fill="none" stroke="#000000" points="148.5,-44 148.5,-64 185.5,-64 185.5,-44 148.5,-44"/>
+<text text-anchor="start" x="163.5" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">2</text>
+<polygon fill="none" stroke="#000000" points="185.5,-44 185.5,-64 221.5,-64 221.5,-44 185.5,-44"/>
+<text text-anchor="start" x="201.5552" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="148.5,-24 148.5,-44 185.5,-44 185.5,-24 148.5,-24"/>
+<text text-anchor="start" x="163.5" y="-29.8" font-family="Times,serif" font-size="14.00" fill="#000000">3</text>
+<polygon fill="none" stroke="#000000" points="185.5,-24 185.5,-44 221.5,-44 221.5,-24 185.5,-24"/>
+<text text-anchor="start" x="201.5552" y="-29.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="148.5,-4 148.5,-24 185.5,-24 185.5,-4 148.5,-4"/>
+<text text-anchor="start" x="163.5" y="-9.8" font-family="Times,serif" font-size="14.00" fill="#000000">4</text>
+<polygon fill="none" stroke="#000000" points="185.5,-4 185.5,-24 221.5,-24 221.5,-4 185.5,-4"/>
+<text text-anchor="start" x="200" y="-9.8" font-family="Times,serif" font-size="14.00" fill="#000000">o</text>
+</g>
+<!-- table0&#45;&gt;table1 -->
+<g id="edge1" class="edge">
+<title>table0:c&#45;&gt;table1:pointee</title>
+<path fill="none" stroke="#000000" d="M78,-94C78,-94 109.3406,-94 138.3797,-94"/>
+<polygon fill="#000000" stroke="#000000" points="138.5,-97.5001 148.5,-94 138.5,-90.5001 138.5,-97.5001"/>
+</g>
+</g>
+</svg>
diff --git a/src/doc/book/second-edition/src/img/trpl04-02.svg b/src/doc/book/second-edition/src/img/trpl04-02.svg
new file mode 100644
index 000000000..70d490f0b
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl04-02.svg
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: %3 Pages: 1 -->
+<svg
+ viewBox="0.00 0.00 1000.00 1000.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(4.1667 4.1667) rotate(0) translate(4 238)">
+<title>%3</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-238 233,-238 233,4 -4,4"/>
+<!-- table0 -->
+<g id="node1" class="node">
+<title>table0</title>
+<polyline fill="none" stroke="#000000" points="8,-210 96,-210 "/>
+<text text-anchor="start" x="45.7759" y="-215.8" font-family="Times,serif" font-size="14.00" fill="#000000">s1</text>
+<polygon fill="none" stroke="#000000" points="8,-190 8,-210 60,-210 60,-190 8,-190"/>
+<text text-anchor="start" x="18.8413" y="-195.8" font-family="Times,serif" font-size="14.00" fill="#000000">name</text>
+<polygon fill="none" stroke="#000000" points="60,-190 60,-210 96,-210 96,-190 60,-190"/>
+<text text-anchor="start" x="62.8413" y="-195.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="8,-170 8,-190 60,-190 60,-170 8,-170"/>
+<text text-anchor="start" x="26.2241" y="-175.8" font-family="Times,serif" font-size="14.00" fill="#000000">ptr</text>
+<polygon fill="none" stroke="#000000" points="60,-170 60,-190 96,-190 96,-170 60,-170"/>
+<polygon fill="none" stroke="#000000" points="8,-150 8,-170 60,-170 60,-150 8,-150"/>
+<text text-anchor="start" x="25.4482" y="-155.8" font-family="Times,serif" font-size="14.00" fill="#000000">len</text>
+<polygon fill="none" stroke="#000000" points="60,-150 60,-170 96,-170 96,-150 60,-150"/>
+<text text-anchor="start" x="74.5" y="-155.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+<polygon fill="none" stroke="#000000" points="8,-130 8,-150 60,-150 60,-130 8,-130"/>
+<text text-anchor="start" x="10.6826" y="-135.8" font-family="Times,serif" font-size="14.00" fill="#000000">capacity</text>
+<polygon fill="none" stroke="#000000" points="60,-130 60,-150 96,-150 96,-130 60,-130"/>
+<text text-anchor="start" x="74.5" y="-135.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+</g>
+<!-- table1 -->
+<g id="node3" class="node">
+<title>table1</title>
+<polygon fill="none" stroke="#000000" points="148.5,-127 148.5,-147 185.5,-147 185.5,-127 148.5,-127"/>
+<text text-anchor="start" x="151.4482" y="-132.8" font-family="Times,serif" font-size="14.00" fill="#000000">index</text>
+<polygon fill="none" stroke="#000000" points="185.5,-127 185.5,-147 221.5,-147 221.5,-127 185.5,-127"/>
+<text text-anchor="start" x="188.3413" y="-132.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="148.5,-107 148.5,-127 185.5,-127 185.5,-107 148.5,-107"/>
+<text text-anchor="start" x="163.5" y="-112.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text>
+<polygon fill="none" stroke="#000000" points="185.5,-107 185.5,-127 221.5,-127 221.5,-107 185.5,-107"/>
+<text text-anchor="start" x="200" y="-112.8" font-family="Times,serif" font-size="14.00" fill="#000000">h</text>
+<polygon fill="none" stroke="#000000" points="148.5,-87 148.5,-107 185.5,-107 185.5,-87 148.5,-87"/>
+<text text-anchor="start" x="163.5" y="-92.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text>
+<polygon fill="none" stroke="#000000" points="185.5,-87 185.5,-107 221.5,-107 221.5,-87 185.5,-87"/>
+<text text-anchor="start" x="200.3931" y="-92.8" font-family="Times,serif" font-size="14.00" fill="#000000">e</text>
+<polygon fill="none" stroke="#000000" points="148.5,-67 148.5,-87 185.5,-87 185.5,-67 148.5,-67"/>
+<text text-anchor="start" x="163.5" y="-72.8" font-family="Times,serif" font-size="14.00" fill="#000000">2</text>
+<polygon fill="none" stroke="#000000" points="185.5,-67 185.5,-87 221.5,-87 221.5,-67 185.5,-67"/>
+<text text-anchor="start" x="201.5552" y="-72.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="148.5,-47 148.5,-67 185.5,-67 185.5,-47 148.5,-47"/>
+<text text-anchor="start" x="163.5" y="-52.8" font-family="Times,serif" font-size="14.00" fill="#000000">3</text>
+<polygon fill="none" stroke="#000000" points="185.5,-47 185.5,-67 221.5,-67 221.5,-47 185.5,-47"/>
+<text text-anchor="start" x="201.5552" y="-52.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="148.5,-27 148.5,-47 185.5,-47 185.5,-27 148.5,-27"/>
+<text text-anchor="start" x="163.5" y="-32.8" font-family="Times,serif" font-size="14.00" fill="#000000">4</text>
+<polygon fill="none" stroke="#000000" points="185.5,-27 185.5,-47 221.5,-47 221.5,-27 185.5,-27"/>
+<text text-anchor="start" x="200" y="-32.8" font-family="Times,serif" font-size="14.00" fill="#000000">o</text>
+</g>
+<!-- table0&#45;&gt;table1 -->
+<g id="edge1" class="edge">
+<title>table0:c&#45;&gt;table1:pointee</title>
+<path fill="none" stroke="#000000" d="M78,-180C78,-180 101.9982,-126.912 138.4405,-118.2023"/>
+<polygon fill="#000000" stroke="#000000" points="138.986,-121.6621 148.5,-117 138.1553,-114.7115 138.986,-121.6621"/>
+</g>
+<!-- table3 -->
+<g id="node2" class="node">
+<title>table3</title>
+<polyline fill="none" stroke="#000000" points="8,-84 96,-84 "/>
+<text text-anchor="start" x="45.7759" y="-89.8" font-family="Times,serif" font-size="14.00" fill="#000000">s2</text>
+<polygon fill="none" stroke="#000000" points="8,-64 8,-84 60,-84 60,-64 8,-64"/>
+<text text-anchor="start" x="18.8413" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">name</text>
+<polygon fill="none" stroke="#000000" points="60,-64 60,-84 96,-84 96,-64 60,-64"/>
+<text text-anchor="start" x="62.8413" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="8,-44 8,-64 60,-64 60,-44 8,-44"/>
+<text text-anchor="start" x="26.2241" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">ptr</text>
+<polygon fill="none" stroke="#000000" points="60,-44 60,-64 96,-64 96,-44 60,-44"/>
+<polygon fill="none" stroke="#000000" points="8,-24 8,-44 60,-44 60,-24 8,-24"/>
+<text text-anchor="start" x="25.4482" y="-29.8" font-family="Times,serif" font-size="14.00" fill="#000000">len</text>
+<polygon fill="none" stroke="#000000" points="60,-24 60,-44 96,-44 96,-24 60,-24"/>
+<text text-anchor="start" x="74.5" y="-29.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+<polygon fill="none" stroke="#000000" points="8,-4 8,-24 60,-24 60,-4 8,-4"/>
+<text text-anchor="start" x="10.6826" y="-9.8" font-family="Times,serif" font-size="14.00" fill="#000000">capacity</text>
+<polygon fill="none" stroke="#000000" points="60,-4 60,-24 96,-24 96,-4 60,-4"/>
+<text text-anchor="start" x="74.5" y="-9.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+</g>
+<!-- table3&#45;&gt;table1 -->
+<g id="edge2" class="edge">
+<title>table3:c&#45;&gt;table1:pointee</title>
+<path fill="none" stroke="#000000" d="M78,-54C78,-54 101.9982,-107.088 138.4405,-115.7977"/>
+<polygon fill="#000000" stroke="#000000" points="138.1553,-119.2885 148.5,-117 138.986,-112.3379 138.1553,-119.2885"/>
+</g>
+</g>
+</svg>
diff --git a/src/doc/book/second-edition/src/img/trpl04-03.svg b/src/doc/book/second-edition/src/img/trpl04-03.svg
new file mode 100644
index 000000000..7c153e23a
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl04-03.svg
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: %3 Pages: 1 -->
+<svg
+ viewBox="0.00 0.00 1000.00 1300.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(4.1667 4.1667) rotate(0) translate(4 298)">
+<title>%3</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-298 233,-298 233,4 -4,4"/>
+<!-- table0 -->
+<g id="node1" class="node">
+<title>table0</title>
+<polyline fill="none" stroke="#000000" points="8,-124 96,-124 "/>
+<text text-anchor="start" x="45.7759" y="-129.8" font-family="Times,serif" font-size="14.00" fill="#000000">s2</text>
+<polygon fill="none" stroke="#000000" points="8,-104 8,-124 60,-124 60,-104 8,-104"/>
+<text text-anchor="start" x="18.8413" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">name</text>
+<polygon fill="none" stroke="#000000" points="60,-104 60,-124 96,-124 96,-104 60,-104"/>
+<text text-anchor="start" x="62.8413" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="8,-84 8,-104 60,-104 60,-84 8,-84"/>
+<text text-anchor="start" x="26.2241" y="-89.8" font-family="Times,serif" font-size="14.00" fill="#000000">ptr</text>
+<polygon fill="none" stroke="#000000" points="60,-84 60,-104 96,-104 96,-84 60,-84"/>
+<polygon fill="none" stroke="#000000" points="8,-64 8,-84 60,-84 60,-64 8,-64"/>
+<text text-anchor="start" x="25.4482" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">len</text>
+<polygon fill="none" stroke="#000000" points="60,-64 60,-84 96,-84 96,-64 60,-64"/>
+<text text-anchor="start" x="74.5" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+<polygon fill="none" stroke="#000000" points="8,-44 8,-64 60,-64 60,-44 8,-44"/>
+<text text-anchor="start" x="10.6826" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">capacity</text>
+<polygon fill="none" stroke="#000000" points="60,-44 60,-64 96,-64 96,-44 60,-44"/>
+<text text-anchor="start" x="74.5" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+</g>
+<!-- table1 -->
+<g id="node2" class="node">
+<title>table1</title>
+<polygon fill="none" stroke="#000000" points="148.5,-104 148.5,-124 185.5,-124 185.5,-104 148.5,-104"/>
+<text text-anchor="start" x="151.4482" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">index</text>
+<polygon fill="none" stroke="#000000" points="185.5,-104 185.5,-124 221.5,-124 221.5,-104 185.5,-104"/>
+<text text-anchor="start" x="188.3413" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="148.5,-84 148.5,-104 185.5,-104 185.5,-84 148.5,-84"/>
+<text text-anchor="start" x="163.5" y="-89.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text>
+<polygon fill="none" stroke="#000000" points="185.5,-84 185.5,-104 221.5,-104 221.5,-84 185.5,-84"/>
+<text text-anchor="start" x="200" y="-89.8" font-family="Times,serif" font-size="14.00" fill="#000000">h</text>
+<polygon fill="none" stroke="#000000" points="148.5,-64 148.5,-84 185.5,-84 185.5,-64 148.5,-64"/>
+<text text-anchor="start" x="163.5" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text>
+<polygon fill="none" stroke="#000000" points="185.5,-64 185.5,-84 221.5,-84 221.5,-64 185.5,-64"/>
+<text text-anchor="start" x="200.3931" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">e</text>
+<polygon fill="none" stroke="#000000" points="148.5,-44 148.5,-64 185.5,-64 185.5,-44 148.5,-44"/>
+<text text-anchor="start" x="163.5" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">2</text>
+<polygon fill="none" stroke="#000000" points="185.5,-44 185.5,-64 221.5,-64 221.5,-44 185.5,-44"/>
+<text text-anchor="start" x="201.5552" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="148.5,-24 148.5,-44 185.5,-44 185.5,-24 148.5,-24"/>
+<text text-anchor="start" x="163.5" y="-29.8" font-family="Times,serif" font-size="14.00" fill="#000000">3</text>
+<polygon fill="none" stroke="#000000" points="185.5,-24 185.5,-44 221.5,-44 221.5,-24 185.5,-24"/>
+<text text-anchor="start" x="201.5552" y="-29.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="148.5,-4 148.5,-24 185.5,-24 185.5,-4 148.5,-4"/>
+<text text-anchor="start" x="163.5" y="-9.8" font-family="Times,serif" font-size="14.00" fill="#000000">4</text>
+<polygon fill="none" stroke="#000000" points="185.5,-4 185.5,-24 221.5,-24 221.5,-4 185.5,-4"/>
+<text text-anchor="start" x="200" y="-9.8" font-family="Times,serif" font-size="14.00" fill="#000000">o</text>
+</g>
+<!-- table0&#45;&gt;table1 -->
+<g id="edge1" class="edge">
+<title>table0:c&#45;&gt;table1:pointee</title>
+<path fill="none" stroke="#000000" d="M78,-94C78,-94 109.3406,-94 138.3797,-94"/>
+<polygon fill="#000000" stroke="#000000" points="138.5,-97.5001 148.5,-94 138.5,-90.5001 138.5,-97.5001"/>
+</g>
+<!-- table3 -->
+<g id="node3" class="node">
+<title>table3</title>
+<polyline fill="none" stroke="#000000" points="8,-270 96,-270 "/>
+<text text-anchor="start" x="45.7759" y="-275.8" font-family="Times,serif" font-size="14.00" fill="#000000">s1</text>
+<polygon fill="none" stroke="#000000" points="8,-250 8,-270 60,-270 60,-250 8,-250"/>
+<text text-anchor="start" x="18.8413" y="-255.8" font-family="Times,serif" font-size="14.00" fill="#000000">name</text>
+<polygon fill="none" stroke="#000000" points="60,-250 60,-270 96,-270 96,-250 60,-250"/>
+<text text-anchor="start" x="62.8413" y="-255.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="8,-230 8,-250 60,-250 60,-230 8,-230"/>
+<text text-anchor="start" x="26.2241" y="-235.8" font-family="Times,serif" font-size="14.00" fill="#000000">ptr</text>
+<polygon fill="none" stroke="#000000" points="60,-230 60,-250 96,-250 96,-230 60,-230"/>
+<polygon fill="none" stroke="#000000" points="8,-210 8,-230 60,-230 60,-210 8,-210"/>
+<text text-anchor="start" x="25.4482" y="-215.8" font-family="Times,serif" font-size="14.00" fill="#000000">len</text>
+<polygon fill="none" stroke="#000000" points="60,-210 60,-230 96,-230 96,-210 60,-210"/>
+<text text-anchor="start" x="74.5" y="-215.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+<polygon fill="none" stroke="#000000" points="8,-190 8,-210 60,-210 60,-190 8,-190"/>
+<text text-anchor="start" x="10.6826" y="-195.8" font-family="Times,serif" font-size="14.00" fill="#000000">capacity</text>
+<polygon fill="none" stroke="#000000" points="60,-190 60,-210 96,-210 96,-190 60,-190"/>
+<text text-anchor="start" x="74.5" y="-195.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+</g>
+<!-- table4 -->
+<g id="node4" class="node">
+<title>table4</title>
+<polygon fill="none" stroke="#000000" points="148.5,-250 148.5,-270 185.5,-270 185.5,-250 148.5,-250"/>
+<text text-anchor="start" x="151.4482" y="-255.8" font-family="Times,serif" font-size="14.00" fill="#000000">index</text>
+<polygon fill="none" stroke="#000000" points="185.5,-250 185.5,-270 221.5,-270 221.5,-250 185.5,-250"/>
+<text text-anchor="start" x="188.3413" y="-255.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="148.5,-230 148.5,-250 185.5,-250 185.5,-230 148.5,-230"/>
+<text text-anchor="start" x="163.5" y="-235.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text>
+<polygon fill="none" stroke="#000000" points="185.5,-230 185.5,-250 221.5,-250 221.5,-230 185.5,-230"/>
+<text text-anchor="start" x="200" y="-235.8" font-family="Times,serif" font-size="14.00" fill="#000000">h</text>
+<polygon fill="none" stroke="#000000" points="148.5,-210 148.5,-230 185.5,-230 185.5,-210 148.5,-210"/>
+<text text-anchor="start" x="163.5" y="-215.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text>
+<polygon fill="none" stroke="#000000" points="185.5,-210 185.5,-230 221.5,-230 221.5,-210 185.5,-210"/>
+<text text-anchor="start" x="200.3931" y="-215.8" font-family="Times,serif" font-size="14.00" fill="#000000">e</text>
+<polygon fill="none" stroke="#000000" points="148.5,-190 148.5,-210 185.5,-210 185.5,-190 148.5,-190"/>
+<text text-anchor="start" x="163.5" y="-195.8" font-family="Times,serif" font-size="14.00" fill="#000000">2</text>
+<polygon fill="none" stroke="#000000" points="185.5,-190 185.5,-210 221.5,-210 221.5,-190 185.5,-190"/>
+<text text-anchor="start" x="201.5552" y="-195.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="148.5,-170 148.5,-190 185.5,-190 185.5,-170 148.5,-170"/>
+<text text-anchor="start" x="163.5" y="-175.8" font-family="Times,serif" font-size="14.00" fill="#000000">3</text>
+<polygon fill="none" stroke="#000000" points="185.5,-170 185.5,-190 221.5,-190 221.5,-170 185.5,-170"/>
+<text text-anchor="start" x="201.5552" y="-175.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="148.5,-150 148.5,-170 185.5,-170 185.5,-150 148.5,-150"/>
+<text text-anchor="start" x="163.5" y="-155.8" font-family="Times,serif" font-size="14.00" fill="#000000">4</text>
+<polygon fill="none" stroke="#000000" points="185.5,-150 185.5,-170 221.5,-170 221.5,-150 185.5,-150"/>
+<text text-anchor="start" x="200" y="-155.8" font-family="Times,serif" font-size="14.00" fill="#000000">o</text>
+</g>
+<!-- table3&#45;&gt;table4 -->
+<g id="edge2" class="edge">
+<title>table3:c&#45;&gt;table4:pointee</title>
+<path fill="none" stroke="#000000" d="M78,-240C78,-240 109.3406,-240 138.3797,-240"/>
+<polygon fill="#000000" stroke="#000000" points="138.5,-243.5001 148.5,-240 138.5,-236.5001 138.5,-243.5001"/>
+</g>
+</g>
+</svg>
diff --git a/src/doc/book/second-edition/src/img/trpl04-04.svg b/src/doc/book/second-edition/src/img/trpl04-04.svg
new file mode 100644
index 000000000..a0513abd9
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl04-04.svg
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: %3 Pages: 1 -->
+<svg
+ viewBox="0.00 0.00 1000.00 1000.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(4.1667 4.1667) rotate(0) translate(4 238)">
+<title>%3</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-238 233,-238 233,4 -4,4"/>
+<!-- table0 -->
+<g id="node1" class="node">
+<title>table0</title>
+<polygon fill="#c0c0c0" stroke="transparent" points="8,-130 8,-230 96,-230 96,-130 8,-130"/>
+<polyline fill="none" stroke="#000000" points="8,-210 96,-210 "/>
+<text text-anchor="start" x="45.7759" y="-215.8" font-family="Times,serif" font-size="14.00" fill="#000000">s1</text>
+<polygon fill="none" stroke="#000000" points="8,-190 8,-210 60,-210 60,-190 8,-190"/>
+<text text-anchor="start" x="18.8413" y="-195.8" font-family="Times,serif" font-size="14.00" fill="#000000">name</text>
+<polygon fill="none" stroke="#000000" points="60,-190 60,-210 96,-210 96,-190 60,-190"/>
+<text text-anchor="start" x="62.8413" y="-195.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="8,-170 8,-190 60,-190 60,-170 8,-170"/>
+<text text-anchor="start" x="26.2241" y="-175.8" font-family="Times,serif" font-size="14.00" fill="#000000">ptr</text>
+<polygon fill="none" stroke="#000000" points="60,-170 60,-190 96,-190 96,-170 60,-170"/>
+<polygon fill="none" stroke="#000000" points="8,-150 8,-170 60,-170 60,-150 8,-150"/>
+<text text-anchor="start" x="25.4482" y="-155.8" font-family="Times,serif" font-size="14.00" fill="#000000">len</text>
+<polygon fill="none" stroke="#000000" points="60,-150 60,-170 96,-170 96,-150 60,-150"/>
+<text text-anchor="start" x="74.5" y="-155.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+<polygon fill="none" stroke="#000000" points="8,-130 8,-150 60,-150 60,-130 8,-130"/>
+<text text-anchor="start" x="10.6826" y="-135.8" font-family="Times,serif" font-size="14.00" fill="#000000">capacity</text>
+<polygon fill="none" stroke="#000000" points="60,-130 60,-150 96,-150 96,-130 60,-130"/>
+<text text-anchor="start" x="74.5" y="-135.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+</g>
+<!-- table1 -->
+<g id="node3" class="node">
+<title>table1</title>
+<polygon fill="none" stroke="#000000" points="148.5,-127 148.5,-147 185.5,-147 185.5,-127 148.5,-127"/>
+<text text-anchor="start" x="151.4482" y="-132.8" font-family="Times,serif" font-size="14.00" fill="#000000">index</text>
+<polygon fill="none" stroke="#000000" points="185.5,-127 185.5,-147 221.5,-147 221.5,-127 185.5,-127"/>
+<text text-anchor="start" x="188.3413" y="-132.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="148.5,-107 148.5,-127 185.5,-127 185.5,-107 148.5,-107"/>
+<text text-anchor="start" x="163.5" y="-112.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text>
+<polygon fill="none" stroke="#000000" points="185.5,-107 185.5,-127 221.5,-127 221.5,-107 185.5,-107"/>
+<text text-anchor="start" x="200" y="-112.8" font-family="Times,serif" font-size="14.00" fill="#000000">h</text>
+<polygon fill="none" stroke="#000000" points="148.5,-87 148.5,-107 185.5,-107 185.5,-87 148.5,-87"/>
+<text text-anchor="start" x="163.5" y="-92.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text>
+<polygon fill="none" stroke="#000000" points="185.5,-87 185.5,-107 221.5,-107 221.5,-87 185.5,-87"/>
+<text text-anchor="start" x="200.3931" y="-92.8" font-family="Times,serif" font-size="14.00" fill="#000000">e</text>
+<polygon fill="none" stroke="#000000" points="148.5,-67 148.5,-87 185.5,-87 185.5,-67 148.5,-67"/>
+<text text-anchor="start" x="163.5" y="-72.8" font-family="Times,serif" font-size="14.00" fill="#000000">2</text>
+<polygon fill="none" stroke="#000000" points="185.5,-67 185.5,-87 221.5,-87 221.5,-67 185.5,-67"/>
+<text text-anchor="start" x="201.5552" y="-72.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="148.5,-47 148.5,-67 185.5,-67 185.5,-47 148.5,-47"/>
+<text text-anchor="start" x="163.5" y="-52.8" font-family="Times,serif" font-size="14.00" fill="#000000">3</text>
+<polygon fill="none" stroke="#000000" points="185.5,-47 185.5,-67 221.5,-67 221.5,-47 185.5,-47"/>
+<text text-anchor="start" x="201.5552" y="-52.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="148.5,-27 148.5,-47 185.5,-47 185.5,-27 148.5,-27"/>
+<text text-anchor="start" x="163.5" y="-32.8" font-family="Times,serif" font-size="14.00" fill="#000000">4</text>
+<polygon fill="none" stroke="#000000" points="185.5,-27 185.5,-47 221.5,-47 221.5,-27 185.5,-27"/>
+<text text-anchor="start" x="200" y="-32.8" font-family="Times,serif" font-size="14.00" fill="#000000">o</text>
+</g>
+<!-- table0&#45;&gt;table1 -->
+<g id="edge1" class="edge">
+<title>table0:c&#45;&gt;table1:pointee</title>
+<path fill="none" stroke="#000000" d="M78,-180C78,-180 101.9982,-126.912 138.4405,-118.2023"/>
+<polygon fill="#000000" stroke="#000000" points="138.986,-121.6621 148.5,-117 138.1553,-114.7115 138.986,-121.6621"/>
+</g>
+<!-- table3 -->
+<g id="node2" class="node">
+<title>table3</title>
+<polyline fill="none" stroke="#000000" points="8,-84 96,-84 "/>
+<text text-anchor="start" x="45.7759" y="-89.8" font-family="Times,serif" font-size="14.00" fill="#000000">s2</text>
+<polygon fill="none" stroke="#000000" points="8,-64 8,-84 60,-84 60,-64 8,-64"/>
+<text text-anchor="start" x="18.8413" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">name</text>
+<polygon fill="none" stroke="#000000" points="60,-64 60,-84 96,-84 96,-64 60,-64"/>
+<text text-anchor="start" x="62.8413" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="8,-44 8,-64 60,-64 60,-44 8,-44"/>
+<text text-anchor="start" x="26.2241" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">ptr</text>
+<polygon fill="none" stroke="#000000" points="60,-44 60,-64 96,-64 96,-44 60,-44"/>
+<polygon fill="none" stroke="#000000" points="8,-24 8,-44 60,-44 60,-24 8,-24"/>
+<text text-anchor="start" x="25.4482" y="-29.8" font-family="Times,serif" font-size="14.00" fill="#000000">len</text>
+<polygon fill="none" stroke="#000000" points="60,-24 60,-44 96,-44 96,-24 60,-24"/>
+<text text-anchor="start" x="74.5" y="-29.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+<polygon fill="none" stroke="#000000" points="8,-4 8,-24 60,-24 60,-4 8,-4"/>
+<text text-anchor="start" x="10.6826" y="-9.8" font-family="Times,serif" font-size="14.00" fill="#000000">capacity</text>
+<polygon fill="none" stroke="#000000" points="60,-4 60,-24 96,-24 96,-4 60,-4"/>
+<text text-anchor="start" x="74.5" y="-9.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+</g>
+<!-- table3&#45;&gt;table1 -->
+<g id="edge2" class="edge">
+<title>table3:c&#45;&gt;table1:pointee</title>
+<path fill="none" stroke="#000000" d="M78,-54C78,-54 101.9982,-107.088 138.4405,-115.7977"/>
+<polygon fill="#000000" stroke="#000000" points="138.1553,-119.2885 148.5,-117 138.986,-112.3379 138.1553,-119.2885"/>
+</g>
+</g>
+</svg>
diff --git a/src/doc/book/second-edition/src/img/trpl04-05.svg b/src/doc/book/second-edition/src/img/trpl04-05.svg
new file mode 100644
index 000000000..b4bf2ebee
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl04-05.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: %3 Pages: 1 -->
+<svg
+ viewBox="0.00 0.00 1500.00 650.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(4.1667 4.1667) rotate(0) translate(4 152)">
+<title>%3</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-152 357,-152 357,4 -4,4"/>
+<!-- table0 -->
+<g id="node1" class="node">
+<title>table0</title>
+<polyline fill="none" stroke="#000000" points="8,-124 80,-124 "/>
+<text text-anchor="start" x="41.2759" y="-129.8" font-family="Times,serif" font-size="14.00" fill="#000000">s</text>
+<polygon fill="none" stroke="#000000" points="8,-104 8,-124 44,-124 44,-104 8,-104"/>
+<text text-anchor="start" x="10.8413" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">name</text>
+<polygon fill="none" stroke="#000000" points="44,-104 44,-124 80,-124 80,-104 44,-104"/>
+<text text-anchor="start" x="46.8413" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="8,-84 8,-104 44,-104 44,-84 8,-84"/>
+<text text-anchor="start" x="18.2241" y="-89.8" font-family="Times,serif" font-size="14.00" fill="#000000">ptr</text>
+<polygon fill="none" stroke="#000000" points="44,-84 44,-104 80,-104 80,-84 44,-84"/>
+</g>
+<!-- table1 -->
+<g id="node2" class="node">
+<title>table1</title>
+<polyline fill="none" stroke="#000000" points="132,-124 220,-124 "/>
+<text text-anchor="start" x="169.7759" y="-129.8" font-family="Times,serif" font-size="14.00" fill="#000000">s1</text>
+<polygon fill="none" stroke="#000000" points="132,-104 132,-124 184,-124 184,-104 132,-104"/>
+<text text-anchor="start" x="142.8413" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">name</text>
+<polygon fill="none" stroke="#000000" points="184,-104 184,-124 220,-124 220,-104 184,-104"/>
+<text text-anchor="start" x="186.8413" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="132,-84 132,-104 184,-104 184,-84 132,-84"/>
+<text text-anchor="start" x="150.2241" y="-89.8" font-family="Times,serif" font-size="14.00" fill="#000000">ptr</text>
+<polygon fill="none" stroke="#000000" points="184,-84 184,-104 220,-104 220,-84 184,-84"/>
+<polygon fill="none" stroke="#000000" points="132,-64 132,-84 184,-84 184,-64 132,-64"/>
+<text text-anchor="start" x="149.4482" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">len</text>
+<polygon fill="none" stroke="#000000" points="184,-64 184,-84 220,-84 220,-64 184,-64"/>
+<text text-anchor="start" x="198.5" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+<polygon fill="none" stroke="#000000" points="132,-44 132,-64 184,-64 184,-44 132,-44"/>
+<text text-anchor="start" x="134.6826" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">capacity</text>
+<polygon fill="none" stroke="#000000" points="184,-44 184,-64 220,-64 220,-44 184,-44"/>
+<text text-anchor="start" x="198.5" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+</g>
+<!-- table0&#45;&gt;table1 -->
+<g id="edge2" class="edge">
+<title>table0:c&#45;&gt;table1:borrowee</title>
+<path fill="none" stroke="#000000" d="M62,-94C62,-94 93.1184,-94 121.9514,-94"/>
+<polygon fill="#000000" stroke="#000000" points="122,-97.5001 132,-94 122,-90.5001 122,-97.5001"/>
+</g>
+<!-- table2 -->
+<g id="node3" class="node">
+<title>table2</title>
+<polygon fill="none" stroke="#000000" points="272.5,-104 272.5,-124 309.5,-124 309.5,-104 272.5,-104"/>
+<text text-anchor="start" x="275.4482" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">index</text>
+<polygon fill="none" stroke="#000000" points="309.5,-104 309.5,-124 345.5,-124 345.5,-104 309.5,-104"/>
+<text text-anchor="start" x="312.3413" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="272.5,-84 272.5,-104 309.5,-104 309.5,-84 272.5,-84"/>
+<text text-anchor="start" x="287.5" y="-89.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text>
+<polygon fill="none" stroke="#000000" points="309.5,-84 309.5,-104 345.5,-104 345.5,-84 309.5,-84"/>
+<text text-anchor="start" x="324" y="-89.8" font-family="Times,serif" font-size="14.00" fill="#000000">h</text>
+<polygon fill="none" stroke="#000000" points="272.5,-64 272.5,-84 309.5,-84 309.5,-64 272.5,-64"/>
+<text text-anchor="start" x="287.5" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text>
+<polygon fill="none" stroke="#000000" points="309.5,-64 309.5,-84 345.5,-84 345.5,-64 309.5,-64"/>
+<text text-anchor="start" x="324.3931" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">e</text>
+<polygon fill="none" stroke="#000000" points="272.5,-44 272.5,-64 309.5,-64 309.5,-44 272.5,-44"/>
+<text text-anchor="start" x="287.5" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">2</text>
+<polygon fill="none" stroke="#000000" points="309.5,-44 309.5,-64 345.5,-64 345.5,-44 309.5,-44"/>
+<text text-anchor="start" x="325.5552" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="272.5,-24 272.5,-44 309.5,-44 309.5,-24 272.5,-24"/>
+<text text-anchor="start" x="287.5" y="-29.8" font-family="Times,serif" font-size="14.00" fill="#000000">3</text>
+<polygon fill="none" stroke="#000000" points="309.5,-24 309.5,-44 345.5,-44 345.5,-24 309.5,-24"/>
+<text text-anchor="start" x="325.5552" y="-29.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="272.5,-4 272.5,-24 309.5,-24 309.5,-4 272.5,-4"/>
+<text text-anchor="start" x="287.5" y="-9.8" font-family="Times,serif" font-size="14.00" fill="#000000">4</text>
+<polygon fill="none" stroke="#000000" points="309.5,-4 309.5,-24 345.5,-24 345.5,-4 309.5,-4"/>
+<text text-anchor="start" x="324" y="-9.8" font-family="Times,serif" font-size="14.00" fill="#000000">o</text>
+</g>
+<!-- table1&#45;&gt;table2 -->
+<g id="edge1" class="edge">
+<title>table1:c&#45;&gt;table2:pointee</title>
+<path fill="none" stroke="#000000" d="M202,-94C202,-94 233.3406,-94 262.3797,-94"/>
+<polygon fill="#000000" stroke="#000000" points="262.5,-97.5001 272.5,-94 262.5,-90.5001 262.5,-97.5001"/>
+</g>
+</g>
+</svg>
diff --git a/src/doc/book/second-edition/src/img/trpl04-06.svg b/src/doc/book/second-edition/src/img/trpl04-06.svg
new file mode 100644
index 000000000..e64415fe4
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl04-06.svg
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: %3 Pages: 1 -->
+<svg
+ viewBox="0.00 0.00 1000.00 1279.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(4.1667 4.1667) rotate(0) translate(4 275)">
+<title>%3</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-275 233,-275 233,4 -4,4"/>
+<!-- table0 -->
+<g id="node1" class="node">
+<title>table0</title>
+<polyline fill="none" stroke="#000000" points="16,-121 88,-121 "/>
+<text text-anchor="start" x="35.6689" y="-126.8" font-family="Times,serif" font-size="14.00" fill="#000000">world</text>
+<polygon fill="none" stroke="#000000" points="16,-101 16,-121 52,-121 52,-101 16,-101"/>
+<text text-anchor="start" x="18.8413" y="-106.8" font-family="Times,serif" font-size="14.00" fill="#000000">name</text>
+<polygon fill="none" stroke="#000000" points="52,-101 52,-121 88,-121 88,-101 52,-101"/>
+<text text-anchor="start" x="54.8413" y="-106.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="16,-81 16,-101 52,-101 52,-81 16,-81"/>
+<text text-anchor="start" x="26.2241" y="-86.8" font-family="Times,serif" font-size="14.00" fill="#000000">ptr</text>
+<polygon fill="none" stroke="#000000" points="52,-81 52,-101 88,-101 88,-81 52,-81"/>
+<polygon fill="none" stroke="#000000" points="16,-61 16,-81 52,-81 52,-61 16,-61"/>
+<text text-anchor="start" x="25.4482" y="-66.8" font-family="Times,serif" font-size="14.00" fill="#000000">len</text>
+<polygon fill="none" stroke="#000000" points="52,-61 52,-81 88,-81 88,-61 52,-61"/>
+<text text-anchor="start" x="66.5" y="-66.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+</g>
+<!-- table4 -->
+<g id="node3" class="node">
+<title>table4</title>
+<polygon fill="none" stroke="#000000" points="148.5,-224 148.5,-244 185.5,-244 185.5,-224 148.5,-224"/>
+<text text-anchor="start" x="151.4482" y="-229.8" font-family="Times,serif" font-size="14.00" fill="#000000">index</text>
+<polygon fill="none" stroke="#000000" points="185.5,-224 185.5,-244 221.5,-244 221.5,-224 185.5,-224"/>
+<text text-anchor="start" x="188.3413" y="-229.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="148.5,-204 148.5,-224 185.5,-224 185.5,-204 148.5,-204"/>
+<text text-anchor="start" x="163.5" y="-209.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text>
+<polygon fill="none" stroke="#000000" points="185.5,-204 185.5,-224 221.5,-224 221.5,-204 185.5,-204"/>
+<text text-anchor="start" x="200" y="-209.8" font-family="Times,serif" font-size="14.00" fill="#000000">h</text>
+<polygon fill="none" stroke="#000000" points="148.5,-184 148.5,-204 185.5,-204 185.5,-184 148.5,-184"/>
+<text text-anchor="start" x="163.5" y="-189.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text>
+<polygon fill="none" stroke="#000000" points="185.5,-184 185.5,-204 221.5,-204 221.5,-184 185.5,-184"/>
+<text text-anchor="start" x="200.3931" y="-189.8" font-family="Times,serif" font-size="14.00" fill="#000000">e</text>
+<polygon fill="none" stroke="#000000" points="148.5,-164 148.5,-184 185.5,-184 185.5,-164 148.5,-164"/>
+<text text-anchor="start" x="163.5" y="-169.8" font-family="Times,serif" font-size="14.00" fill="#000000">2</text>
+<polygon fill="none" stroke="#000000" points="185.5,-164 185.5,-184 221.5,-184 221.5,-164 185.5,-164"/>
+<text text-anchor="start" x="201.5552" y="-169.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="148.5,-144 148.5,-164 185.5,-164 185.5,-144 148.5,-144"/>
+<text text-anchor="start" x="163.5" y="-149.8" font-family="Times,serif" font-size="14.00" fill="#000000">3</text>
+<polygon fill="none" stroke="#000000" points="185.5,-144 185.5,-164 221.5,-164 221.5,-144 185.5,-144"/>
+<text text-anchor="start" x="201.5552" y="-149.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="148.5,-124 148.5,-144 185.5,-144 185.5,-124 148.5,-124"/>
+<text text-anchor="start" x="163.5" y="-129.8" font-family="Times,serif" font-size="14.00" fill="#000000">4</text>
+<polygon fill="none" stroke="#000000" points="185.5,-124 185.5,-144 221.5,-144 221.5,-124 185.5,-124"/>
+<text text-anchor="start" x="200" y="-129.8" font-family="Times,serif" font-size="14.00" fill="#000000">o</text>
+<polygon fill="none" stroke="#000000" points="148.5,-104 148.5,-124 185.5,-124 185.5,-104 148.5,-104"/>
+<text text-anchor="start" x="163.5" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+<polygon fill="none" stroke="#000000" points="185.5,-104 185.5,-124 221.5,-124 221.5,-104 185.5,-104"/>
+<text text-anchor="start" x="201.75" y="-109.8" font-family="Times,serif" font-size="14.00" fill="#000000"> </text>
+<polygon fill="none" stroke="#000000" points="148.5,-84 148.5,-104 185.5,-104 185.5,-84 148.5,-84"/>
+<text text-anchor="start" x="163.5" y="-89.8" font-family="Times,serif" font-size="14.00" fill="#000000">6</text>
+<polygon fill="none" stroke="#000000" points="185.5,-84 185.5,-104 221.5,-104 221.5,-84 185.5,-84"/>
+<text text-anchor="start" x="198.4448" y="-89.8" font-family="Times,serif" font-size="14.00" fill="#000000">w</text>
+<polygon fill="none" stroke="#000000" points="148.5,-64 148.5,-84 185.5,-84 185.5,-64 148.5,-64"/>
+<text text-anchor="start" x="163.5" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">7</text>
+<polygon fill="none" stroke="#000000" points="185.5,-64 185.5,-84 221.5,-84 221.5,-64 185.5,-64"/>
+<text text-anchor="start" x="200" y="-69.8" font-family="Times,serif" font-size="14.00" fill="#000000">o</text>
+<polygon fill="none" stroke="#000000" points="148.5,-44 148.5,-64 185.5,-64 185.5,-44 148.5,-44"/>
+<text text-anchor="start" x="163.5" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">8</text>
+<polygon fill="none" stroke="#000000" points="185.5,-44 185.5,-64 221.5,-64 221.5,-44 185.5,-44"/>
+<text text-anchor="start" x="201.1689" y="-49.8" font-family="Times,serif" font-size="14.00" fill="#000000">r</text>
+<polygon fill="none" stroke="#000000" points="148.5,-24 148.5,-44 185.5,-44 185.5,-24 148.5,-24"/>
+<text text-anchor="start" x="163.5" y="-29.8" font-family="Times,serif" font-size="14.00" fill="#000000">9</text>
+<polygon fill="none" stroke="#000000" points="185.5,-24 185.5,-44 221.5,-44 221.5,-24 185.5,-24"/>
+<text text-anchor="start" x="201.5552" y="-29.8" font-family="Times,serif" font-size="14.00" fill="#000000">l</text>
+<polygon fill="none" stroke="#000000" points="148.5,-4 148.5,-24 185.5,-24 185.5,-4 148.5,-4"/>
+<text text-anchor="start" x="160" y="-9.8" font-family="Times,serif" font-size="14.00" fill="#000000">10</text>
+<polygon fill="none" stroke="#000000" points="185.5,-4 185.5,-24 221.5,-24 221.5,-4 185.5,-4"/>
+<text text-anchor="start" x="200" y="-9.8" font-family="Times,serif" font-size="14.00" fill="#000000">d</text>
+</g>
+<!-- table0&#45;&gt;table4 -->
+<g id="edge1" class="edge">
+<title>table0:c&#45;&gt;table4:pointee2</title>
+<path fill="none" stroke="#000000" d="M70,-91C70,-91 105.7964,-93.4639 138.4948,-93.9258"/>
+<polygon fill="#000000" stroke="#000000" points="138.4743,-97.4257 148.5,-94 138.5263,-90.4259 138.4743,-97.4257"/>
+</g>
+<!-- table3 -->
+<g id="node2" class="node">
+<title>table3</title>
+<polyline fill="none" stroke="#000000" points="8,-247 96,-247 "/>
+<text text-anchor="start" x="49.2759" y="-252.8" font-family="Times,serif" font-size="14.00" fill="#000000">s</text>
+<polygon fill="none" stroke="#000000" points="8,-227 8,-247 60,-247 60,-227 8,-227"/>
+<text text-anchor="start" x="18.8413" y="-232.8" font-family="Times,serif" font-size="14.00" fill="#000000">name</text>
+<polygon fill="none" stroke="#000000" points="60,-227 60,-247 96,-247 96,-227 60,-227"/>
+<text text-anchor="start" x="62.8413" y="-232.8" font-family="Times,serif" font-size="14.00" fill="#000000">value</text>
+<polygon fill="none" stroke="#000000" points="8,-207 8,-227 60,-227 60,-207 8,-207"/>
+<text text-anchor="start" x="26.2241" y="-212.8" font-family="Times,serif" font-size="14.00" fill="#000000">ptr</text>
+<polygon fill="none" stroke="#000000" points="60,-207 60,-227 96,-227 96,-207 60,-207"/>
+<polygon fill="none" stroke="#000000" points="8,-187 8,-207 60,-207 60,-187 8,-187"/>
+<text text-anchor="start" x="25.4482" y="-192.8" font-family="Times,serif" font-size="14.00" fill="#000000">len</text>
+<polygon fill="none" stroke="#000000" points="60,-187 60,-207 96,-207 96,-187 60,-187"/>
+<text text-anchor="start" x="71.2563" y="-192.8" font-family="Times,serif" font-size="14.00" fill="#000000">11</text>
+<polygon fill="none" stroke="#000000" points="8,-167 8,-187 60,-187 60,-167 8,-167"/>
+<text text-anchor="start" x="10.6826" y="-172.8" font-family="Times,serif" font-size="14.00" fill="#000000">capacity</text>
+<polygon fill="none" stroke="#000000" points="60,-167 60,-187 96,-187 96,-167 60,-167"/>
+<text text-anchor="start" x="71.2563" y="-172.8" font-family="Times,serif" font-size="14.00" fill="#000000">11</text>
+</g>
+<!-- table3&#45;&gt;table4 -->
+<g id="edge2" class="edge">
+<title>table3:c&#45;&gt;table4:pointee</title>
+<path fill="none" stroke="#000000" d="M78,-217C78,-217 109.3179,-214.5994 138.3725,-214.0931"/>
+<polygon fill="#000000" stroke="#000000" points="138.5326,-217.5918 148.5,-214 138.4682,-210.5921 138.5326,-217.5918"/>
+</g>
+</g>
+</svg>
diff --git a/src/doc/book/second-edition/src/img/trpl14-01.png b/src/doc/book/second-edition/src/img/trpl14-01.png
new file mode 100644
index 000000000..5fc59898c
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl14-01.png
Binary files differ
diff --git a/src/doc/book/second-edition/src/img/trpl14-02.png b/src/doc/book/second-edition/src/img/trpl14-02.png
new file mode 100644
index 000000000..78e7e7ba7
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl14-02.png
Binary files differ
diff --git a/src/doc/book/second-edition/src/img/trpl14-03.png b/src/doc/book/second-edition/src/img/trpl14-03.png
new file mode 100644
index 000000000..ef8414507
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl14-03.png
Binary files differ
diff --git a/src/doc/book/second-edition/src/img/trpl14-04.png b/src/doc/book/second-edition/src/img/trpl14-04.png
new file mode 100644
index 000000000..d0ed2ca18
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl14-04.png
Binary files differ
diff --git a/src/doc/book/second-edition/src/img/trpl15-01.svg b/src/doc/book/second-edition/src/img/trpl15-01.svg
new file mode 100644
index 000000000..bbeef968a
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl15-01.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: %3 Pages: 1 -->
+<svg
+ viewBox="0.00 0.00 1000.00 700.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(4.1667 4.1667) rotate(0) translate(4 156)">
+<title>%3</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-156 174,-156 174,4 -4,4"/>
+<!-- table0 -->
+<g id="node1" class="node">
+<title>table0</title>
+<polyline fill="none" stroke="#000000" points="8,-128 162,-128 "/>
+<text text-anchor="start" x="70.6069" y="-133.8" font-family="Times,serif" font-size="14.00" fill="#000000">Cons</text>
+<polygon fill="none" stroke="#000000" points="8,-4 8,-128 31,-128 31,-4 8,-4"/>
+<text text-anchor="start" x="10.5552" y="-61.8" font-family="Times,serif" font-size="14.00" fill="#000000">i32</text>
+<polygon fill="none" stroke="#000000" points="31,-4 31,-128 162,-128 162,-4 31,-4"/>
+<polyline fill="none" stroke="#000000" points="34,-105 159,-105 "/>
+<text text-anchor="start" x="82.1069" y="-110.8" font-family="Times,serif" font-size="14.00" fill="#000000">Cons</text>
+<polygon fill="none" stroke="#000000" points="34,-7 34,-105 57,-105 57,-7 34,-7"/>
+<text text-anchor="start" x="36.5552" y="-51.8" font-family="Times,serif" font-size="14.00" fill="#000000">i32</text>
+<polygon fill="none" stroke="#000000" points="57,-7 57,-105 159,-105 159,-7 57,-7"/>
+<polyline fill="none" stroke="#000000" points="60,-82 156,-82 "/>
+<text text-anchor="start" x="93.6069" y="-87.8" font-family="Times,serif" font-size="14.00" fill="#000000">Cons</text>
+<polygon fill="none" stroke="#000000" points="60,-10 60,-82 83,-82 83,-10 60,-10"/>
+<text text-anchor="start" x="62.5552" y="-41.8" font-family="Times,serif" font-size="14.00" fill="#000000">i32</text>
+<polygon fill="none" stroke="#000000" points="83,-10 83,-82 156,-82 156,-10 83,-10"/>
+<polyline fill="none" stroke="#000000" points="86,-59 153,-59 "/>
+<text text-anchor="start" x="105.1069" y="-64.8" font-family="Times,serif" font-size="14.00" fill="#000000">Cons</text>
+<polygon fill="none" stroke="#000000" points="86,-13 86,-59 109,-59 109,-13 86,-13"/>
+<text text-anchor="start" x="88.5552" y="-31.8" font-family="Times,serif" font-size="14.00" fill="#000000">i32</text>
+<polygon fill="none" stroke="#000000" points="109,-13 109,-59 153,-59 153,-13 109,-13"/>
+<polyline fill="none" stroke="#000000" points="112,-36 150,-36 "/>
+<text text-anchor="start" x="116.6069" y="-41.8" font-family="Times,serif" font-size="14.00" fill="#000000">Cons</text>
+<polygon fill="none" stroke="#000000" points="112,-16 112,-36 135,-36 135,-16 112,-16"/>
+<text text-anchor="start" x="114.5552" y="-21.8" font-family="Times,serif" font-size="14.00" fill="#000000">i32</text>
+<polygon fill="none" stroke="#000000" points="135,-16 135,-36 150,-36 150,-16 135,-16"/>
+<text text-anchor="start" x="137.5098" y="-21.8" font-family="Times,serif" font-size="14.00" fill="#000000">∞</text>
+</g>
+</g>
+</svg>
diff --git a/src/doc/book/second-edition/src/img/trpl15-02.svg b/src/doc/book/second-edition/src/img/trpl15-02.svg
new file mode 100644
index 000000000..4454df8c3
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl15-02.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: %3 Pages: 1 -->
+<svg width="250pt"
+ viewBox="0.00 0.00 363.00 342.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(4.1667 4.1667) rotate(0) translate(4 78)">
+<title>%3</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-78 83,-78 83,4 -4,4"/>
+<!-- table0 -->
+<g id="node1" class="node">
+<title>table0</title>
+<polyline fill="none" stroke="#000000" points="8.5,-50 71.5,-50 "/>
+<text text-anchor="start" x="25.6069" y="-55.8" font-family="Times,serif" font-size="14.00" fill="#000000">Cons</text>
+<polygon fill="none" stroke="#000000" points="8.5,-4 8.5,-50 31.5,-50 31.5,-4 8.5,-4"/>
+<text text-anchor="start" x="11.0552" y="-22.8" font-family="Times,serif" font-size="14.00" fill="#000000">i32</text>
+<polygon fill="none" stroke="#000000" points="31.5,-4 31.5,-50 71.5,-50 71.5,-4 31.5,-4"/>
+<polyline fill="none" stroke="#000000" points="34.5,-27 68.5,-27 "/>
+<text text-anchor="start" x="39.8311" y="-32.8" font-family="Times,serif" font-size="14.00" fill="#000000">Box</text>
+<polygon fill="none" stroke="#000000" points="34.5,-7 34.5,-27 68.5,-27 68.5,-7 34.5,-7"/>
+<text text-anchor="start" x="37.1172" y="-12.8" font-family="Times,serif" font-size="14.00" fill="#000000">usize</text>
+</g>
+</g>
+</svg>
diff --git a/src/doc/book/second-edition/src/img/trpl15-03.svg b/src/doc/book/second-edition/src/img/trpl15-03.svg
new file mode 100644
index 000000000..dbc3b5cdb
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl15-03.svg
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: %3 Pages: 1 -->
+ <svg width="750pt"
+ viewBox="0.00 0.00 2500 700" xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(4.1667 4.1667) rotate(0) translate(4 148)">
+<title>%3</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-148 418,-148 418,4 -4,4"/>
+<!-- table4 -->
+<g id="node1" class="node">
+<title>table4</title>
+<text text-anchor="start" x="21" y="-121.8" font-family="Times,serif" font-size="14.00" fill="#000000">b</text>
+</g>
+<!-- table5 -->
+<g id="node2" class="node">
+<title>table5</title>
+<polygon fill="none" stroke="#000000" points="104,-116 104,-136 117,-136 117,-116 104,-116"/>
+<text text-anchor="start" x="107" y="-121.8" font-family="Times,serif" font-size="14.00" fill="#000000">3</text>
+<polygon fill="none" stroke="#000000" points="117,-116 117,-136 130,-136 130,-116 117,-116"/>
+<text text-anchor="start" x="120" y="-121.8" font-family="Times,serif" font-size="14.00" fill="#000000"> &#160;</text>
+</g>
+<!-- table4&#45;&gt;table5 -->
+<g id="edge4" class="edge">
+<title>table4:c&#45;&gt;table5:pte4</title>
+<path fill="none" stroke="#000000" d="M34,-126C34,-126 65.1184,-126 93.9514,-126"/>
+<polygon fill="#000000" stroke="#000000" points="94,-129.5001 104,-126 94,-122.5001 94,-129.5001"/>
+</g>
+<!-- table1 -->
+<g id="node4" class="node">
+<title>table1</title>
+<polygon fill="none" stroke="#000000" points="194,-62 194,-82 207,-82 207,-62 194,-62"/>
+<text text-anchor="start" x="197" y="-67.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text>
+<polygon fill="none" stroke="#000000" points="207,-62 207,-82 220,-82 220,-62 207,-62"/>
+<text text-anchor="start" x="210" y="-67.8" font-family="Times,serif" font-size="14.00" fill="#000000"> &#160;</text>
+</g>
+<!-- table5&#45;&gt;table1 -->
+<g id="edge5" class="edge">
+<title>table5:c&#45;&gt;table1:pte0</title>
+<path fill="none" stroke="#000000" d="M124,-126C124,-126 149.4376,-81.2672 183.6334,-73.2293"/>
+<polygon fill="#000000" stroke="#000000" points="184.4818,-76.6533 194,-72 183.6574,-69.702 184.4818,-76.6533"/>
+</g>
+<!-- table0 -->
+<g id="node3" class="node">
+<title>table0</title>
+<text text-anchor="start" x="110.8931" y="-67.8" font-family="Times,serif" font-size="14.00" fill="#000000">a</text>
+</g>
+<!-- table0&#45;&gt;table1 -->
+<g id="edge1" class="edge">
+<title>table0:c&#45;&gt;table1:pte0</title>
+<path fill="none" stroke="#000000" d="M123,-72C123,-72 154.5629,-72 183.8079,-72"/>
+<polygon fill="#000000" stroke="#000000" points="184,-75.5001 194,-72 184,-68.5001 184,-75.5001"/>
+</g>
+<!-- table2 -->
+<g id="node5" class="node">
+<title>table2</title>
+<polygon fill="none" stroke="#000000" points="281,-62 281,-82 301,-82 301,-62 281,-62"/>
+<text text-anchor="start" x="284" y="-67.8" font-family="Times,serif" font-size="14.00" fill="#000000">10</text>
+<polygon fill="none" stroke="#000000" points="301,-62 301,-82 314,-82 314,-62 301,-62"/>
+<text text-anchor="start" x="304" y="-67.8" font-family="Times,serif" font-size="14.00" fill="#000000"> &#160;</text>
+</g>
+<!-- table1&#45;&gt;table2 -->
+<g id="edge2" class="edge">
+<title>table1:c&#45;&gt;table2:pte1</title>
+<path fill="none" stroke="#000000" d="M214,-72C214,-72 243.2667,-72 270.6585,-72"/>
+<polygon fill="#000000" stroke="#000000" points="271,-75.5001 281,-72 271,-68.5001 271,-75.5001"/>
+</g>
+<!-- table3 -->
+<g id="node6" class="node">
+<title>table3</title>
+<polygon fill="none" stroke="#000000" points="376,-62 376,-82 399,-82 399,-62 376,-62"/>
+<text text-anchor="start" x="378.5552" y="-67.8" font-family="Times,serif" font-size="14.00" fill="#000000">Nil</text>
+</g>
+<!-- table2&#45;&gt;table3 -->
+<g id="edge3" class="edge">
+<title>table2:c&#45;&gt;table3:pte2</title>
+<path fill="none" stroke="#000000" d="M308,-72C308,-72 341.8867,-72 365.5509,-72"/>
+<polygon fill="#000000" stroke="#000000" points="365.8498,-75.5001 375.8497,-72 365.8497,-68.5001 365.8498,-75.5001"/>
+</g>
+<!-- table6 -->
+<g id="node7" class="node">
+<title>table6</title>
+<text text-anchor="start" x="20.8931" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">c</text>
+</g>
+<!-- table7 -->
+<g id="node8" class="node">
+<title>table7</title>
+<polygon fill="none" stroke="#000000" points="104,-8 104,-28 117,-28 117,-8 104,-8"/>
+<text text-anchor="start" x="107" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">4</text>
+<polygon fill="none" stroke="#000000" points="117,-8 117,-28 130,-28 130,-8 117,-8"/>
+<text text-anchor="start" x="120" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000"> &#160;</text>
+</g>
+<!-- table6&#45;&gt;table7 -->
+<g id="edge6" class="edge">
+<title>table6:c&#45;&gt;table7:pte6</title>
+<path fill="none" stroke="#000000" d="M33,-18C33,-18 64.5629,-18 93.8079,-18"/>
+<polygon fill="#000000" stroke="#000000" points="94,-21.5001 104,-18 94,-14.5001 94,-21.5001"/>
+</g>
+<!-- table7&#45;&gt;table1 -->
+<g id="edge7" class="edge">
+<title>table7:c&#45;&gt;table1:pte0</title>
+<path fill="none" stroke="#000000" d="M124,-18C124,-18 149.4376,-62.7328 183.6334,-70.7707"/>
+<polygon fill="#000000" stroke="#000000" points="183.6574,-74.298 194,-72 184.4818,-67.3467 183.6574,-74.298"/>
+</g>
+</g>
+</svg>
diff --git a/src/doc/book/second-edition/src/img/trpl15-04.svg b/src/doc/book/second-edition/src/img/trpl15-04.svg
new file mode 100644
index 000000000..96ad98ca1
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl15-04.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.36.0 (20140111.2315)
+ -->
+<!-- Title: %3 Pages: 1 -->
+<svg width="633pt" height="498pt" viewBox="0.00 0.00 633.33 498.19" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(4.16667 4.16667) rotate(0) translate(4 115.566)">
+<title>%3</title>
+<polygon fill="white" stroke="none" points="-4,4 -4,-115.566 148,-115.566 148,4 -4,4"/>
+<!-- table0 -->
+<g id="node2" class="node"><title>table0</title>
+<polygon fill="none" stroke="black" points="0,-75.5656 0,-111.566 54,-111.566 54,-75.5656 0,-75.5656"/>
+<text text-anchor="middle" x="27" y="-89.8656" font-family="Times,serif" font-size="14.00">a</text>
+</g>
+<!-- table1 -->
+<g id="node4" class="node"><title>table1</title>
+<polygon fill="none" stroke="black" points="90,-75.5656 90,-111.566 144,-111.566 144,-75.5656 90,-75.5656"/>
+<text text-anchor="middle" x="104" y="-89.8656" font-family="Times,serif" font-size="14.00">5</text>
+<polyline fill="none" stroke="black" points="118,-75.5656 118,-111.566 "/>
+<text text-anchor="middle" x="131" y="-89.8656" font-family="Times,serif" font-size="14.00"> </text>
+</g>
+<!-- table2 -->
+<g id="node3" class="node"><title>table2</title>
+<polygon fill="none" stroke="black" points="90,-20.5656 90,-56.5656 144,-56.5656 144,-20.5656 90,-20.5656"/>
+<text text-anchor="middle" x="117" y="-34.8656" font-family="Times,serif" font-size="14.00">b</text>
+</g>
+<!-- table3 -->
+<g id="node1" class="node"><title>table3</title>
+<polygon fill="none" stroke="black" points="0,-20.5656 0,-56.5656 54,-56.5656 54,-20.5656 0,-20.5656"/>
+<text text-anchor="middle" x="16" y="-34.8656" font-family="Times,serif" font-size="14.00">10</text>
+<polyline fill="none" stroke="black" points="32,-20.5656 32,-56.5656 "/>
+<text text-anchor="middle" x="43" y="-34.8656" font-family="Times,serif" font-size="14.00"> </text>
+</g>
+<!-- table0&#45;&gt;table1 -->
+<g id="edge1" class="edge"><title>table0:ref-&gt;table1:data</title>
+<path fill="none" stroke="black" d="M54,-93.5656C66,-93.5656 71.25,-93.5656 78.875,-93.5656"/>
+<polygon fill="black" stroke="black" points="79,-97.0657 89,-93.5656 79,-90.0657 79,-97.0657"/>
+</g>
+<!-- table1&#45;&gt;table2 -->
+<g id="edge2" class="edge"><title>table1:ref-&gt;table2:data</title>
+<path fill="none" stroke="black" d="M123.1403,-65.1315C127.6523,-67.3402 133,-68.812 133,-75"/>
+<polygon fill="black" stroke="black" points="120.233,-67.0895 117,-57 125.8193,-62.8712 120.233,-67.0895"/>
+</g>
+<!-- table2&#45;&gt;table3 -->
+<g id="edge3" class="edge"><title>table2:ref-&gt;table3:data</title>
+<path fill="none" stroke="black" d="M117,-20.5656C117,2.6957 43.7375,5.56532 21.2401,-10.9567"/>
+<polygon fill="black" stroke="black" points="18.2098,-9.20375 16,-19.5656 24.1892,-12.8434 18.2098,-9.20375"/>
+</g>
+<!-- table3&#45;&gt;table0 -->
+<g id="edge4" class="edge"><title>table3:ref-&gt;table0:data</title>
+<path fill="none" stroke="black" d="M33.1409,-66.8685C37.6523,-64.6598 43,-63.188 43,-57"/>
+<polygon fill="black" stroke="black" points="30.233,-64.9105 27,-75 35.8193,-69.1288 30.233,-64.9105"/>
+</g>
+</g>
+</svg>
diff --git a/src/doc/book/second-edition/src/img/trpl20-01.png b/src/doc/book/second-edition/src/img/trpl20-01.png
new file mode 100644
index 000000000..19e2cbc0a
--- /dev/null
+++ b/src/doc/book/second-edition/src/img/trpl20-01.png
Binary files differ