# this is fine: class A { ... } # other code here class A { # actually implement A here } # this dies, because class B is re-declared class B { fail('Unimplemented') } # other code here class A { # <-- ERROR # whatever }