Lógica de incremento

Estoy tratando de profundizar con post y pre incrementos, pero estoy un poco atascado con la siguiente expresión:

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
}

Sé que me falta la lógica en algún lugar, pero ¿dónde?

Lo que probé:

Ir de izquierda a derecha (aunque sé que no es recomendable)Yendo desde el soporte interior y comenzando desde allí.

Gracias por la ayuda

PD: Los comentarios son los detalles de mi cálculo.

EDITAR 1

Traté de cambiar el valor codificado de la expresión de2 a otra cosa y el resultado siempre da0

Mira este ejemplo:

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

Esta expresión no debería estar lógicamente cerca0 pero de alguna manera lo imprime.

Lo mismo sucede cuando uso un negativo:

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

EDITAR 2

Ahora, cambié el valor dei para empezar :

    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

Da el doble dei cada vez, sea cual sea el valor codificado.

Respuestas a la pregunta(7)

Su respuesta a la pregunta