content: // Classe abstrata que define o manipulador na cadeia
  abstract class Suporte {
      protected Suporte proximo; // Referência para o próximo handler
  
      // Define o próximo handler da cadeia
      public void setProximo(Suporte proximo) {
          this.proximo = proximo;
      }
  
      // Método abstrato a ser implementado por cada tipo de suporte
      public abstract void tratar(String tipoProblema);
  }
  
  // Handler para problemas simples como senha
  class SuporteBasico extends Suporte {
      @Override
      public void tratar(String tipoProblema) {
          if (tipoProblema.equals("senha")) {
              System.out.println("Suporte Básico resolveu: problema de senha.");
          } else if (proximo != null) {
              proximo.tratar(tipoProblema); // Passa para o próximo se não puder resolver
          }
      }
  }
  
  // Handler para problemas mais complexos como falhas de sistema
  class SuporteAvancado extends Suporte {
      @Override
      public void tratar(String tipoProblema) {
          if (tipoProblema.equals("sistema")) {
              System.out.println("Suporte Avançado resolveu: problema no sistema.");
          } else if (proximo != null) {
              proximo.tratar(tipoProblema);
          }
      }
  }
  
  // Último handler da cadeia, lida com qualquer outro tipo de problema
  class Gerente extends Suporte {
      @Override
      public void tratar(String tipoProblema) {
          System.out.println("Gerente resolveu: problema grave - " + tipoProblema);
      }
  }
  
  // Classe principal
  public class Main {
      public static void main(String[] args) {
          Suporte basico = new SuporteBasico();
          Suporte avancado = new SuporteAvancado();
          Suporte gerente = new Gerente();
  
          // Define a cadeia de responsabilidade
          basico.setProximo(avancado);
          avancado.setProximo(gerente);
  
          // Teste: cada chamada vai sendo repassada até alguém resolver
          basico.tratar("senha");
          basico.tratar("sistema");
          basico.tratar("servidor");
      }
  }
  