private function simplifyReturnStatement(
        Tokens $tokens,
        $assignVarIndex,
        $assignVarOperatorIndex,
        $returnIndex,
        $returnVarEndIndex
    ) {
        $inserted = 0;
        $originalIndent = $tokens[$assignVarIndex - 1]->isWhitespace()
            ? $tokens[$assignVarIndex - 1]->getContent()
            : null
        ;

        // remove the return statement
        if ($tokens[$returnVarEndIndex]->equals(';')) { // do not remove PHP close tags
            $tokens->clearTokenAndMergeSurroundingWhitespace($returnVarEndIndex);
        }

        for ($i = $returnIndex; $i <= $returnVarEndIndex - 1; ++$i) {
            $this->clearIfSave($tokens, $i);
        }

        // remove no longer needed indentation of the old/remove return statement
        if ($tokens[$returnIndex - 1]->isWhitespace()) {
            $content = $tokens[$returnIndex - 1]->getContent();
            $fistLinebreakPos = strrpos($content, "\n");
            $content = false === $fistLinebreakPos
                ? ' '
                : substr($content, $fistLinebreakPos)
            ;

            $tokens[$returnIndex - 1] = new Token([T_WHITESPACE, $content]);
        }

        // remove the variable and the assignment
        for ($i = $assignVarIndex; $i <= $assignVarOperatorIndex; ++$i) {
            $this->clearIfSave($tokens, $i);
        }

        // insert new return statement
        $tokens->insertAt($assignVarIndex, new Token([T_RETURN, 'return']));
        ++$inserted;

        // use the original indent of the var assignment for the new return statement
        if (
            null !== $originalIndent
            && $tokens[$assignVarIndex - 1]->isWhitespace()
            && $originalIndent !== $tokens[$assignVarIndex - 1]->getContent()
        ) {
            $tokens[$assignVarIndex - 1] = new Token([T_WHITESPACE, $originalIndent]);
        }

        // remove trailing space after the new return statement which might be added during the clean up process
        $nextIndex = $tokens->getNonEmptySibling($assignVarIndex, 1);
        if (!$tokens[$nextIndex]->isWhitespace()) {
            $tokens->insertAt($nextIndex, new Token([T_WHITESPACE, ' ']));
            ++$inserted;
        }

        return $inserted;
    }
private function simplifyReturnStatement(
        Tokens $tokens,
        $assignVarIndex,
        $assignVarOperatorIndex,
        $returnIndex,
        $returnVarEndIndex
    ) {
        $inserted = 0;
        $originalIndent = $tokens[$assignVarIndex - 1]->isWhitespace()
            ? $tokens[$assignVarIndex - 1]->getContent()
            : null
        ;

        
        if ($tokens[$returnVarEndIndex]->equals(';')) { 
            $tokens->clearTokenAndMergeSurroundingWhitespace($returnVarEndIndex);
        }

        for ($i = $returnIndex; $i <= $returnVarEndIndex - 1; ++$i) {
            $this->clearIfSave($tokens, $i);
        }

        
        if ($tokens[$returnIndex - 1]->isWhitespace()) {
            $content = $tokens[$returnIndex - 1]->getContent();
            $fistLinebreakPos = strrpos($content, "\n");
            $content = false === $fistLinebreakPos
                ? ' '
                : substr($content, $fistLinebreakPos)
            ;

            $tokens[$returnIndex - 1] = new Token([T_WHITESPACE, $content]);
        }

        
        for ($i = $assignVarIndex; $i <= $assignVarOperatorIndex; ++$i) {
            $this->clearIfSave($tokens, $i);
        }

        
        $tokens->insertAt($assignVarIndex, new Token([T_RETURN, 'return']));
        ++$inserted;

        
        if (
            null !== $originalIndent
            && $tokens[$assignVarIndex - 1]->isWhitespace()
            && $originalIndent !== $tokens[$assignVarIndex - 1]->getContent()
        ) {
            $tokens[$assignVarIndex - 1] = new Token([T_WHITESPACE, $originalIndent]);
        }

        
        $nextIndex = $tokens->getNonEmptySibling($assignVarIndex, 1);
        if (!$tokens[$nextIndex]->isWhitespace()) {
            $tokens->insertAt($nextIndex, new Token([T_WHITESPACE, ' ']));
            ++$inserted;
        }

        return $inserted;
    }
private function simplifyReturnStatement ( Tokens $ tokens , $ assignVarIndex , $ assignVarOperatorIndex , $ returnIndex , $ returnVarEndIndex ) { $ inserted = 0 ; $ originalIndent = $ tokens [ $ assignVarIndex - 1 ] -> isWhitespace ( ) ? $ tokens [ $ assignVarIndex - 1 ] -> getContent ( ) : null ; // remove the return statement if ( $ tokens [ $ returnVarEndIndex ] -> equals ( ';' ) ) { // do not remove PHP close tags $ tokens -> clearTokenAndMergeSurroundingWhitespace ( $ returnVarEndIndex ) ; } for ( $ i = $ returnIndex ; $ i <= $ returnVarEndIndex - 1 ; ++ $ i ) { $ this -> clearIfSave ( $ tokens , $ i ) ; } // remove no longer needed indentation of the old/remove return statement if ( $ tokens [ $ returnIndex - 1 ] -> isWhitespace ( ) ) { $ content = $ tokens [ $ returnIndex - 1 ] -> getContent ( ) ; $ fistLinebreakPos = strrpos ( $ content , "\n" ) ; $ content = false === $ fistLinebreakPos ? ' ' : substr ( $ content , $ fistLinebreakPos ) ; $ tokens [ $ returnIndex - 1 ] = new Token ( [ T_WHITESPACE , $ content ] ) ; } // remove the variable and the assignment for ( $ i = $ assignVarIndex ; $ i <= $ assignVarOperatorIndex ; ++ $ i ) { $ this -> clearIfSave ( $ tokens , $ i ) ; } // insert new return statement $ tokens -> insertAt ( $ assignVarIndex , new Token ( [ T_RETURN , 'return' ] ) ) ; ++ $ inserted ; // use the original indent of the var assignment for the new return statement if ( null !== $ originalIndent && $ tokens [ $ assignVarIndex - 1 ] -> isWhitespace ( ) && $ originalIndent !== $ tokens [ $ assignVarIndex - 1 ] -> getContent ( ) ) { $ tokens [ $ assignVarIndex - 1 ] = new Token ( [ T_WHITESPACE , $ originalIndent ] ) ; } // remove trailing space after the new return statement which might be added during the clean up process $ nextIndex = $ tokens -> getNonEmptySibling ( $ assignVarIndex , 1 ) ; if ( ! $ tokens [ $ nextIndex ] -> isWhitespace ( ) ) { $ tokens -> insertAt ( $ nextIndex , new Token ( [ T_WHITESPACE , ' ' ] ) ) ; ++ $ inserted ; } return $ inserted ; }
@param Tokens $tokens
@param int    $assignVarIndex
@param int    $assignVarOperatorIndex
@param int    $returnIndex
@param int    $returnVarEndIndex

@return int >= 0 number of tokens inserted into the Tokens collection
@param Tokens $tokens @param int $assignVarIndex @param int $assignVarOperatorIndex @param int $returnIndex @param int $returnVarEndIndex