code: @Override
      public String get(int index) {
          if (index >= 0 && index < components.size()) {
              return components.get(index);
          }
  
          if (index >= components.size() && index < components.size() + namedComponents.size()) {
              int namedIndex = index - components.size();
              List<String> namedValues = new ArrayList<>(namedComponents.values());
              return namedValues.get(namedIndex);
          }
  
          throw new IndexOutOfBoundsException("Attempting access token component " + index +
                                              " when only " + size() + " components are available.");
  
      }
docs: Retrieve the component at the specified index from this {@code DefaultAuthenticationToken} object.
  @param index the index of the component to retrieve
  @return the component at the specified index from this {@code DefaultAuthenticationToken} object.
  @throws IndexOutOfBoundsException when the specified index is larger than the number of added components.