> */ public function getNodeTypes() : array { return [FuncCall::class]; } /** * @param FuncCall $node */ public function refactor(Node $node) : ?Node { if (!$this->isName($node, 'array_merge')) { return null; } $array = new Array_(); $isAssigned = \false; foreach ($node->args as $arg) { // found non Arg? return early if (!$arg instanceof Arg) { return null; } $nestedArrayItem = $arg->value; if (!$nestedArrayItem instanceof Array_) { return null; } foreach ($nestedArrayItem->items as $nestedArrayItemItem) { if (!$nestedArrayItemItem instanceof ArrayItem) { continue; } $array->items[] = new ArrayItem($nestedArrayItemItem->value, $nestedArrayItemItem->key); $isAssigned = \true; } } if (!$isAssigned) { return null; } return $array; } }