, true>> */ $subNodes = $this->getConfig($class = \get_class($expr), false); if (!$subNodes) { return; } foreach ($subNodes as $key => $types) { /** @var Expr $value */ $value = &$expr->{$key}; if (!isset($types[\get_class($value)])) { continue; } switch ($class) { case ArrayDimFetch::class: case PropertyFetch::class: case MethodCall::class: case New_::class: case Instanceof_::class: $value = self::callPoly('returnMe', $value); break; case FuncCall::class: $expr->var = self::callPoly('returnMe', $expr->var); break; } } } /** * Returns the data provided. * * @param mixed $data Data * * @return mixed * * @template T * * @psalm-param T $data data * * @psalm-return T */ public static function returnMe($data) { return $data; } }