/**
  * @param string $name
  *
  * @return SimpleSlot|null
  */
 public function getSlot($name)
 {
     if (in_array($name, $this->cache->dirtySymbols, true)) {
         for ($slot = $this->lastSlot; $slot !== null; $slot = $slot->parent) {
             if ($slot->getName() === $name) {
                 return $slot;
             }
         }
     }
     return $this->cache->getSlot($name);
 }
 public static function createJoinOperation()
 {
     return new BinaryJoinOp(function (LinkedFlowScope $a, LinkedFlowScope $b) {
         $a->frozen = true;
         $b->frozen = true;
         if ($a->optimize() === $b->optimize()) {
             return $a->createChildFlowScope();
         }
         return new LinkedFlowScope(FlatFlowScopeCache::createFromLinkedScopes($a, $b));
     });
 }