package commonmark4cj.commonmark

public class Nodes {
    @Frozen
    public static func between(first: Node, end: Node): Iterator<Node> {
        NodesIterator(first.getNext(), end)
    }
}

class NodesIterator <: Iterator<Node> {
    NodesIterator(var firstNode: ?Node, let endNode: Node) {}
    public func next(): ?Node {
        match (firstNode) {
            case Some(v) =>
                if (refEq(v, endNode)) {
                    firstNode = None
                    None
                } else {
                    firstNode = v.getNext()
                    v
                }
            case _ => None
        }
    }
}