ntendendo as ramificações nos arquivos gc

Estou tentando entender a saída da ferramenta gcov. Executá-lo sem opções faz sentido, mas quero tentar entender as opções de cobertura da filial. Infelizmente, é difícil entender o que os galhos fazem e por que não são tirados. Abaixo está a saída de um método (compile usando a versão mais recente do LLVM / Clang

function -[TestCoverageAppDelegate loopThroughArray:] called 5 returned 100% blocks executed 88%
        5:   30:- (NSInteger)loopThroughArray:(NSArray *)array {
        5:   31:    NSInteger i = 0;
       22:   32:    for (NSString *string in array) {
branch  0 taken 0
branch  1 taken 7
        -:   33:        
       22:   34:    }
branch  0 taken 4
branch  1 taken 3
branch  2 taken 0
branch  3 taken 3
        5:   35:    return i;
        -:   36:}

Eu executei 5 testes através disso, passando nulo, um array vazio, um array com 1 objeto e um array com 2 objetos e um array com 4 objetos. Posso supor que, no primeiro caso, o ramo 1 signifique "entrar no loop", mas não faço ideia do que é o ramo 0. No segundo caso, a ramificação 0 parece ser repetida novamente, a ramificação 1 parece terminar o loop e a ramificação 3 é continuar / sair do loop, mas não tenho idéia do que seja a ramificação 2 ou por que / quando seria executad

Se alguém souber decifrar as informações da filial ou alguma documentação detalhada sobre o que tudo isso significa, agradeceria a ajud

questionAnswers(1)

yourAnswerToTheQuestion