         }
     }
 }
-
-extension Array: NodeRepresentable {
-    public func represented() throws -> Node {
-        let nodes = try map(represent)
-        return Node(nodes, Tag(.seq))
-    }
-}
-
-extension Dictionary: NodeRepresentable {
-    public func represented() throws -> Node {
-        let pairs = try map { (key: try represent($0.0), value: try represent($0.1)) }
-        return Node(pairs.sorted { $0.key < $1.key }, Tag(.map))
-    }
-}

    }
}

extension Bool: NodeRepresentable {
    public func represented() throws -> Node {
        return Node(self ? "true" : "false", Tag(.bool))
    }
}

extension Data: NodeRepresentable {
    public func represented() throws -> Node {
        return Node(base64EncodedString(), Tag(.binary))
    }
}

extension Date: NodeRepresentable {
    public func represented() throws -> Node {
        return Node(iso8601string, Tag(.timestamp))
    }

    return formatter
}()

extension Double: ScalarRepresentable {
    public func represented() throws -> Node {
        return Node(doubleFormatter.string(for: self)!.replacingOccurrences(of: "+-", with: "-"), Tag(.float))
    }
}

extension Float: ScalarRepresentable {
    public func represented() throws -> Node {
        return Node(floatFormatter.string(for: self)!.replacingOccurrences(of: "+-", with: "-"), Tag(.float))
    }
