code: private function getPreviousBlock(Tokens $tokens, $index)
      {
          $close = $previous = $tokens->getPrevMeaningfulToken($index);
          // short 'if' detection
          if ($tokens[$close]->equals('}')) {
              $previous = $tokens->findBlockStart(Tokens::BLOCK_TYPE_CURLY_BRACE, $close);
          }
  
          $open = $tokens->getPrevTokenOfKind($previous, [[T_IF], [T_ELSE], [T_ELSEIF]]);
          if ($tokens[$open]->isGivenKind(T_IF)) {
              $elseCandidate = $tokens->getPrevMeaningfulToken($open);
              if ($tokens[$elseCandidate]->isGivenKind(T_ELSE)) {
                  $open = $elseCandidate;
              }
          }
  
          return [$open, $close];
      }
docs: Return the first and last token index of the previous block.
  
  [0] First is either T_IF, T_ELSE or T_ELSEIF
  [1] Last is either '}' or ';' / T_CLOSE_TAG for short notation blocks
  
  @param Tokens $tokens
  @param int    $index  T_IF, T_ELSE, T_ELSEIF
  
  @return int[]