public function __construct(ControlFlowGraph $cfg)
 {
     parent::__construct($cfg, new ConstPropJoinOp());
 }
 public function __construct(ControlFlowGraph $cfg, Scope $scope)
 {
     parent::__construct($cfg, self::createJoinOperation());
     $this->scope = $scope;
 }
 public function __construct(ControlFlowGraph $cfg, ReverseInterpreterInterface $reverseInterpreter, FunctionInterpreterInterface $functionInterpreter, MethodInterpreter\MethodInterpreterInterface $methodInterpreter, \Scrutinizer\PhpAnalyzer\PhpParser\DocCommentParser $commentParser, Scope $functionScope, TypeRegistry $registry, LoggerInterface $logger = null)
 {
     parent::__construct($cfg, self::createJoinOperation());
     $this->reverseInterpreter = $reverseInterpreter;
     $this->functionInterpreter = $functionInterpreter;
     $this->methodInterpreter = $methodInterpreter;
     $this->syntacticScope = $functionScope;
     $this->commentParser = $commentParser;
     $this->functionScope = LinkedFlowScope::createLatticeElement($functionScope);
     $this->bottomScope = LinkedFlowScope::createLatticeElement(Scope::createBottomScope($functionScope->getRootNode(), $functionScope->getTypeOfThis()));
     $this->typeRegistry = $registry;
     $this->logger = $logger ?: new NullLogger();
 }