(I did not suggest to use just `upcast l` because we might not want to expose the internal object)