class BedrockAnthropicUsage {
        private int input_tokens;
        private int output_tokens;
    }

    @Override
    public String getOutputText() {
        return content.stream().map(BedrockAnthropicContent::getText).collect(Collectors.joining("\n\n"));
    }

    @Override
    public FinishReason getFinishReason() {
        switch (stop_reason) {
        case "end_turn":
          case "stop_sequence":
            return FinishReason.STOP;
          case "max_tokens":
                return FinishReason.LENGTH;
            default:
                throw new IllegalArgumentException("Unknown stop reason: " + stop_reason);
        }
    }

    @Override
    public TokenUsage getTokenUsage() {<FILL_FUNCTION_BODY>

      if (usage != null) {
          int totalTokenCount = usage.input_tokens + usage.output_tokens;
          return new TokenUsage(usage.input_tokens, usage.output_tokens, totalTokenCount);
      } else {
          return null;
      }
    
<no_super_class>