code: public function equals($other, $caseSensitive = true)
      {
          if ($other instanceof self) {
              // Inlined getPrototype() on this very hot path.
              // We access the private properties of $other directly to save function call overhead.
              // This is only possible because $other is of the same class as `self`.
              if (!$other->isArray) {
                  $otherPrototype = $other->content;
              } else {
                  $otherPrototype = [
                      $other->id,
                      $other->content,
                  ];
              }
          } else {
              $otherPrototype = $other;
          }
  
          if ($this->isArray !== \is_array($otherPrototype)) {
              return false;
          }
  
          if (!$this->isArray) {
              return $this->content === $otherPrototype;
          }
  
          if ($this->id !== $otherPrototype[0]) {
              return false;
          }
  
          if (isset($otherPrototype[1])) {
              if ($caseSensitive) {
                  if ($this->content !== $otherPrototype[1]) {
                      return false;
                  }
              } elseif (0 !== strcasecmp($this->content, $otherPrototype[1])) {
                  return false;
              }
          }
  
          // detect unknown keys
          unset($otherPrototype[0], $otherPrototype[1]);
  
          return empty($otherPrototype);
      }
docs: Check if token is equals to given one.
  
  If tokens are arrays, then only keys defined in parameter token are checked.
  
  @param array|string|Token $other         token or it's prototype
  @param bool               $caseSensitive perform a case sensitive comparison
  
  @return bool