Code Duplication    Length = 25-28 lines in 2 locations

src/Arrayy.php 2 locations

@@ 673-697 (lines=25) @@
670
         * @psalm-suppress PossiblyInvalidArgument
671
         * @psalm-suppress InvalidScalarArgument
672
         */
673
        if (
674
            $this->pathSeparator
675
            &&
676
            (string) $offset === $offset
677
            &&
678
            \strpos($offset, $this->pathSeparator) !== false
679
        ) {
680
            $explodedPath = \explode($this->pathSeparator, (string) $offset);
681
            if ($explodedPath !== false) {
682
                /** @var string $lastOffset - helper for phpstan */
683
                $lastOffset = \array_pop($explodedPath);
684
                $containerPath = \implode($this->pathSeparator, $explodedPath);
685
686
                /**
687
                 * @psalm-suppress MissingClosureReturnType
688
                 * @psalm-suppress MissingClosureParamType
689
                 */
690
                $this->callAtPath(
691
                    $containerPath,
692
                    static function ($container) use ($lastOffset, &$offsetExists) {
693
                        $offsetExists = \array_key_exists($lastOffset, $container);
694
                    }
695
                );
696
            }
697
        }
698
699
        return $offsetExists;
700
    }
@@ 777-804 (lines=28) @@
774
         * @psalm-suppress PossiblyInvalidArgument
775
         * @psalm-suppress InvalidScalarArgument
776
         */
777
        if (
778
            $this->pathSeparator
779
            &&
780
            (string) $offset === $offset
781
            &&
782
            \strpos($offset, $this->pathSeparator) !== false
783
        ) {
784
            $path = \explode($this->pathSeparator, (string) $offset);
785
786
            if ($path !== false) {
787
                $pathToUnset = \array_pop($path);
788
789
                /**
790
                 * @psalm-suppress MissingClosureReturnType
791
                 * @psalm-suppress MissingClosureParamType
792
                 */
793
                $this->callAtPath(
794
                    \implode($this->pathSeparator, $path),
795
                    static function (&$offset) use ($pathToUnset) {
796
                        if (\is_array($offset)) {
797
                            unset($offset[$pathToUnset]);
798
                        } else {
799
                            $offset = null;
800
                        }
801
                    }
802
                );
803
            }
804
        }
805
806
        unset($this->array[$offset]);
807
    }