public function __construct(AstParser $astParser, AstTraverser $astTraverser = null)
{
$this->astParser = $astParser;
if (!$astTraverser) {
$astTraverser = new AstTraverser();
}
$this->astTraverser = $astTraverser;
$this->astTraverser->addVisitor(new AstVisitor\NameResolver());
$this->astTraverser->addVisitor(new AstVisitor\LoopResolver());
$this->astTraverser->addVisitor(new AstVisitor\MagicStringResolver());
}