> */ public function getNodeTypes() : array { return [Return_::class]; } /** * @param Return_ $node */ public function refactor(Node $node) : ?Node { $previousNode = $node->getAttribute(AttributeKey::PREVIOUS_NODE); if (!$previousNode instanceof If_) { return null; } if ($previousNode->elseifs !== []) { return null; } if ($previousNode->else instanceof Else_) { return null; } $countStmt = \count($previousNode->stmts); if ($countStmt === 0) { $this->removeNode($previousNode); return $node; } if ($countStmt > 1) { return null; } $stmt = $previousNode->stmts[0]; if (!$stmt instanceof Return_) { return null; } if (!$this->nodeComparator->areNodesEqual($stmt, $node)) { return null; } $this->removeNode($previousNode); return $node; } }