When do I need (not) to cast summation of bytes in Java?

It is about constant expressions and compile time constant expressions and constant variables!
class ByteCasting {
    void byteCasting() {
        // No casting required, foo is final
        // and foo + foo definetly fits in a byte!
        final byte foo = 1;
        byte fooFoo = foo + foo;
 
        // cast required, bar is final but
        // 64 + 64 will not fit in a byte!
        final byte bar = 64;
        byte barBar = (byte) (bar + bar);
 
        // This one resembles the first example,
        // but you still need the cast!
        byte baz = 1;
        final byte bazCopy = baz;
        byte bazCopyBazCopy = (byte) (bazCopy + bazCopy);
 
        // Resembles the first example, but cast required!
        final byte qux;
        qux = 1;
        byte quxQux = (byte) (qux + qux);
 
        // What is going on in here?
        // Here: http://stackoverflow.com/questions/43026241
    }
}