protected function getTokenValue(array $tokens, array $endings, $iteration, $skip_whitespace = true)
    {
        $value = null;
        $count = count($tokens);

        for ($i = $iteration + 1; $i < $count; ++$i) {
            $token = is_array($tokens[$i])
                ? $tokens[$i][0]
                : trim($tokens[$i]);

            if ($token === T_WHITESPACE
                && $skip_whitespace) {
                continue;
            }

            if (in_array($token, $endings)) {
                break;
            }

            $value .= isset($tokens[$i][1]) ? $tokens[$i][1] : $token;
        }

        return $value;
    }