     run_PrimsNonStrongRefClosureAccess(state)
   }
 }
+
+@inline(never)
+public func run_PrimsUnmanagedUGR(_ N: Int) {
+  let state = unmanagedUGRPrimsState
+  for _ in 0..<N {
+    run_PrimsNonStrongRef(state)
+  }
+}
+
+@inline(never)
+public func run_PrimsUnmanagedUGRClosureAccess(_ N: Int) {
+  let state = unmanagedUGRPrimsState
+  for _ in 0..<N {
+    run_PrimsNonStrongRefClosureAccess(state)
+  }
+}

  }
}

//===----------------------------------------------------------------------===//
//                            Graph Node Implementations
//===----------------------------------------------------------------------===//

}

func ==(lhs: UnmanagedGraphNode, rhs: UnmanagedGraphNode) -> Bool {
  return lhs === rhs
}


final class UnmanagedUGRGraphNode {
  /// This id is only meant for dumping the state of the graph. It is not meant
  /// to be used functionally by the algorithm.
  var id: Int

  var adjList: Array<UnmanagedUGRVarBox<UnmanagedUGRGraphNode>>

  init(id inputId: Int) {
    id = inputId
    adjList = Array<UnmanagedUGRVarBox<UnmanagedUGRGraphNode>>()
  }

  deinit {
    for x in adjList {
      x.free()
    }
  }
}

extension UnmanagedUGRGraphNode : GraphNode {
  typealias BoxType = UnmanagedUGRVarBox<UnmanagedUGRGraphNode>
}

extension UnmanagedUGRGraphNode : Equatable {}
extension UnmanagedUGRGraphNode : Hashable {
  func hash(into hasher: inout Hasher) {
    hasher.combine(ObjectIdentifier(self))
  }
}

func ==(lhs: UnmanagedUGRGraphNode, rhs: UnmanagedUGRGraphNode) -> Bool {
  return lhs === rhs
}

