code: protected function parseClassMemberModifiers(
          array $token,
          array &$tokens,
          &$accessModifier,
          &$isStatic,
          &$isAbstract,
          &$source
      ) {
          $this->typeCheck->parseClassMemberModifiers(func_get_args());
  
          $isStatic = false;
          $isAbstract = false;
          $source = '';
  
          while ($token) {
              $token = $this->normalizeToken($token);
              $source .= $token[1];
              if (
                  T_FUNCTION === $token[0] ||
                  T_VARIABLE === $token[0]
              ) {
                  break;
              } elseif (
                  T_PUBLIC === $token[0] ||
                  T_PROTECTED === $token[0] ||
                  T_PRIVATE === $token[0]
              ) {
                  $accessModifier = AccessModifier::instanceByValue(
                      strtolower($token[1])
                  );
              } elseif (T_STATIC === $token[0]) {
                  $isStatic = true;
              } elseif (T_ABSTRACT === $token[0]) {
                  $isAbstract = true;
              }
  
              $token = next($tokens);
          }
  
          return $token;
      }
docs: @param tuple<integer,string,integer> $token
  @param array<string|array>           &$tokens
  @param null                          &$accessModifier
  @param null                          &$isStatic
  @param null                          &$isAbstract
  @param null                          &$source
  
  @return tuple<integer|string,string,integer|null>