$stmt) { if (! $stmt instanceof Use_) { continue; } $this->removeUseFromUse($removedShortUses, $stmt); // nothing left → remove if (count($stmt->uses) === 0) { unset($stmts[$stmtKey]); } } return $stmts; } /** * @param string[] $removedShortUses */ public function removeImportsFromNamespace(Namespace_ $namespace, array $removedShortUses): void { foreach ($namespace->stmts as $namespaceKey => $stmt) { if (! $stmt instanceof Use_) { continue; } $this->removeUseFromUse($removedShortUses, $stmt); // nothing left → remove if (count($stmt->uses) === 0) { unset($namespace->stmts[$namespaceKey]); } } } /** * @param string[] $removedShortUses */ private function removeUseFromUse(array $removedShortUses, Use_ $use): void { foreach ($use->uses as $usesKey => $useUse) { foreach ($removedShortUses as $removedShortUse) { if ($useUse->name->getLast() !== $removedShortUse) { continue; } unset($use->uses[$usesKey]); } } } }