In practice, interface variables will only hold endpoints.  However, we may lose type information that internal value is an endpoint by the time that we put it into an interface variable.  This is because user-declared interfaces do not maintain that they wrap endpoints.
Emitter no longer references or emits any of previous serialization code.  Still tons of bugs with emit test cases.