private function replaceClassKeywords(Tokens $tokens, $namespaceNumber = -1)
{
$namespaceIndexes = array_keys($tokens->findGivenKind(T_NAMESPACE));
// Namespace blocks
if (!empty($namespaceIndexes) && isset($namespaceIndexes[$namespaceNumber])) {
$startIndex = $namespaceIndexes[$namespaceNumber];
$namespaceBlockStartIndex = $tokens->getNextTokenOfKind($startIndex, array(';', '{'));
$endIndex = $tokens[$namespaceBlockStartIndex]->equals('{') ? $tokens->findBlockEnd(Tokens::BLOCK_TYPE_CURLY_BRACE, $namespaceBlockStartIndex) : $tokens->getNextTokenOfKind($namespaceBlockStartIndex, array(T_NAMESPACE));
$endIndex = $endIndex ?: $tokens->count() - 1;
} elseif (-1 === $namespaceNumber) {
// Out of any namespace block
$startIndex = 0;
$endIndex = !empty($namespaceIndexes) ? $namespaceIndexes[0] : $tokens->count() - 1;
} else {
return;
}
$this->storeImports($tokens, $startIndex, $endIndex);
$tokens->rewind();
$this->replaceClassKeywordsSection($tokens, $startIndex, $endIndex);
$this->replaceClassKeywords($tokens, $namespaceNumber + 1);
}