/**
 * 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 :
            }
        }
}