original_string: public function popStorage()
      {
          if ( count( $this->storageStack ) === 0 )
          {
              throw new ezcCacheStackUnderflowException();
          }
          $storageConf = array_shift( $this->storageStack );
          unset( $this->storageIdMap[$storageConf->id] );
          return $storageConf;
      }
code: public function popStorage()
      {
          if ( count( $this->storageStack ) === 0 )
          {
              throw new ezcCacheStackUnderflowException();
          }
          $storageConf = array_shift( $this->storageStack );
          unset( $this->storageIdMap[$storageConf->id] );
          return $storageConf;
      }
code_tokens: public function popStorage ( ) { if ( count ( $ this -> storageStack ) === 0 ) { throw new ezcCacheStackUnderflowException ( ) ; } $ storageConf = array_shift ( $ this -> storageStack ) ; unset ( $ this -> storageIdMap [ $ storageConf -> id ] ) ; return $ storageConf ; }
docstring: Removes a storage from the top of the stack.
  
  This method can be used to remove the top most {@link
  ezcCacheStackableStorage} from the stack. This is commonly done to
  remove caches or to insert new ones into lower positions. In both cases,
  it is recommended to {@link ezcCacheStack::reset()} the whole cache
  afterwards to avoid any kind of inconsistency.
  
  @return ezcCacheStackStorageConfiguration
  
  @throws ezcCacheStackUnderflowException
  if called on an empty stack.
docstring_tokens: Removes a storage from the top of the stack .