Code Duplication    Length = 25-28 lines in 2 locations

src/Arrayy.php 2 locations

@@ 622-646 (lines=25) @@
619
         * @psalm-suppress PossiblyInvalidArgument
620
         * @psalm-suppress InvalidScalarArgument
621
         */
622
        if (
623
            $this->pathSeparator
624
            &&
625
            (string) $offset === $offset
626
            &&
627
            \strpos($offset, $this->pathSeparator) !== false
628
        ) {
629
            $explodedPath = \explode($this->pathSeparator, (string) $offset);
630
            if ($explodedPath !== false) {
631
                /** @var string $lastOffset - helper for phpstan */
632
                $lastOffset = \array_pop($explodedPath);
633
                $containerPath = \implode($this->pathSeparator, $explodedPath);
634
635
                /**
636
                 * @psalm-suppress MissingClosureReturnType
637
                 * @psalm-suppress MissingClosureParamType
638
                 */
639
                $this->callAtPath(
640
                    $containerPath,
641
                    static function ($container) use ($lastOffset, &$offsetExists) {
642
                        $offsetExists = \array_key_exists($lastOffset, $container);
643
                    }
644
                );
645
            }
646
        }
647
648
        return $offsetExists;
649
    }
@@ 719-746 (lines=28) @@
716
         * @psalm-suppress PossiblyInvalidArgument
717
         * @psalm-suppress InvalidScalarArgument
718
         */
719
        if (
720
            $this->pathSeparator
721
            &&
722
            (string) $offset === $offset
723
            &&
724
            \strpos($offset, $this->pathSeparator) !== false
725
        ) {
726
            $path = \explode($this->pathSeparator, (string) $offset);
727
728
            if ($path !== false) {
729
                $pathToUnset = \array_pop($path);
730
731
                /**
732
                 * @psalm-suppress MissingClosureReturnType
733
                 * @psalm-suppress MissingClosureParamType
734
                 */
735
                $this->callAtPath(
736
                    \implode($this->pathSeparator, $path),
737
                    static function (&$offset) use ($pathToUnset) {
738
                        if (\is_array($offset)) {
739
                            unset($offset[$pathToUnset]);
740
                        } else {
741
                            $offset = null;
742
                        }
743
                    }
744
                );
745
            }
746
        }
747
748
        unset($this->array[$offset]);
749
    }