namespace alpha { class X { int i; void print(); void print(int a); } class Y { void print(); } } namespace beta { class X { void print(); } } --------------- define module alpha use alpha::X, prefix: "X::", export use alpha::Y, prefix: "Y::", export export print; // The keyword-only generic, dispatches to X or Y export i, i-setter; // Only dispatches to X end define module beta use beta::X, prefix: "X::", export export print; // Dispatches to X end define module alpha::X export , i, i-setter, print end define module alpha::Y export , print end define module beta::X export , print end