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;
    }
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;
    }
@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>