diff --git a/testdata/umldoc-ref/allclasses-frame.html b/testdata/umldoc-ref/allclasses-frame.html
new file mode 100644
index 0000000..d14ac02
--- /dev/null
+++ b/testdata/umldoc-ref/allclasses-frame.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+All Classes
+
+
+
+
+
+
+
+
+
+
+All Classes
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/allclasses-noframe.html b/testdata/umldoc-ref/allclasses-noframe.html
new file mode 100644
index 0000000..e2b4491
--- /dev/null
+++ b/testdata/umldoc-ref/allclasses-noframe.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+All Classes
+
+
+
+
+
+
+
+
+
+
+All Classes
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/constant-values.html b/testdata/umldoc-ref/constant-values.html
new file mode 100644
index 0000000..8f8165b
--- /dev/null
+++ b/testdata/umldoc-ref/constant-values.html
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+Constant Field Values
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constant Field Values
+
+
+Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/deprecated-list.html b/testdata/umldoc-ref/deprecated-list.html
new file mode 100644
index 0000000..79beba8
--- /dev/null
+++ b/testdata/umldoc-ref/deprecated-list.html
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+Deprecated List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Deprecated API
+
+
+Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/gr/spinellis/invoice/Customer.dot b/testdata/umldoc-ref/gr/spinellis/invoice/Customer.dot
new file mode 100644
index 0000000..da0ad92
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/invoice/Customer.dot
@@ -0,0 +1,21 @@
+#!/usr/local/bin/dot
+#
+# Class diagram
+# Generated by UmlGraph version 4.4 (http://www.spinellis.gr/sw/umlgraph)
+#
+
+digraph G {
+ edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
+ node [fontname="Helvetica",fontsize=10,shape=plaintext];
+ // gr.spinellis.invoice.Invoice
+ c41 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.invoice.Customer
+ c42 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.invoice.Invoice navassoc gr.spinellis.invoice.Customer
+ c41:p -> c42:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.invoice.Customer navassoc java.lang.String
+ c42:p -> c45:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // java.lang.String
+ c45 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+}
+
diff --git a/testdata/umldoc-ref/gr/spinellis/invoice/Customer.html b/testdata/umldoc-ref/gr/spinellis/invoice/Customer.html
new file mode 100644
index 0000000..d1cdffe
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/invoice/Customer.html
@@ -0,0 +1,261 @@
+
+
+
+
+
+
+Customer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+gr.spinellis.invoice
+
+Class Customer
+
+
+
+
+
+
+
+java.lang.Object
+ gr.spinellis.invoice.Customer
+
+
+
+public class Customer extends java.lang.Object
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+
+
+(package private) java.lang.String
+name
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+Customer ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods inherited from class java.lang.Object
+
+
+clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+
+
+
+
+
+
+
+
+
+
+
+name
+
+java.lang.String name
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+Customer
+
+public Customer ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/gr/spinellis/invoice/Invoice.dot b/testdata/umldoc-ref/gr/spinellis/invoice/Invoice.dot
new file mode 100644
index 0000000..c56b078
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/invoice/Invoice.dot
@@ -0,0 +1,31 @@
+#!/usr/local/bin/dot
+#
+# Class diagram
+# Generated by UmlGraph version 4.4 (http://www.spinellis.gr/sw/umlgraph)
+#
+
+digraph G {
+ edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
+ node [fontname="Helvetica",fontsize=10,shape=plaintext];
+ // gr.spinellis.invoice.InvoiceItem
+ c34 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.invoice.Invoice
+ c35 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.invoice.Customer
+ c36 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.product.Product
+ c37 [label=< Product gr.spinellis.product
>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.invoice.InvoiceItem navassoc gr.spinellis.product.Product
+ c34:p -> c37:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.invoice.Invoice navassoc gr.spinellis.invoice.InvoiceItem
+ c35:p -> c34:p [taillabel="", label="", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.invoice.Invoice navassoc gr.spinellis.invoice.Customer
+ c35:p -> c36:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.invoice.Invoice navassoc java.util.Date
+ c35:p -> c39:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.invoice.Invoice depend gr.spinellis.product.Product
+ c35:p -> c37:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed];
+ // java.util.Date
+ c39 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+}
+
diff --git a/testdata/umldoc-ref/gr/spinellis/invoice/Invoice.html b/testdata/umldoc-ref/gr/spinellis/invoice/Invoice.html
new file mode 100644
index 0000000..4bad691
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/invoice/Invoice.html
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+Invoice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+gr.spinellis.invoice
+
+Class Invoice
+
+
+
+
+
+
+
+
+
+java.lang.Object
+ gr.spinellis.invoice.Invoice
+
+
+
+public class Invoice extends java.lang.Object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+Invoice ()
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+ void
+addItem (Product p,
+ int quantity)
+
+
+
+
+
+
+
+
+Methods inherited from class java.lang.Object
+
+
+clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+
+
+
+
+
+
+
+
+
+
+
+total
+
+public double total
+
+
+
+
+
+
+
+items
+
+public InvoiceItem [] items
+
+
+
+
+
+
+
+customer
+
+public Customer customer
+
+
+
+
+
+
+
+invoiceDate
+
+public java.util.Date invoiceDate
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+Invoice
+
+public Invoice ()
+
+
+
+
+
+
+
+
+
+addItem
+
+public void addItem (Product p,
+ int quantity)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/gr/spinellis/invoice/InvoiceItem.dot b/testdata/umldoc-ref/gr/spinellis/invoice/InvoiceItem.dot
new file mode 100644
index 0000000..493f9fb
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/invoice/InvoiceItem.dot
@@ -0,0 +1,23 @@
+#!/usr/local/bin/dot
+#
+# Class diagram
+# Generated by UmlGraph version 4.4 (http://www.spinellis.gr/sw/umlgraph)
+#
+
+digraph G {
+ edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
+ node [fontname="Helvetica",fontsize=10,shape=plaintext];
+ // gr.spinellis.invoice.InvoiceItem
+ c12 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.invoice.Invoice
+ c16 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.product.Product
+ c20 [label=< Product gr.spinellis.product
>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.invoice.InvoiceItem navassoc gr.spinellis.product.Product
+ c12:p -> c20:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.invoice.Invoice navassoc gr.spinellis.invoice.InvoiceItem
+ c16:p -> c12:p [taillabel="", label="", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.invoice.Invoice depend gr.spinellis.product.Product
+ c16:p -> c20:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed];
+}
+
diff --git a/testdata/umldoc-ref/gr/spinellis/invoice/InvoiceItem.html b/testdata/umldoc-ref/gr/spinellis/invoice/InvoiceItem.html
new file mode 100644
index 0000000..89c68bb
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/invoice/InvoiceItem.html
@@ -0,0 +1,279 @@
+
+
+
+
+
+
+InvoiceItem
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+gr.spinellis.invoice
+
+Class InvoiceItem
+
+
+
+
+
+
+
+java.lang.Object
+ gr.spinellis.invoice.InvoiceItem
+
+
+
+public class InvoiceItem extends java.lang.Object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods inherited from class java.lang.Object
+
+
+clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+
+
+
+
+
+
+
+
+
+
+
+product
+
+public Product product
+
+
+
+
+
+
+
+quantity
+
+public int quantity
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+InvoiceItem
+
+public InvoiceItem ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/gr/spinellis/invoice/gr.spinellis.invoice.dot b/testdata/umldoc-ref/gr/spinellis/invoice/gr.spinellis.invoice.dot
new file mode 100644
index 0000000..ae55a08
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/invoice/gr.spinellis.invoice.dot
@@ -0,0 +1,21 @@
+#!/usr/local/bin/dot
+#
+# Class diagram
+# Generated by UmlGraph version 4.4 (http://www.spinellis.gr/sw/umlgraph)
+#
+
+digraph G {
+ edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
+ node [fontname="Helvetica",fontsize=10,shape=plaintext];
+ // gr.spinellis.invoice.InvoiceItem
+ c0 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.invoice.Invoice
+ c1 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.invoice.Customer
+ c2 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.invoice.Invoice navassoc gr.spinellis.invoice.InvoiceItem
+ c1:p -> c0:p [taillabel="", label="", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.invoice.Invoice navassoc gr.spinellis.invoice.Customer
+ c1:p -> c2:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+}
+
diff --git a/testdata/umldoc-ref/gr/spinellis/invoice/package-frame.html b/testdata/umldoc-ref/gr/spinellis/invoice/package-frame.html
new file mode 100644
index 0000000..a9a9b0d
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/invoice/package-frame.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+gr.spinellis.invoice
+
+
+
+
+
+
+
+
+
+
+
+gr.spinellis.invoice
+
+
+
+
+
diff --git a/testdata/umldoc-ref/gr/spinellis/invoice/package-summary.html b/testdata/umldoc-ref/gr/spinellis/invoice/package-summary.html
new file mode 100644
index 0000000..f49a1f4
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/invoice/package-summary.html
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+gr.spinellis.invoice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Package gr.spinellis.invoice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/gr/spinellis/invoice/package-tree.html b/testdata/umldoc-ref/gr/spinellis/invoice/package-tree.html
new file mode 100644
index 0000000..97bc9cd
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/invoice/package-tree.html
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+gr.spinellis.invoice Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hierarchy For Package gr.spinellis.invoice
+
+
+
+Package Hierarchies: All Packages
+
+
+Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/gr/spinellis/product/Category.dot b/testdata/umldoc-ref/gr/spinellis/product/Category.dot
new file mode 100644
index 0000000..630ea8d
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/product/Category.dot
@@ -0,0 +1,25 @@
+#!/usr/local/bin/dot
+#
+# Class diagram
+# Generated by UmlGraph version 4.4 (http://www.spinellis.gr/sw/umlgraph)
+#
+
+digraph G {
+ edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
+ node [fontname="Helvetica",fontsize=10,shape=plaintext];
+ // gr.spinellis.product.Product
+ c59 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.product.Category
+ c60 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.product.Product navassoc java.lang.String
+ c59:p -> c61:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.product.Product navassoc gr.spinellis.product.Category
+ c59:p -> c60:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.product.Category navassoc java.lang.String
+ c60:p -> c61:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.product.Category navassoc gr.spinellis.product.Product
+ c60:p -> c59:p [taillabel="", label="", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // java.lang.String
+ c61 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+}
+
diff --git a/testdata/umldoc-ref/gr/spinellis/product/Category.html b/testdata/umldoc-ref/gr/spinellis/product/Category.html
new file mode 100644
index 0000000..48c10b6
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/product/Category.html
@@ -0,0 +1,279 @@
+
+
+
+
+
+
+Category
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+gr.spinellis.product
+
+Class Category
+
+
+
+
+
+
+
+java.lang.Object
+ gr.spinellis.product.Category
+
+
+
+public class Category extends java.lang.Object
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+
+
+ java.lang.String
+name
+
+
+
+
+
+
+(package private) java.util.List<Product >
+products
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+Category ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods inherited from class java.lang.Object
+
+
+clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+
+
+
+
+
+
+
+
+
+
+
+name
+
+public java.lang.String name
+
+
+
+
+
+
+
+products
+
+java.util.List<Product > products
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+Category
+
+public Category ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/gr/spinellis/product/Product.dot b/testdata/umldoc-ref/gr/spinellis/product/Product.dot
new file mode 100644
index 0000000..a236946
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/product/Product.dot
@@ -0,0 +1,35 @@
+#!/usr/local/bin/dot
+#
+# Class diagram
+# Generated by UmlGraph version 4.4 (http://www.spinellis.gr/sw/umlgraph)
+#
+
+digraph G {
+ edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
+ node [fontname="Helvetica",fontsize=10,shape=plaintext];
+ // gr.spinellis.invoice.InvoiceItem
+ c46 [label=< InvoiceItem gr.spinellis.invoice
>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.invoice.Invoice
+ c47 [label=< Invoice gr.spinellis.invoice
>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.product.Product
+ c49 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.product.Category
+ c50 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.invoice.InvoiceItem navassoc gr.spinellis.product.Product
+ c46:p -> c49:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.invoice.Invoice navassoc gr.spinellis.invoice.InvoiceItem
+ c47:p -> c46:p [taillabel="", label="", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.product.Product navassoc java.lang.String
+ c49:p -> c51:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.product.Product navassoc gr.spinellis.product.Category
+ c49:p -> c50:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.product.Category navassoc java.lang.String
+ c50:p -> c51:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.product.Category navassoc gr.spinellis.product.Product
+ c50:p -> c49:p [taillabel="", label="", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.invoice.Invoice depend gr.spinellis.product.Product
+ c47:p -> c49:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed];
+ // java.lang.String
+ c51 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+}
+
diff --git a/testdata/umldoc-ref/gr/spinellis/product/Product.html b/testdata/umldoc-ref/gr/spinellis/product/Product.html
new file mode 100644
index 0000000..d9b4e7f
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/product/Product.html
@@ -0,0 +1,317 @@
+
+
+
+
+
+
+Product
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+gr.spinellis.product
+
+Class Product
+
+
+
+
+
+
+
+
+
+java.lang.Object
+ gr.spinellis.product.Product
+
+
+
+public class Product extends java.lang.Object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+Product ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods inherited from class java.lang.Object
+
+
+clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+
+
+
+
+
+
+
+
+
+
+
+name
+
+public java.lang.String name
+
+
+
+
+
+
+
+stock
+
+public int stock
+
+
+
+
+
+
+
+price
+
+public double price
+
+
+
+
+
+
+
+category
+
+public Category category
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+Product
+
+public Product ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/gr/spinellis/product/gr.spinellis.product.dot b/testdata/umldoc-ref/gr/spinellis/product/gr.spinellis.product.dot
new file mode 100644
index 0000000..c73e577
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/product/gr.spinellis.product.dot
@@ -0,0 +1,19 @@
+#!/usr/local/bin/dot
+#
+# Class diagram
+# Generated by UmlGraph version 4.4 (http://www.spinellis.gr/sw/umlgraph)
+#
+
+digraph G {
+ edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
+ node [fontname="Helvetica",fontsize=10,shape=plaintext];
+ // gr.spinellis.product.Product
+ c8 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.product.Category
+ c9 [label=<>, fontname="Helvetica", fontcolor="black", fontsize=10.0];
+ // gr.spinellis.product.Product navassoc gr.spinellis.product.Category
+ c8:p -> c9:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+ // gr.spinellis.product.Category navassoc gr.spinellis.product.Product
+ c9:p -> c8:p [taillabel="", label="", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
+}
+
diff --git a/testdata/umldoc-ref/gr/spinellis/product/package-frame.html b/testdata/umldoc-ref/gr/spinellis/product/package-frame.html
new file mode 100644
index 0000000..2f7271e
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/product/package-frame.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+gr.spinellis.product
+
+
+
+
+
+
+
+
+
+
+
+gr.spinellis.product
+
+
+
+
+
diff --git a/testdata/umldoc-ref/gr/spinellis/product/package-summary.html b/testdata/umldoc-ref/gr/spinellis/product/package-summary.html
new file mode 100644
index 0000000..cf5a4ee
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/product/package-summary.html
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+gr.spinellis.product
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Package gr.spinellis.product
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/gr/spinellis/product/package-tree.html b/testdata/umldoc-ref/gr/spinellis/product/package-tree.html
new file mode 100644
index 0000000..b25027a
--- /dev/null
+++ b/testdata/umldoc-ref/gr/spinellis/product/package-tree.html
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+gr.spinellis.product Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hierarchy For Package gr.spinellis.product
+
+
+
+Package Hierarchies: All Packages
+
+
+Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/help-doc.html b/testdata/umldoc-ref/help-doc.html
new file mode 100644
index 0000000..d95eba8
--- /dev/null
+++ b/testdata/umldoc-ref/help-doc.html
@@ -0,0 +1,213 @@
+
+
+
+
+
+
+API Help
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+How This API Document Is Organized
+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+Overview
+
+
+
+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.
+
+Package
+
+
+
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:
+Interfaces (italic) Classes Enums Exceptions Errors Annotation Types
+
+
+Class/Interface
+
+
+
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:
+Class inheritance diagram Direct Subclasses All Known Subinterfaces All Known Implementing Classes Class/interface declaration Class/interface description
+
+
Nested Class Summary Field Summary Constructor Summary Method Summary
+
+
Field Detail Constructor Detail Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+
+
+Annotation Type
+
+
+
+Each annotation type has its own separate page with the following sections:
+Annotation Type declaration Annotation Type description Required Element Summary Optional Element Summary Element Detail
+
+
+
+Enum
+
+
+
+Each enum has its own separate page with the following sections:
+Enum declaration Enum description Enum Constant Summary Enum Constant Detail
+
+
+Tree (Class Hierarchy)
+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
+When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages. When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+
+Deprecated API
+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+
+Index
+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+
+Prev/Next
+These links take you to the next or previous class, interface, package, or related page.
+Frames/No Frames
+These links show and hide the HTML frames. All pages are available with or without frames.
+
+
+Serialized Form
+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.
+
+
+Constant Field Values
+The Constant Field Values page lists the static final fields and their values.
+
+
+
+This help file applies to API documentation generated using the standard doclet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/index-all.html b/testdata/umldoc-ref/index-all.html
new file mode 100644
index 0000000..7ed8499
--- /dev/null
+++ b/testdata/umldoc-ref/index-all.html
@@ -0,0 +1,233 @@
+
+
+
+
+
+
+Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+A C G I N P Q S T
+
+A
+
+addItem(Product, int) -
+Method in class gr.spinellis.invoice.Invoice
+
+
+
+
+C
+
+Category - Class in gr.spinellis.product Category() -
+Constructor for class gr.spinellis.product.Category
+
+ category -
+Variable in class gr.spinellis.product.Product
+
+ Customer - Class in gr.spinellis.invoice Customer() -
+Constructor for class gr.spinellis.invoice.Customer
+
+ customer -
+Variable in class gr.spinellis.invoice.Invoice
+
+
+
+
+G
+
+gr.spinellis.invoice - package gr.spinellis.invoice gr.spinellis.product - package gr.spinellis.product
+
+
+I
+
+Invoice - Class in gr.spinellis.invoice Invoice() -
+Constructor for class gr.spinellis.invoice.Invoice
+
+ invoiceDate -
+Variable in class gr.spinellis.invoice.Invoice
+
+ InvoiceItem - Class in gr.spinellis.invoice InvoiceItem() -
+Constructor for class gr.spinellis.invoice.InvoiceItem
+
+ items -
+Variable in class gr.spinellis.invoice.Invoice
+
+
+
+
+N
+
+name -
+Variable in class gr.spinellis.invoice.Customer
+
+ name -
+Variable in class gr.spinellis.product.Category
+
+ name -
+Variable in class gr.spinellis.product.Product
+
+
+
+
+P
+
+price -
+Variable in class gr.spinellis.product.Product
+
+ product -
+Variable in class gr.spinellis.invoice.InvoiceItem
+
+ Product - Class in gr.spinellis.product Product() -
+Constructor for class gr.spinellis.product.Product
+
+ products -
+Variable in class gr.spinellis.product.Category
+
+
+
+
+Q
+
+quantity -
+Variable in class gr.spinellis.invoice.InvoiceItem
+
+
+
+
+S
+
+stock -
+Variable in class gr.spinellis.product.Product
+
+
+
+
+T
+
+total -
+Variable in class gr.spinellis.invoice.Invoice
+
+
+
+A C G I N P Q S T
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/index.html b/testdata/umldoc-ref/index.html
new file mode 100644
index 0000000..236831b
--- /dev/null
+++ b/testdata/umldoc-ref/index.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+Generated Documentation (Untitled)
+
+
+
+
+
+
+
+
+
+
+
+
+
+Frame Alert
+
+
+This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+
+Link toNon-frame version.
+
+
+
diff --git a/testdata/umldoc-ref/overview-frame.html b/testdata/umldoc-ref/overview-frame.html
new file mode 100644
index 0000000..3719661
--- /dev/null
+++ b/testdata/umldoc-ref/overview-frame.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/overview-summary.html b/testdata/umldoc-ref/overview-summary.html
new file mode 100644
index 0000000..3fb3e53
--- /dev/null
+++ b/testdata/umldoc-ref/overview-summary.html
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/overview-tree.html b/testdata/umldoc-ref/overview-tree.html
new file mode 100644
index 0000000..303c365
--- /dev/null
+++ b/testdata/umldoc-ref/overview-tree.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hierarchy For All Packages
+
+
+Package Hierarchies: gr.spinellis.invoice , gr.spinellis.product
+
+
+Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testdata/umldoc-ref/package-list b/testdata/umldoc-ref/package-list
new file mode 100644
index 0000000..b1373f2
--- /dev/null
+++ b/testdata/umldoc-ref/package-list
@@ -0,0 +1,2 @@
+gr.spinellis.invoice
+gr.spinellis.product