From cb50b1d8de842ba1ba9fa5e5dc3057c72e765262 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=B6ren=20Henning?= <stu114708@informatik.uni-kiel.de>
Date: Thu, 25 Feb 2016 12:19:21 +0100
Subject: [PATCH] add generated jaxb classes

---
 .../graphml/DataExtensionType.java            |  85 ++++
 src/org/graphdrawing/graphml/DataType.java    | 140 +++++++
 src/org/graphdrawing/graphml/DefaultType.java |  47 +++
 src/org/graphdrawing/graphml/EdgeType.java    | 309 ++++++++++++++
 .../graphdrawing/graphml/EndpointType.java    | 194 +++++++++
 .../graphml/EndpointTypeType.java             |  61 +++
 .../graphml/GraphEdgedefaultType.java         |  58 +++
 .../graphml/GraphEdgeidsType.java             |  58 +++
 .../graphml/GraphNodeidsType.java             |  58 +++
 .../graphdrawing/graphml/GraphOrderType.java  |  61 +++
 src/org/graphdrawing/graphml/GraphType.java   | 396 ++++++++++++++++++
 src/org/graphdrawing/graphml/GraphmlType.java | 150 +++++++
 .../graphdrawing/graphml/HyperedgeType.java   | 176 ++++++++
 src/org/graphdrawing/graphml/KeyForType.java  |  76 ++++
 src/org/graphdrawing/graphml/KeyType.java     | 249 +++++++++++
 src/org/graphdrawing/graphml/KeyTypeType.java |  70 ++++
 src/org/graphdrawing/graphml/LocatorType.java | 108 +++++
 src/org/graphdrawing/graphml/NodeType.java    | 260 ++++++++++++
 .../graphdrawing/graphml/ObjectFactory.java   | 258 ++++++++++++
 src/org/graphdrawing/graphml/PortType.java    | 149 +++++++
 .../graphdrawing/graphml/package-info.java    |   9 +
 21 files changed, 2972 insertions(+)
 create mode 100644 src/org/graphdrawing/graphml/DataExtensionType.java
 create mode 100644 src/org/graphdrawing/graphml/DataType.java
 create mode 100644 src/org/graphdrawing/graphml/DefaultType.java
 create mode 100644 src/org/graphdrawing/graphml/EdgeType.java
 create mode 100644 src/org/graphdrawing/graphml/EndpointType.java
 create mode 100644 src/org/graphdrawing/graphml/EndpointTypeType.java
 create mode 100644 src/org/graphdrawing/graphml/GraphEdgedefaultType.java
 create mode 100644 src/org/graphdrawing/graphml/GraphEdgeidsType.java
 create mode 100644 src/org/graphdrawing/graphml/GraphNodeidsType.java
 create mode 100644 src/org/graphdrawing/graphml/GraphOrderType.java
 create mode 100644 src/org/graphdrawing/graphml/GraphType.java
 create mode 100644 src/org/graphdrawing/graphml/GraphmlType.java
 create mode 100644 src/org/graphdrawing/graphml/HyperedgeType.java
 create mode 100644 src/org/graphdrawing/graphml/KeyForType.java
 create mode 100644 src/org/graphdrawing/graphml/KeyType.java
 create mode 100644 src/org/graphdrawing/graphml/KeyTypeType.java
 create mode 100644 src/org/graphdrawing/graphml/LocatorType.java
 create mode 100644 src/org/graphdrawing/graphml/NodeType.java
 create mode 100644 src/org/graphdrawing/graphml/ObjectFactory.java
 create mode 100644 src/org/graphdrawing/graphml/PortType.java
 create mode 100644 src/org/graphdrawing/graphml/package-info.java

