        (doto graph
          (.addVertex a)
          (.addVertex b)
-         (.addEdge (edge->j-edge edge) a b)))
+         (.addEdge (inner-edge edge) a b)))
      graph)))
 
 ;; Manipulation

       (doto graph
         (.addVertex a)
         (.addVertex b)
         (.addEdge (edge->j-edge edge) a b)))
     graph)))

(defn undirected-multigraph

  function is not immutable, changing the graph state."
  [^Graph graph edge]
  (let [[a b] edge]
    (.addEdge graph (inner-edge edge) a b)))

(defn remove-edge!
  "Removes edge from graph. Returns true if the removal suceeded. Note that this
  function is not immutable, changing the graph state."
  [^Graph graph edge]
  (.removeEdge graph (inner-edge edge)))

(defn contains-edge?
  "Returns true if graph's edge collection contains edge."
  [^Hypergraph graph edge]
  (.containsEdge graph (inner-edge edge)))

(defn nodes
  "Returns all nodes in graph as set."
