No método de redução de fluxo, a identidade deve sempre ser 0 para soma e 1 para multiplicação?

Prossigo o java 8 learning.

Eu encontrei um comportamento interessante:

vamos ver o exemplo de código:

// identity value and accumulator and combiner
        Integer summaryAge = Person.getPersons().stream()
                //.parallel()  //will return surprising result
                .reduce(1, (intermediateResult, p) -> intermediateResult + p.age,
                        (ir1, ir2) -> ir1 + ir2);
        System.out.println(summaryAge);

e classe de modelo:

public class Person {

    String name;

    Integer age;
    ///...

    public static Collection<Person> getPersons() {
        List<Person> persons = new ArrayList<>();
        persons.add(new Person("Vasya", 12));
        persons.add(new Person("Petya", 32));
        persons.add(new Person("Serj", 10));
        persons.add(new Person("Onotole", 18));
        return persons;
   }
}

12 + 32 + 10 + 18 = 72
Para fluxo sequencial, esse código retorna 73 (72 + 1) sempre, mas para paralelo retorna 76 (72 + 4 * 1) sempre. 4 - elementos de fluxo contam.

Quando vi esse resultado, achei estranho o fluxo paralelo e o fluxo sequencial retornarem resultados diferentes.

Eu quebrei contrato em algum lugar?

P.S.

para mim 73 é resultado esperado, mas 76 - não.

questionAnswers(6)

yourAnswerToTheQuestion