Lógica do incrementador

Estou tentando me aprofundar com pós e pré-incrementadores, mas estou um pouco preso com a seguinte expressão:

public static void main(String[] args) {
    int i = 0;
    i = i+=(++i + (i+=2 + --i) - ++i);
    // i = 0 + (++i + (i+=2 + --i) - ++i);
    // i = 0 + (1 + (3 + 2) - 1);
    // i = 0 + (6 - 1);
    System.out.println(i); // Prints 0 instead of 5
}

Eu sei que estou perdendo a lógica em algum lugar, mas onde?

O que eu tentei:

Indo da esquerda para a direita (embora eu saiba que não é recomendado)Indo do suporte mais insidioso e a partir daí.

Obrigado pela ajuda

PS: Os comentários são os detalhes do meu cálculo

EDIT 1

Tentei alterar o valor codificado da expressão de2 para outra coisa e o resultado sempre dá0

Veja este exemplo:

    int i = 0;
    i = i+=(++i + (i+=32500 + --i) - ++i);
    System.out.println(i); // Prints 0

Essa expressão deve estar logicamente longe de0 mas de alguma forma ele imprime.

O mesmo acontece quando eu uso um negativo:

    int i = 0;
    i = i+=(++i + (i+=(-32650) + --i) - ++i);
    System.out.println(i); // Prints 0

EDIT 2

Agora, mudei o valor dei começar com :

    int i = 1;
    i = i+=(++i + (i+=2 + --i) - ++i);
    System.out.println(i); // Prints 2

    i = 2;
    i = i+=(++i + (i+=10000 + --i) - ++i);
    System.out.println(i); // Prints 4

    i = 3;
    i = i+=(++i + (i+=(-32650) + --i) - ++i);
    System.out.println(i); // Prints 6

Dá o dobro dei a qualquer momento, seja qual for o valor codificado.

questionAnswers(7)

yourAnswerToTheQuestion