Wouldn't this end up calling the wrong, i.e. non-`immutable`/`shared` constructor for types that are qualified as such?