<?php
namespace Claromentis\Infocapture\ExpressionLanguage;

$GLOBALS["__65da1b1ec2d6653" . "e8a0ab7848e536215"] = (@$GLOBALS["__65da1b1ec2d6653e8a0ab7848e53621" . "5"] ?: array()) + array();
class Traverser
{
    
    
    protected $visitors = [];
    public function AddVisitor(Visitor $_01bd92098eb9b90a06202af8f9de7f30)
    {
        $this->visitors[] = $_01bd92098eb9b90a06202af8f9de7f30;
    }
    
    
    
    
    public function Traverse(array $_10061afd9f8abf8912cb3e433440c183)
    {
        foreach ($this->visitors as $_01bd92098eb9b90a06202af8f9de7f30) {
            $_01bd92098eb9b90a06202af8f9de7f30->Begin($_10061afd9f8abf8912cb3e433440c183);
        }
        $this->TraverseNodes($_10061afd9f8abf8912cb3e433440c183);
        foreach ($this->visitors as $_01bd92098eb9b90a06202af8f9de7f30) {
            $_01bd92098eb9b90a06202af8f9de7f30->End($_10061afd9f8abf8912cb3e433440c183);
        }
    }
    
    
    
    
    protected function TraverseNodes(array $_10061afd9f8abf8912cb3e433440c183)
    {
        foreach ($_10061afd9f8abf8912cb3e433440c183 as $_5c59c380aa5c5e5f18f039ad7757fe97) {
            foreach ($this->visitors as $_01bd92098eb9b90a06202af8f9de7f30) {
                $_01bd92098eb9b90a06202af8f9de7f30->Enter($_5c59c380aa5c5e5f18f039ad7757fe97);
            }
            $this->TraverseNodes($_5c59c380aa5c5e5f18f039ad7757fe97->Children());
            foreach ($this->visitors as $_01bd92098eb9b90a06202af8f9de7f30) {
                $_01bd92098eb9b90a06202af8f9de7f30->Exit($_5c59c380aa5c5e5f18f039ad7757fe97);
            }
        }
    }
}