Much of this code is redundant to SliceExp::implicitConvTo(). Perhaps refactor out common code to a SliceExp::xxxxx() function?