 public struct ElementNode: Node {
     public typealias RawType = GumboElement
 
-    public let parent: OpaqueNode?
     public let children: [OpaqueNode]
     public let tag: TagType
     public let attributes: [Attribute]
 
-    public init(rawNode: GumboElement, parent: OpaqueNode?) {
-        self.parent = parent
+    public init(rawNode: GumboElement) {
         self.children = rawNode.children
             .flatMap { $0?.assumingMemoryBound(to: GumboNode.self) }
             .map(mapPointerToStruct)

public struct TextNode: Node {
    public typealias RawType = GumboText

    public let parent: OpaqueNode?
    public let text: String

    public init(rawNode: GumboText, parent: OpaqueNode?) {
        self.parent = parent
        self.text = String(cString: rawNode.text)
    }
}

public struct DocumentNode: Node {
    public typealias RawType = GumboDocument

    public let children: [OpaqueNode]

    public init(rawNode: GumboDocument) {
        self.children = rawNode.children
            .flatMap { $0?.assumingMemoryBound(to: GumboNode.self) }
            .map(mapPointerToStruct)
