private function fixCommentBeforeBrace(Tokens $tokens)
{
$tokensAnalyzer = new TokensAnalyzer($tokens);
$controlTokens = $this->getControlTokens();
for ($index = $tokens->count() - 1; 0 <= $index; --$index) {
$token = $tokens[$index];
if ($token->isGivenKind($controlTokens)) {
$prevIndex = $this->findParenthesisEnd($tokens, $index);
} elseif ($token->isGivenKind(T_FUNCTION) && $tokensAnalyzer->isLambda($index) || $token->isGivenKind(T_CLASS) && $tokensAnalyzer->isAnonymousClass($index)) {
$prevIndex = $tokens->getNextTokenOfKind($index, array('{'));
$prevIndex = $tokens->getPrevMeaningfulToken($prevIndex);
} else {
continue;
}
$commentIndex = $tokens->getNextNonWhitespace($prevIndex);
$commentToken = $tokens[$commentIndex];
if (!$commentToken->isGivenKind(T_COMMENT) || '/*' === substr($commentToken->getContent(), 0, 2)) {
continue;
}
$braceIndex = $tokens->getNextMeaningfulToken($commentIndex);
$braceToken = $tokens[$braceIndex];
if (!$braceToken->equals('{')) {
continue;
}
$tokenTmp = $tokens[$braceIndex];
$trimIndex = $tokens->getPrevNonWhitespace($braceIndex);
$tokens[$trimIndex]->setContent(rtrim($tokens[$trimIndex]->getContent()));
$newBraceIndex = $prevIndex + 1;
for ($i = $braceIndex; $i > $newBraceIndex; --$i) {
$tokens[$i] = $tokens[$i - 1];
}
$tokens[$newBraceIndex] = $tokenTmp;
if ($tokens[$braceIndex]->isWhitespace()) {
$tokens[$braceIndex]->clear();
}
}
}