public function truncate(EncodedPayload $payload)
    {
        foreach (static::$truncationStrategies as $strategy) {
            $strategy = new $strategy($this);
            
            if (!$strategy->applies($payload)) {
                continue;
            }
            
            if (!$this->needsTruncating($payload, $strategy)) {
                break;
            }

            $this->config->verboseLogger()->debug('Applying truncation strategy ' . get_class($strategy));
    
            $payload = $strategy->execute($payload);
        }
        
        return $payload;
    }