That's probably what I mentioned before: Once you do getModule(Signal) the compiler types the entire module, which means all subtypes. Calling addMetadata on these afterwards then has absolutely no effect.