code: private function cloneValue($value)
      {
          if (is_array($value)) {
              $cloned = [];
              foreach ($value as $key => $arrValue) {
                  $cloned[$key] = $this->cloneValue($arrValue);
              }
          } elseif ($value instanceof self) {
              $cloned = clone $value;
              foreach (get_object_vars($cloned) as $prop => $propValue) {
                  $cloned->{$prop} = $this->cloneValue($propValue);
              }
          } else {
              $cloned = $value;
          }
  
          return $cloned;
      }
docs: @param string|NodeList|Location|Node|(Node|NodeList|Location)[] $value
  
  @return string|NodeList|Location|Node