--------------- module 1 ---------------
abstract class Base {
protected final typeof(this) a() { return this; }
protected final typeof(this) b() { return this; }
}
--------------- module 2 ---------------
final class Class : Base {
this() {
a(); // ok
b(); // ok
a().b(); // error, b() call is not accessible from this
module
}
}