/**
 * Braces
 */
class Example {
    SomeClass fField = new SomeClass() {
        public int value;
    };
    void bar(int p) {
        for (int i = 0; i < 10; i++) {
            fField.add(i);
        }
        switch (p) {
            case 0 :
                fField.set(0);
                break;
            default :
            }
        }
}