Track and verify required semantics

Since parameter names are part of the public API in Scala, the param should be named `semantics`, not `semantics0`.