diff --git a/src/org/graphdrawing/graphml/DataExtensionType.java b/src/org/graphdrawing/graphml/DataExtensionType.java
new file mode 100644
index 00000000..36d3d5ed
--- /dev/null
+++ b/src/org/graphdrawing/graphml/DataExtensionType.java
@@ -0,0 +1,85 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * 
+ *       Extension mechanism for the content of <data> and <default>.
+ *       The complex type data-extension.type is empty per default.
+ *       Users may redefine this type in order to add content to 
+ *       the complex types data.type and default.type which are 
+ *       extensions of data-extension.type.
+ *     
+ * 
+ * <p>Java class for data-extension.type complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="data-extension.type">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "data-extension.type", propOrder = {
+    "content"
+})
+@XmlSeeAlso({
+    DefaultType.class,
+    DataType.class
+})
+public class DataExtensionType {
+
+    @XmlValue
+    protected String content;
+
+    /**
+     * 
+     *       Extension mechanism for the content of <data> and <default>.
+     *       The complex type data-extension.type is empty per default.
+     *       Users may redefine this type in order to add content to 
+     *       the complex types data.type and default.type which are 
+     *       extensions of data-extension.type.
+     *     
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getContent() {
+        return content;
+    }
+
+    /**
+     * Sets the value of the content property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setContent(String value) {
+        this.content = value;
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/DataType.java b/src/org/graphdrawing/graphml/DataType.java
new file mode 100644
index 00000000..7620a173
--- /dev/null
+++ b/src/org/graphdrawing/graphml/DataType.java
@@ -0,0 +1,140 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * 
+ *       Complex type for the <data> element.
+ *       data.type is mixed, that is, <data> may contain #PCDATA.
+ *       Content type: extension of data-extension.type which is empty
+ *                     per default.
+ *     
+ * 
+ * <p>Java class for data.type complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="data.type">
+ *   &lt;complexContent>
+ *     &lt;extension base="{http://graphml.graphdrawing.org/xmlns}data-extension.type">
+ *       &lt;attGroup ref="{http://graphml.graphdrawing.org/xmlns}data.extra.attrib"/>
+ *       &lt;attribute name="key" use="required" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *       &lt;attribute name="time" type="{http://www.w3.org/2001/XMLSchema}long" default="0" />
+ *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "data.type")
+public class DataType
+    extends DataExtensionType
+{
+
+    @XmlAttribute(name = "key", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String key;
+    @XmlAttribute(name = "time")
+    protected Long time;
+    @XmlAttribute(name = "id")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String id;
+
+    /**
+     * Gets the value of the key property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getKey() {
+        return key;
+    }
+
+    /**
+     * Sets the value of the key property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setKey(String value) {
+        this.key = value;
+    }
+
+    /**
+     * Gets the value of the time property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Long }
+     *     
+     */
+    public long getTime() {
+        if (time == null) {
+            return  0L;
+        } else {
+            return time;
+        }
+    }
+
+    /**
+     * Sets the value of the time property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Long }
+     *     
+     */
+    public void setTime(Long value) {
+        this.time = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/DefaultType.java b/src/org/graphdrawing/graphml/DefaultType.java
new file mode 100644
index 00000000..52009626
--- /dev/null
+++ b/src/org/graphdrawing/graphml/DefaultType.java
@@ -0,0 +1,47 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * 
+ *       Complex type for the <default> element.
+ *       default.type is mixed, that is, data may contain #PCDATA.
+ *       Content type: extension of data-extension.type which is empty
+ *                     per default.
+ *     
+ * 
+ * <p>Java class for default.type complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="default.type">
+ *   &lt;complexContent>
+ *     &lt;extension base="{http://graphml.graphdrawing.org/xmlns}data-extension.type">
+ *       &lt;attGroup ref="{http://graphml.graphdrawing.org/xmlns}default.extra.attrib"/>
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "default.type")
+public class DefaultType
+    extends DataExtensionType
+{
+
+
+}
diff --git a/src/org/graphdrawing/graphml/EdgeType.java b/src/org/graphdrawing/graphml/EdgeType.java
new file mode 100644
index 00000000..f6b709c7
--- /dev/null
+++ b/src/org/graphdrawing/graphml/EdgeType.java
@@ -0,0 +1,309 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * 
+ *       Complex type for the <edge> element.
+ *     
+ * 
+ * <p>Java class for edge.type complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="edge.type">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{http://graphml.graphdrawing.org/xmlns}desc" minOccurs="0"/>
+ *         &lt;element ref="{http://graphml.graphdrawing.org/xmlns}data" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element ref="{http://graphml.graphdrawing.org/xmlns}graph" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attGroup ref="{http://graphml.graphdrawing.org/xmlns}edge.extra.attrib"/>
+ *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *       &lt;attribute name="directed" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *       &lt;attribute name="source" use="required" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *       &lt;attribute name="target" use="required" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *       &lt;attribute name="sourceport" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *       &lt;attribute name="targetport" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "edge.type", propOrder = {
+    "desc",
+    "data",
+    "graph"
+})
+public class EdgeType {
+
+    protected String desc;
+    protected List<DataType> data;
+    protected GraphType graph;
+    @XmlAttribute(name = "id")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String id;
+    @XmlAttribute(name = "directed")
+    protected Boolean directed;
+    @XmlAttribute(name = "source", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String source;
+    @XmlAttribute(name = "target", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String target;
+    @XmlAttribute(name = "sourceport")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String sourceport;
+    @XmlAttribute(name = "targetport")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String targetport;
+
+    /**
+     * Gets the value of the desc property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDesc() {
+        return desc;
+    }
+
+    /**
+     * Sets the value of the desc property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDesc(String value) {
+        this.desc = value;
+    }
+
+    /**
+     * Gets the value of the data property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the data property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getData().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DataType }
+     * 
+     * 
+     */
+    public List<DataType> getData() {
+        if (data == null) {
+            data = new ArrayList<DataType>();
+        }
+        return this.data;
+    }
+
+    /**
+     * Gets the value of the graph property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link GraphType }
+     *     
+     */
+    public GraphType getGraph() {
+        return graph;
+    }
+
+    /**
+     * Sets the value of the graph property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link GraphType }
+     *     
+     */
+    public void setGraph(GraphType value) {
+        this.graph = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+    /**
+     * Gets the value of the directed property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isDirected() {
+        return directed;
+    }
+
+    /**
+     * Sets the value of the directed property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setDirected(Boolean value) {
+        this.directed = value;
+    }
+
+    /**
+     * Gets the value of the source property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSource() {
+        return source;
+    }
+
+    /**
+     * Sets the value of the source property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSource(String value) {
+        this.source = value;
+    }
+
+    /**
+     * Gets the value of the target property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getTarget() {
+        return target;
+    }
+
+    /**
+     * Sets the value of the target property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setTarget(String value) {
+        this.target = value;
+    }
+
+    /**
+     * Gets the value of the sourceport property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSourceport() {
+        return sourceport;
+    }
+
+    /**
+     * Sets the value of the sourceport property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSourceport(String value) {
+        this.sourceport = value;
+    }
+
+    /**
+     * Gets the value of the targetport property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getTargetport() {
+        return targetport;
+    }
+
+    /**
+     * Sets the value of the targetport property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setTargetport(String value) {
+        this.targetport = value;
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/EndpointType.java b/src/org/graphdrawing/graphml/EndpointType.java
new file mode 100644
index 00000000..d66306f9
--- /dev/null
+++ b/src/org/graphdrawing/graphml/EndpointType.java
@@ -0,0 +1,194 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * 
+ *       Complex type for the <endpoint> element.
+ *     
+ * 
+ * <p>Java class for endpoint.type complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="endpoint.type">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{http://graphml.graphdrawing.org/xmlns}desc" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attGroup ref="{http://graphml.graphdrawing.org/xmlns}endpoint.extra.attrib"/>
+ *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *       &lt;attribute name="port" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *       &lt;attribute name="node" use="required" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *       &lt;attribute name="type" type="{http://graphml.graphdrawing.org/xmlns}endpoint.type.type" default="undir" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "endpoint.type", propOrder = {
+    "desc"
+})
+public class EndpointType {
+
+    protected String desc;
+    @XmlAttribute(name = "id")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String id;
+    @XmlAttribute(name = "port")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String port;
+    @XmlAttribute(name = "node", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String node;
+    @XmlAttribute(name = "type")
+    protected EndpointTypeType type;
+
+    /**
+     * Gets the value of the desc property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDesc() {
+        return desc;
+    }
+
+    /**
+     * Sets the value of the desc property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDesc(String value) {
+        this.desc = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+    /**
+     * Gets the value of the port property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPort() {
+        return port;
+    }
+
+    /**
+     * Sets the value of the port property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPort(String value) {
+        this.port = value;
+    }
+
+    /**
+     * Gets the value of the node property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getNode() {
+        return node;
+    }
+
+    /**
+     * Sets the value of the node property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setNode(String value) {
+        this.node = value;
+    }
+
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EndpointTypeType }
+     *     
+     */
+    public EndpointTypeType getType() {
+        if (type == null) {
+            return EndpointTypeType.UNDIR;
+        } else {
+            return type;
+        }
+    }
+
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EndpointTypeType }
+     *     
+     */
+    public void setType(EndpointTypeType value) {
+        this.type = value;
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/EndpointTypeType.java b/src/org/graphdrawing/graphml/EndpointTypeType.java
new file mode 100644
index 00000000..4f98d45e
--- /dev/null
+++ b/src/org/graphdrawing/graphml/EndpointTypeType.java
@@ -0,0 +1,61 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for endpoint.type.type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="endpoint.type.type">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}NMTOKEN">
+ *     &lt;enumeration value="in"/>
+ *     &lt;enumeration value="out"/>
+ *     &lt;enumeration value="undir"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "endpoint.type.type")
+@XmlEnum
+public enum EndpointTypeType {
+
+    @XmlEnumValue("in")
+    IN("in"),
+    @XmlEnumValue("out")
+    OUT("out"),
+    @XmlEnumValue("undir")
+    UNDIR("undir");
+    private final String value;
+
+    EndpointTypeType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static EndpointTypeType fromValue(String v) {
+        for (EndpointTypeType c: EndpointTypeType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/GraphEdgedefaultType.java b/src/org/graphdrawing/graphml/GraphEdgedefaultType.java
new file mode 100644
index 00000000..fee3968c
--- /dev/null
+++ b/src/org/graphdrawing/graphml/GraphEdgedefaultType.java
@@ -0,0 +1,58 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for graph.edgedefault.type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="graph.edgedefault.type">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}NMTOKEN">
+ *     &lt;enumeration value="directed"/>
+ *     &lt;enumeration value="undirected"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "graph.edgedefault.type")
+@XmlEnum
+public enum GraphEdgedefaultType {
+
+    @XmlEnumValue("directed")
+    DIRECTED("directed"),
+    @XmlEnumValue("undirected")
+    UNDIRECTED("undirected");
+    private final String value;
+
+    GraphEdgedefaultType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static GraphEdgedefaultType fromValue(String v) {
+        for (GraphEdgedefaultType c: GraphEdgedefaultType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/GraphEdgeidsType.java b/src/org/graphdrawing/graphml/GraphEdgeidsType.java
new file mode 100644
index 00000000..e0964cc3
--- /dev/null
+++ b/src/org/graphdrawing/graphml/GraphEdgeidsType.java
@@ -0,0 +1,58 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for graph.edgeids.type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="graph.edgeids.type">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}NMTOKEN">
+ *     &lt;enumeration value="canonical"/>
+ *     &lt;enumeration value="free"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "graph.edgeids.type")
+@XmlEnum
+public enum GraphEdgeidsType {
+
+    @XmlEnumValue("canonical")
+    CANONICAL("canonical"),
+    @XmlEnumValue("free")
+    FREE("free");
+    private final String value;
+
+    GraphEdgeidsType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static GraphEdgeidsType fromValue(String v) {
+        for (GraphEdgeidsType c: GraphEdgeidsType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/GraphNodeidsType.java b/src/org/graphdrawing/graphml/GraphNodeidsType.java
new file mode 100644
index 00000000..0cd7a976
--- /dev/null
+++ b/src/org/graphdrawing/graphml/GraphNodeidsType.java
@@ -0,0 +1,58 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for graph.nodeids.type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="graph.nodeids.type">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}NMTOKEN">
+ *     &lt;enumeration value="canonical"/>
+ *     &lt;enumeration value="free"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "graph.nodeids.type")
+@XmlEnum
+public enum GraphNodeidsType {
+
+    @XmlEnumValue("canonical")
+    CANONICAL("canonical"),
+    @XmlEnumValue("free")
+    FREE("free");
+    private final String value;
+
+    GraphNodeidsType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static GraphNodeidsType fromValue(String v) {
+        for (GraphNodeidsType c: GraphNodeidsType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/GraphOrderType.java b/src/org/graphdrawing/graphml/GraphOrderType.java
new file mode 100644
index 00000000..82bb17ec
--- /dev/null
+++ b/src/org/graphdrawing/graphml/GraphOrderType.java
@@ -0,0 +1,61 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for graph.order.type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="graph.order.type">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}NMTOKEN">
+ *     &lt;enumeration value="free"/>
+ *     &lt;enumeration value="nodesfirst"/>
+ *     &lt;enumeration value="adjacencylist"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "graph.order.type")
+@XmlEnum
+public enum GraphOrderType {
+
+    @XmlEnumValue("free")
+    FREE("free"),
+    @XmlEnumValue("nodesfirst")
+    NODESFIRST("nodesfirst"),
+    @XmlEnumValue("adjacencylist")
+    ADJACENCYLIST("adjacencylist");
+    private final String value;
+
+    GraphOrderType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static GraphOrderType fromValue(String v) {
+        for (GraphOrderType c: GraphOrderType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/GraphType.java b/src/org/graphdrawing/graphml/GraphType.java
new file mode 100644
index 00000000..da0ebaed
--- /dev/null
+++ b/src/org/graphdrawing/graphml/GraphType.java
@@ -0,0 +1,396 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * 
+ *       Complex type for the <graph> element.
+ *     
+ * 
+ * <p>Java class for graph.type complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="graph.type">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{http://graphml.graphdrawing.org/xmlns}desc" minOccurs="0"/>
+ *         &lt;choice>
+ *           &lt;sequence>
+ *             &lt;choice maxOccurs="unbounded" minOccurs="0">
+ *               &lt;element ref="{http://graphml.graphdrawing.org/xmlns}data"/>
+ *               &lt;element ref="{http://graphml.graphdrawing.org/xmlns}node"/>
+ *               &lt;element ref="{http://graphml.graphdrawing.org/xmlns}edge"/>
+ *               &lt;element ref="{http://graphml.graphdrawing.org/xmlns}hyperedge"/>
+ *             &lt;/choice>
+ *           &lt;/sequence>
+ *           &lt;element ref="{http://graphml.graphdrawing.org/xmlns}locator"/>
+ *         &lt;/choice>
+ *       &lt;/sequence>
+ *       &lt;attGroup ref="{http://graphml.graphdrawing.org/xmlns}graph.extra.attrib"/>
+ *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *       &lt;attribute name="edgedefault" use="required" type="{http://graphml.graphdrawing.org/xmlns}graph.edgedefault.type" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "graph.type", propOrder = {
+    "desc",
+    "dataOrNodeOrEdge",
+    "locator"
+})
+public class GraphType {
+
+    protected String desc;
+    @XmlElements({
+        @XmlElement(name = "data", type = DataType.class),
+        @XmlElement(name = "node", type = NodeType.class),
+        @XmlElement(name = "edge", type = EdgeType.class),
+        @XmlElement(name = "hyperedge", type = HyperedgeType.class)
+    })
+    protected List<Object> dataOrNodeOrEdge;
+    protected LocatorType locator;
+    @XmlAttribute(name = "id")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String id;
+    @XmlAttribute(name = "edgedefault", required = true)
+    protected GraphEdgedefaultType edgedefault;
+    @XmlAttribute(name = "parse.nodeids")
+    protected GraphNodeidsType parseNodeids;
+    @XmlAttribute(name = "parse.edgeids")
+    protected GraphEdgeidsType parseEdgeids;
+    @XmlAttribute(name = "parse.order")
+    protected GraphOrderType parseOrder;
+    @XmlAttribute(name = "parse.nodes")
+    protected BigInteger parseNodes;
+    @XmlAttribute(name = "parse.edges")
+    protected BigInteger parseEdges;
+    @XmlAttribute(name = "parse.maxindegree")
+    protected BigInteger parseMaxindegree;
+    @XmlAttribute(name = "parse.maxoutdegree")
+    protected BigInteger parseMaxoutdegree;
+
+    /**
+     * Gets the value of the desc property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDesc() {
+        return desc;
+    }
+
+    /**
+     * Sets the value of the desc property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDesc(String value) {
+        this.desc = value;
+    }
+
+    /**
+     * Gets the value of the dataOrNodeOrEdge property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the dataOrNodeOrEdge property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDataOrNodeOrEdge().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DataType }
+     * {@link NodeType }
+     * {@link EdgeType }
+     * {@link HyperedgeType }
+     * 
+     * 
+     */
+    public List<Object> getDataOrNodeOrEdge() {
+        if (dataOrNodeOrEdge == null) {
+            dataOrNodeOrEdge = new ArrayList<Object>();
+        }
+        return this.dataOrNodeOrEdge;
+    }
+
+    /**
+     * Gets the value of the locator property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link LocatorType }
+     *     
+     */
+    public LocatorType getLocator() {
+        return locator;
+    }
+
+    /**
+     * Sets the value of the locator property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link LocatorType }
+     *     
+     */
+    public void setLocator(LocatorType value) {
+        this.locator = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+    /**
+     * Gets the value of the edgedefault property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link GraphEdgedefaultType }
+     *     
+     */
+    public GraphEdgedefaultType getEdgedefault() {
+        return edgedefault;
+    }
+
+    /**
+     * Sets the value of the edgedefault property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link GraphEdgedefaultType }
+     *     
+     */
+    public void setEdgedefault(GraphEdgedefaultType value) {
+        this.edgedefault = value;
+    }
+
+    /**
+     * Gets the value of the parseNodeids property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link GraphNodeidsType }
+     *     
+     */
+    public GraphNodeidsType getParseNodeids() {
+        return parseNodeids;
+    }
+
+    /**
+     * Sets the value of the parseNodeids property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link GraphNodeidsType }
+     *     
+     */
+    public void setParseNodeids(GraphNodeidsType value) {
+        this.parseNodeids = value;
+    }
+
+    /**
+     * Gets the value of the parseEdgeids property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link GraphEdgeidsType }
+     *     
+     */
+    public GraphEdgeidsType getParseEdgeids() {
+        return parseEdgeids;
+    }
+
+    /**
+     * Sets the value of the parseEdgeids property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link GraphEdgeidsType }
+     *     
+     */
+    public void setParseEdgeids(GraphEdgeidsType value) {
+        this.parseEdgeids = value;
+    }
+
+    /**
+     * Gets the value of the parseOrder property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link GraphOrderType }
+     *     
+     */
+    public GraphOrderType getParseOrder() {
+        return parseOrder;
+    }
+
+    /**
+     * Sets the value of the parseOrder property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link GraphOrderType }
+     *     
+     */
+    public void setParseOrder(GraphOrderType value) {
+        this.parseOrder = value;
+    }
+
+    /**
+     * Gets the value of the parseNodes property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getParseNodes() {
+        return parseNodes;
+    }
+
+    /**
+     * Sets the value of the parseNodes property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setParseNodes(BigInteger value) {
+        this.parseNodes = value;
+    }
+
+    /**
+     * Gets the value of the parseEdges property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getParseEdges() {
+        return parseEdges;
+    }
+
+    /**
+     * Sets the value of the parseEdges property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setParseEdges(BigInteger value) {
+        this.parseEdges = value;
+    }
+
+    /**
+     * Gets the value of the parseMaxindegree property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getParseMaxindegree() {
+        return parseMaxindegree;
+    }
+
+    /**
+     * Sets the value of the parseMaxindegree property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setParseMaxindegree(BigInteger value) {
+        this.parseMaxindegree = value;
+    }
+
+    /**
+     * Gets the value of the parseMaxoutdegree property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getParseMaxoutdegree() {
+        return parseMaxoutdegree;
+    }
+
+    /**
+     * Sets the value of the parseMaxoutdegree property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setParseMaxoutdegree(BigInteger value) {
+        this.parseMaxoutdegree = value;
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/GraphmlType.java b/src/org/graphdrawing/graphml/GraphmlType.java
new file mode 100644
index 00000000..32493c5d
--- /dev/null
+++ b/src/org/graphdrawing/graphml/GraphmlType.java
@@ -0,0 +1,150 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * 
+ *       Complex type for the <graphml> element.
+ *     
+ * 
+ * <p>Java class for graphml.type complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="graphml.type">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{http://graphml.graphdrawing.org/xmlns}desc" minOccurs="0"/>
+ *         &lt;element ref="{http://graphml.graphdrawing.org/xmlns}key" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;sequence>
+ *           &lt;choice maxOccurs="unbounded" minOccurs="0">
+ *             &lt;element ref="{http://graphml.graphdrawing.org/xmlns}graph"/>
+ *             &lt;element ref="{http://graphml.graphdrawing.org/xmlns}data"/>
+ *           &lt;/choice>
+ *         &lt;/sequence>
+ *       &lt;/sequence>
+ *       &lt;attGroup ref="{http://graphml.graphdrawing.org/xmlns}graphml.extra.attrib"/>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "graphml.type", propOrder = {
+    "desc",
+    "key",
+    "graphOrData"
+})
+public class GraphmlType {
+
+    protected String desc;
+    protected List<KeyType> key;
+    @XmlElements({
+        @XmlElement(name = "graph", type = GraphType.class),
+        @XmlElement(name = "data", type = DataType.class)
+    })
+    protected List<Object> graphOrData;
+
+    /**
+     * Gets the value of the desc property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDesc() {
+        return desc;
+    }
+
+    /**
+     * Sets the value of the desc property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDesc(String value) {
+        this.desc = value;
+    }
+
+    /**
+     * Gets the value of the key property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the key property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getKey().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link KeyType }
+     * 
+     * 
+     */
+    public List<KeyType> getKey() {
+        if (key == null) {
+            key = new ArrayList<KeyType>();
+        }
+        return this.key;
+    }
+
+    /**
+     * Gets the value of the graphOrData property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the graphOrData property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getGraphOrData().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link GraphType }
+     * {@link DataType }
+     * 
+     * 
+     */
+    public List<Object> getGraphOrData() {
+        if (graphOrData == null) {
+            graphOrData = new ArrayList<Object>();
+        }
+        return this.graphOrData;
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/HyperedgeType.java b/src/org/graphdrawing/graphml/HyperedgeType.java
new file mode 100644
index 00000000..869564da
--- /dev/null
+++ b/src/org/graphdrawing/graphml/HyperedgeType.java
@@ -0,0 +1,176 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * 
+ *       Complex type for the <hyperedge> element.
+ *     
+ * 
+ * <p>Java class for hyperedge.type complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="hyperedge.type">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{http://graphml.graphdrawing.org/xmlns}desc" minOccurs="0"/>
+ *         &lt;choice maxOccurs="unbounded" minOccurs="0">
+ *           &lt;element ref="{http://graphml.graphdrawing.org/xmlns}data"/>
+ *           &lt;element ref="{http://graphml.graphdrawing.org/xmlns}endpoint"/>
+ *         &lt;/choice>
+ *         &lt;element ref="{http://graphml.graphdrawing.org/xmlns}graph" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attGroup ref="{http://graphml.graphdrawing.org/xmlns}hyperedge.extra.attrib"/>
+ *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "hyperedge.type", propOrder = {
+    "desc",
+    "dataOrEndpoint",
+    "graph"
+})
+public class HyperedgeType {
+
+    protected String desc;
+    @XmlElements({
+        @XmlElement(name = "data", type = DataType.class),
+        @XmlElement(name = "endpoint", type = EndpointType.class)
+    })
+    protected List<Object> dataOrEndpoint;
+    protected GraphType graph;
+    @XmlAttribute(name = "id")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String id;
+
+    /**
+     * Gets the value of the desc property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDesc() {
+        return desc;
+    }
+
+    /**
+     * Sets the value of the desc property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDesc(String value) {
+        this.desc = value;
+    }
+
+    /**
+     * Gets the value of the dataOrEndpoint property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the dataOrEndpoint property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDataOrEndpoint().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DataType }
+     * {@link EndpointType }
+     * 
+     * 
+     */
+    public List<Object> getDataOrEndpoint() {
+        if (dataOrEndpoint == null) {
+            dataOrEndpoint = new ArrayList<Object>();
+        }
+        return this.dataOrEndpoint;
+    }
+
+    /**
+     * Gets the value of the graph property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link GraphType }
+     *     
+     */
+    public GraphType getGraph() {
+        return graph;
+    }
+
+    /**
+     * Sets the value of the graph property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link GraphType }
+     *     
+     */
+    public void setGraph(GraphType value) {
+        this.graph = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/KeyForType.java b/src/org/graphdrawing/graphml/KeyForType.java
new file mode 100644
index 00000000..bcfe8840
--- /dev/null
+++ b/src/org/graphdrawing/graphml/KeyForType.java
@@ -0,0 +1,76 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for key.for.type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="key.for.type">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}NMTOKEN">
+ *     &lt;enumeration value="all"/>
+ *     &lt;enumeration value="graphml"/>
+ *     &lt;enumeration value="graph"/>
+ *     &lt;enumeration value="node"/>
+ *     &lt;enumeration value="edge"/>
+ *     &lt;enumeration value="hyperedge"/>
+ *     &lt;enumeration value="port"/>
+ *     &lt;enumeration value="endpoint"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "key.for.type")
+@XmlEnum
+public enum KeyForType {
+
+    @XmlEnumValue("all")
+    ALL("all"),
+    @XmlEnumValue("graphml")
+    GRAPHML("graphml"),
+    @XmlEnumValue("graph")
+    GRAPH("graph"),
+    @XmlEnumValue("node")
+    NODE("node"),
+    @XmlEnumValue("edge")
+    EDGE("edge"),
+    @XmlEnumValue("hyperedge")
+    HYPEREDGE("hyperedge"),
+    @XmlEnumValue("port")
+    PORT("port"),
+    @XmlEnumValue("endpoint")
+    ENDPOINT("endpoint");
+    private final String value;
+
+    KeyForType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static KeyForType fromValue(String v) {
+        for (KeyForType c: KeyForType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/KeyType.java b/src/org/graphdrawing/graphml/KeyType.java
new file mode 100644
index 00000000..2bd532ed
--- /dev/null
+++ b/src/org/graphdrawing/graphml/KeyType.java
@@ -0,0 +1,249 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * 
+ *       Complex type for the <key> element.
+ *     
+ * 
+ * <p>Java class for key.type complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="key.type">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{http://graphml.graphdrawing.org/xmlns}desc" minOccurs="0"/>
+ *         &lt;element ref="{http://graphml.graphdrawing.org/xmlns}default" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attGroup ref="{http://graphml.graphdrawing.org/xmlns}key.extra.attrib"/>
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *       &lt;attribute name="dynamic" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *       &lt;attribute name="for" type="{http://graphml.graphdrawing.org/xmlns}key.for.type" default="all" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "key.type", propOrder = {
+    "desc",
+    "_default"
+})
+public class KeyType {
+
+    protected String desc;
+    @XmlElement(name = "default")
+    protected DefaultType _default;
+    @XmlAttribute(name = "id", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String id;
+    @XmlAttribute(name = "dynamic")
+    protected Boolean dynamic;
+    @XmlAttribute(name = "for")
+    protected KeyForType _for;
+    @XmlAttribute(name = "attr.name")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String attrName;
+    @XmlAttribute(name = "attr.type")
+    protected KeyTypeType attrType;
+
+    /**
+     * Gets the value of the desc property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDesc() {
+        return desc;
+    }
+
+    /**
+     * Sets the value of the desc property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDesc(String value) {
+        this.desc = value;
+    }
+
+    /**
+     * Gets the value of the default property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DefaultType }
+     *     
+     */
+    public DefaultType getDefault() {
+        return _default;
+    }
+
+    /**
+     * Sets the value of the default property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DefaultType }
+     *     
+     */
+    public void setDefault(DefaultType value) {
+        this._default = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+    /**
+     * Gets the value of the dynamic property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public boolean isDynamic() {
+        if (dynamic == null) {
+            return false;
+        } else {
+            return dynamic;
+        }
+    }
+
+    /**
+     * Sets the value of the dynamic property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setDynamic(Boolean value) {
+        this.dynamic = value;
+    }
+
+    /**
+     * Gets the value of the for property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link KeyForType }
+     *     
+     */
+    public KeyForType getFor() {
+        if (_for == null) {
+            return KeyForType.ALL;
+        } else {
+            return _for;
+        }
+    }
+
+    /**
+     * Sets the value of the for property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link KeyForType }
+     *     
+     */
+    public void setFor(KeyForType value) {
+        this._for = value;
+    }
+
+    /**
+     * Gets the value of the attrName property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAttrName() {
+        return attrName;
+    }
+
+    /**
+     * Sets the value of the attrName property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAttrName(String value) {
+        this.attrName = value;
+    }
+
+    /**
+     * Gets the value of the attrType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link KeyTypeType }
+     *     
+     */
+    public KeyTypeType getAttrType() {
+        return attrType;
+    }
+
+    /**
+     * Sets the value of the attrType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link KeyTypeType }
+     *     
+     */
+    public void setAttrType(KeyTypeType value) {
+        this.attrType = value;
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/KeyTypeType.java b/src/org/graphdrawing/graphml/KeyTypeType.java
new file mode 100644
index 00000000..5d3fc662
--- /dev/null
+++ b/src/org/graphdrawing/graphml/KeyTypeType.java
@@ -0,0 +1,70 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for key.type.type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="key.type.type">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}NMTOKEN">
+ *     &lt;enumeration value="boolean"/>
+ *     &lt;enumeration value="int"/>
+ *     &lt;enumeration value="long"/>
+ *     &lt;enumeration value="float"/>
+ *     &lt;enumeration value="double"/>
+ *     &lt;enumeration value="string"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "key.type.type")
+@XmlEnum
+public enum KeyTypeType {
+
+    @XmlEnumValue("boolean")
+    BOOLEAN("boolean"),
+    @XmlEnumValue("int")
+    INT("int"),
+    @XmlEnumValue("long")
+    LONG("long"),
+    @XmlEnumValue("float")
+    FLOAT("float"),
+    @XmlEnumValue("double")
+    DOUBLE("double"),
+    @XmlEnumValue("string")
+    STRING("string");
+    private final String value;
+
+    KeyTypeType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static KeyTypeType fromValue(String v) {
+        for (KeyTypeType c: KeyTypeType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/LocatorType.java b/src/org/graphdrawing/graphml/LocatorType.java
new file mode 100644
index 00000000..be47d0a6
--- /dev/null
+++ b/src/org/graphdrawing/graphml/LocatorType.java
@@ -0,0 +1,108 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * 
+ *       Complex type for the <locator> element.
+ *       Content type: (empty)
+ *     
+ * 
+ * <p>Java class for locator.type complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="locator.type">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attGroup ref="{http://graphml.graphdrawing.org/xmlns}locator.extra.attrib"/>
+ *       &lt;attribute ref="{http://www.w3.org/1999/xlink}href use="required""/>
+ *       &lt;attribute ref="{http://www.w3.org/1999/xlink}type"/>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "locator.type")
+public class LocatorType {
+
+    @XmlAttribute(name = "href", namespace = "http://www.w3.org/1999/xlink", required = true)
+    @XmlSchemaType(name = "anyURI")
+    protected String href;
+    @XmlAttribute(name = "type", namespace = "http://www.w3.org/1999/xlink")
+    protected String type;
+
+    /**
+     * 
+     *                 points to the resource of this locator.
+     *           
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getHref() {
+        return href;
+    }
+
+    /**
+     * Sets the value of the href property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setHref(String value) {
+        this.href = value;
+    }
+
+    /**
+     * 
+     *                type of the hyperlink (fixed as simple).
+     *           
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        if (type == null) {
+            return "simple";
+        } else {
+            return type;
+        }
+    }
+
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/NodeType.java b/src/org/graphdrawing/graphml/NodeType.java
new file mode 100644
index 00000000..63a4284a
--- /dev/null
+++ b/src/org/graphdrawing/graphml/NodeType.java
@@ -0,0 +1,260 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * 
+ *       Complex type for the <node> element.
+ *     
+ * 
+ * <p>Java class for node.type complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="node.type">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{http://graphml.graphdrawing.org/xmlns}desc" minOccurs="0"/>
+ *         &lt;choice>
+ *           &lt;sequence>
+ *             &lt;choice maxOccurs="unbounded" minOccurs="0">
+ *               &lt;element ref="{http://graphml.graphdrawing.org/xmlns}data"/>
+ *               &lt;element ref="{http://graphml.graphdrawing.org/xmlns}port"/>
+ *             &lt;/choice>
+ *             &lt;element ref="{http://graphml.graphdrawing.org/xmlns}graph" minOccurs="0"/>
+ *           &lt;/sequence>
+ *           &lt;element ref="{http://graphml.graphdrawing.org/xmlns}locator"/>
+ *         &lt;/choice>
+ *       &lt;/sequence>
+ *       &lt;attGroup ref="{http://graphml.graphdrawing.org/xmlns}node.extra.attrib"/>
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "node.type", propOrder = {
+    "desc",
+    "dataOrPort",
+    "graph",
+    "locator"
+})
+public class NodeType {
+
+    protected String desc;
+    @XmlElements({
+        @XmlElement(name = "data", type = DataType.class),
+        @XmlElement(name = "port", type = PortType.class)
+    })
+    protected List<Object> dataOrPort;
+    protected GraphType graph;
+    protected LocatorType locator;
+    @XmlAttribute(name = "id", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String id;
+    @XmlAttribute(name = "parse.indegree")
+    protected BigInteger parseIndegree;
+    @XmlAttribute(name = "parse.outdegree")
+    protected BigInteger parseOutdegree;
+
+    /**
+     * Gets the value of the desc property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDesc() {
+        return desc;
+    }
+
+    /**
+     * Sets the value of the desc property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDesc(String value) {
+        this.desc = value;
+    }
+
+    /**
+     * Gets the value of the dataOrPort property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the dataOrPort property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDataOrPort().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DataType }
+     * {@link PortType }
+     * 
+     * 
+     */
+    public List<Object> getDataOrPort() {
+        if (dataOrPort == null) {
+            dataOrPort = new ArrayList<Object>();
+        }
+        return this.dataOrPort;
+    }
+
+    /**
+     * Gets the value of the graph property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link GraphType }
+     *     
+     */
+    public GraphType getGraph() {
+        return graph;
+    }
+
+    /**
+     * Sets the value of the graph property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link GraphType }
+     *     
+     */
+    public void setGraph(GraphType value) {
+        this.graph = value;
+    }
+
+    /**
+     * Gets the value of the locator property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link LocatorType }
+     *     
+     */
+    public LocatorType getLocator() {
+        return locator;
+    }
+
+    /**
+     * Sets the value of the locator property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link LocatorType }
+     *     
+     */
+    public void setLocator(LocatorType value) {
+        this.locator = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+    /**
+     * Gets the value of the parseIndegree property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getParseIndegree() {
+        return parseIndegree;
+    }
+
+    /**
+     * Sets the value of the parseIndegree property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setParseIndegree(BigInteger value) {
+        this.parseIndegree = value;
+    }
+
+    /**
+     * Gets the value of the parseOutdegree property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getParseOutdegree() {
+        return parseOutdegree;
+    }
+
+    /**
+     * Sets the value of the parseOutdegree property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setParseOutdegree(BigInteger value) {
+        this.parseOutdegree = value;
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/ObjectFactory.java b/src/org/graphdrawing/graphml/ObjectFactory.java
new file mode 100644
index 00000000..16859629
--- /dev/null
+++ b/src/org/graphdrawing/graphml/ObjectFactory.java
@@ -0,0 +1,258 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the org.graphdrawing.graphml package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+    private final static QName _Data_QNAME = new QName("http://graphml.graphdrawing.org/xmlns", "data");
+    private final static QName _Key_QNAME = new QName("http://graphml.graphdrawing.org/xmlns", "key");
+    private final static QName _Endpoint_QNAME = new QName("http://graphml.graphdrawing.org/xmlns", "endpoint");
+    private final static QName _Graphml_QNAME = new QName("http://graphml.graphdrawing.org/xmlns", "graphml");
+    private final static QName _Node_QNAME = new QName("http://graphml.graphdrawing.org/xmlns", "node");
+    private final static QName _Desc_QNAME = new QName("http://graphml.graphdrawing.org/xmlns", "desc");
+    private final static QName _Default_QNAME = new QName("http://graphml.graphdrawing.org/xmlns", "default");
+    private final static QName _Graph_QNAME = new QName("http://graphml.graphdrawing.org/xmlns", "graph");
+    private final static QName _Edge_QNAME = new QName("http://graphml.graphdrawing.org/xmlns", "edge");
+    private final static QName _Port_QNAME = new QName("http://graphml.graphdrawing.org/xmlns", "port");
+    private final static QName _Locator_QNAME = new QName("http://graphml.graphdrawing.org/xmlns", "locator");
+    private final static QName _Hyperedge_QNAME = new QName("http://graphml.graphdrawing.org/xmlns", "hyperedge");
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.graphdrawing.graphml
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link PortType }
+     * 
+     */
+    public PortType createPortType() {
+        return new PortType();
+    }
+
+    /**
+     * Create an instance of {@link LocatorType }
+     * 
+     */
+    public LocatorType createLocatorType() {
+        return new LocatorType();
+    }
+
+    /**
+     * Create an instance of {@link NodeType }
+     * 
+     */
+    public NodeType createNodeType() {
+        return new NodeType();
+    }
+
+    /**
+     * Create an instance of {@link EdgeType }
+     * 
+     */
+    public EdgeType createEdgeType() {
+        return new EdgeType();
+    }
+
+    /**
+     * Create an instance of {@link GraphType }
+     * 
+     */
+    public GraphType createGraphType() {
+        return new GraphType();
+    }
+
+    /**
+     * Create an instance of {@link DefaultType }
+     * 
+     */
+    public DefaultType createDefaultType() {
+        return new DefaultType();
+    }
+
+    /**
+     * Create an instance of {@link HyperedgeType }
+     * 
+     */
+    public HyperedgeType createHyperedgeType() {
+        return new HyperedgeType();
+    }
+
+    /**
+     * Create an instance of {@link DataType }
+     * 
+     */
+    public DataType createDataType() {
+        return new DataType();
+    }
+
+    /**
+     * Create an instance of {@link GraphmlType }
+     * 
+     */
+    public GraphmlType createGraphmlType() {
+        return new GraphmlType();
+    }
+
+    /**
+     * Create an instance of {@link EndpointType }
+     * 
+     */
+    public EndpointType createEndpointType() {
+        return new EndpointType();
+    }
+
+    /**
+     * Create an instance of {@link KeyType }
+     * 
+     */
+    public KeyType createKeyType() {
+        return new KeyType();
+    }
+
+    /**
+     * Create an instance of {@link DataExtensionType }
+     * 
+     */
+    public DataExtensionType createDataExtensionType() {
+        return new DataExtensionType();
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link DataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://graphml.graphdrawing.org/xmlns", name = "data")
+    public JAXBElement<DataType> createData(DataType value) {
+        return new JAXBElement<DataType>(_Data_QNAME, DataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link KeyType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://graphml.graphdrawing.org/xmlns", name = "key")
+    public JAXBElement<KeyType> createKey(KeyType value) {
+        return new JAXBElement<KeyType>(_Key_QNAME, KeyType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link EndpointType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://graphml.graphdrawing.org/xmlns", name = "endpoint")
+    public JAXBElement<EndpointType> createEndpoint(EndpointType value) {
+        return new JAXBElement<EndpointType>(_Endpoint_QNAME, EndpointType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link GraphmlType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://graphml.graphdrawing.org/xmlns", name = "graphml")
+    public JAXBElement<GraphmlType> createGraphml(GraphmlType value) {
+        return new JAXBElement<GraphmlType>(_Graphml_QNAME, GraphmlType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link NodeType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://graphml.graphdrawing.org/xmlns", name = "node")
+    public JAXBElement<NodeType> createNode(NodeType value) {
+        return new JAXBElement<NodeType>(_Node_QNAME, NodeType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://graphml.graphdrawing.org/xmlns", name = "desc")
+    public JAXBElement<String> createDesc(String value) {
+        return new JAXBElement<String>(_Desc_QNAME, String.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link DefaultType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://graphml.graphdrawing.org/xmlns", name = "default")
+    public JAXBElement<DefaultType> createDefault(DefaultType value) {
+        return new JAXBElement<DefaultType>(_Default_QNAME, DefaultType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link GraphType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://graphml.graphdrawing.org/xmlns", name = "graph")
+    public JAXBElement<GraphType> createGraph(GraphType value) {
+        return new JAXBElement<GraphType>(_Graph_QNAME, GraphType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link EdgeType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://graphml.graphdrawing.org/xmlns", name = "edge")
+    public JAXBElement<EdgeType> createEdge(EdgeType value) {
+        return new JAXBElement<EdgeType>(_Edge_QNAME, EdgeType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link PortType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://graphml.graphdrawing.org/xmlns", name = "port")
+    public JAXBElement<PortType> createPort(PortType value) {
+        return new JAXBElement<PortType>(_Port_QNAME, PortType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link LocatorType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://graphml.graphdrawing.org/xmlns", name = "locator")
+    public JAXBElement<LocatorType> createLocator(LocatorType value) {
+        return new JAXBElement<LocatorType>(_Locator_QNAME, LocatorType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link HyperedgeType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://graphml.graphdrawing.org/xmlns", name = "hyperedge")
+    public JAXBElement<HyperedgeType> createHyperedge(HyperedgeType value) {
+        return new JAXBElement<HyperedgeType>(_Hyperedge_QNAME, HyperedgeType.class, null, value);
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/PortType.java b/src/org/graphdrawing/graphml/PortType.java
new file mode 100644
index 00000000..46b93b04
--- /dev/null
+++ b/src/org/graphdrawing/graphml/PortType.java
@@ -0,0 +1,149 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+
+package org.graphdrawing.graphml;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * 
+ *       Complex type for the <port> element.
+ *     
+ * 
+ * <p>Java class for port.type complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="port.type">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{http://graphml.graphdrawing.org/xmlns}desc" minOccurs="0"/>
+ *         &lt;choice maxOccurs="unbounded" minOccurs="0">
+ *           &lt;element ref="{http://graphml.graphdrawing.org/xmlns}data"/>
+ *           &lt;element ref="{http://graphml.graphdrawing.org/xmlns}port"/>
+ *         &lt;/choice>
+ *       &lt;/sequence>
+ *       &lt;attGroup ref="{http://graphml.graphdrawing.org/xmlns}port.extra.attrib"/>
+ *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "port.type", propOrder = {
+    "desc",
+    "dataOrPort"
+})
+public class PortType {
+
+    protected String desc;
+    @XmlElements({
+        @XmlElement(name = "data", type = DataType.class),
+        @XmlElement(name = "port", type = PortType.class)
+    })
+    protected List<Object> dataOrPort;
+    @XmlAttribute(name = "name", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "NMTOKEN")
+    protected String name;
+
+    /**
+     * Gets the value of the desc property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDesc() {
+        return desc;
+    }
+
+    /**
+     * Sets the value of the desc property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDesc(String value) {
+        this.desc = value;
+    }
+
+    /**
+     * Gets the value of the dataOrPort property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the dataOrPort property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDataOrPort().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DataType }
+     * {@link PortType }
+     * 
+     * 
+     */
+    public List<Object> getDataOrPort() {
+        if (dataOrPort == null) {
+            dataOrPort = new ArrayList<Object>();
+        }
+        return this.dataOrPort;
+    }
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+}
diff --git a/src/org/graphdrawing/graphml/package-info.java b/src/org/graphdrawing/graphml/package-info.java
new file mode 100644
index 00000000..8583b7f2
--- /dev/null
+++ b/src/org/graphdrawing/graphml/package-info.java
@@ -0,0 +1,9 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2016.02.25 at 12:10:48 PM CET 
+//
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://graphml.graphdrawing.org/xmlns", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package org.graphdrawing.graphml;
-- 
GitLab