Tried out mixins with externs, which I didn't really knew existed. Consider:
class A { int i; void sa (int n) {i = n;} }
class B { extern int i; void sb (int n) {i = n;} }
class C { inherit A; inherit B; void sa2 (int n) {A::i = n;} void sb2 (int n) {B::i = n;} void w() {werror ("C %O %O\n", A::i, B::i);} }
extern variables seem to work alright in that both sa() and sb() assign the same storage. However, what I find surprising is that B::i seems to access a different location in sb2() and w(). Reading it produces 0, regardless what A::i is set to, and trying to set it results in a runtime error. I expected B::i to be an alias for A::i in all respects in C.