original_string: private function extract(string $method, array $arguments)
      {
          try {
              $serializedArguments = serialize($arguments);
          } catch (\Exception $exception) {
              // If arguments are not serializable, skip the cache
              return $this->propertyInfoExtractor->{$method}(...$arguments);
          }
  
          // Calling rawurlencode escapes special characters not allowed in PSR-6's keys
          $encodedMethod = \rawurlencode($method);
          if (\array_key_exists($encodedMethod, $this->arrayCache) && \array_key_exists($serializedArguments, $this->arrayCache[$encodedMethod])) {
              return $this->arrayCache[$encodedMethod][$serializedArguments];
          }
  
          $item = $this->cacheItemPool->getItem($encodedMethod);
  
          $data = $item->get();
          if ($item->isHit()) {
              $this->arrayCache[$encodedMethod] = $data[$encodedMethod];
              // Only match if the specific arguments have been cached.
              if (\array_key_exists($serializedArguments, $data[$encodedMethod])) {
                  return $this->arrayCache[$encodedMethod][$serializedArguments];
              }
          }
  
          // It's possible that the method has been called, but with different
          // arguments, in which case $data will already be initialized.
          if (!$data) {
              $data = [];
          }
  
          $value = $this->propertyInfoExtractor->{$method}(...$arguments);
          $data[$encodedMethod][$serializedArguments] = $value;
          $this->arrayCache[$encodedMethod][$serializedArguments] = $value;
          $item->set($data);
          $this->cacheItemPool->save($item);
  
          return $this->arrayCache[$encodedMethod][$serializedArguments];
      }
code: private function extract(string $method, array $arguments)
      {
          try {
              $serializedArguments = serialize($arguments);
          } catch (\Exception $exception) {
              // If arguments are not serializable, skip the cache
              return $this->propertyInfoExtractor->{$method}(...$arguments);
          }
  
          // Calling rawurlencode escapes special characters not allowed in PSR-6's keys
          $encodedMethod = \rawurlencode($method);
          if (\array_key_exists($encodedMethod, $this->arrayCache) && \array_key_exists($serializedArguments, $this->arrayCache[$encodedMethod])) {
              return $this->arrayCache[$encodedMethod][$serializedArguments];
          }
  
          $item = $this->cacheItemPool->getItem($encodedMethod);
  
          $data = $item->get();
          if ($item->isHit()) {
              $this->arrayCache[$encodedMethod] = $data[$encodedMethod];
              // Only match if the specific arguments have been cached.
              if (\array_key_exists($serializedArguments, $data[$encodedMethod])) {
                  return $this->arrayCache[$encodedMethod][$serializedArguments];
              }
          }
  
          // It's possible that the method has been called, but with different
          // arguments, in which case $data will already be initialized.
          if (!$data) {
              $data = [];
          }
  
          $value = $this->propertyInfoExtractor->{$method}(...$arguments);
          $data[$encodedMethod][$serializedArguments] = $value;
          $this->arrayCache[$encodedMethod][$serializedArguments] = $value;
          $item->set($data);
          $this->cacheItemPool->save($item);
  
          return $this->arrayCache[$encodedMethod][$serializedArguments];
      }
code_tokens: private function extract ( string $ method , array $ arguments ) { try { $ serializedArguments = serialize ( $ arguments ) ; } catch ( \ Exception $ exception ) { // If arguments are not serializable, skip the cache return $ this -> propertyInfoExtractor -> { $ method } ( ... $ arguments ) ; } // Calling rawurlencode escapes special characters not allowed in PSR-6's keys $ encodedMethod = \ rawurlencode ( $ method ) ; if ( \ array_key_exists ( $ encodedMethod , $ this -> arrayCache ) && \ array_key_exists ( $ serializedArguments , $ this -> arrayCache [ $ encodedMethod ] ) ) { return $ this -> arrayCache [ $ encodedMethod ] [ $ serializedArguments ] ; } $ item = $ this -> cacheItemPool -> getItem ( $ encodedMethod ) ; $ data = $ item -> get ( ) ; if ( $ item -> isHit ( ) ) { $ this -> arrayCache [ $ encodedMethod ] = $ data [ $ encodedMethod ] ; // Only match if the specific arguments have been cached. if ( \ array_key_exists ( $ serializedArguments , $ data [ $ encodedMethod ] ) ) { return $ this -> arrayCache [ $ encodedMethod ] [ $ serializedArguments ] ; } } // It's possible that the method has been called, but with different // arguments, in which case $data will already be initialized. if ( ! $ data ) { $ data = [ ] ; } $ value = $ this -> propertyInfoExtractor -> { $ method } ( ... $ arguments ) ; $ data [ $ encodedMethod ] [ $ serializedArguments ] = $ value ; $ this -> arrayCache [ $ encodedMethod ] [ $ serializedArguments ] = $ value ; $ item -> set ( $ data ) ; $ this -> cacheItemPool -> save ( $ item ) ; return $ this -> arrayCache [ $ encodedMethod ] [ $ serializedArguments ] ; }
docstring: Retrieves the cached data if applicable or delegates to the decorated extractor.
  
  @return mixed
docstring_tokens: Retrieves the cached data if applicable or delegates to the decorated extractor .