Rather than peeking inside the ScalarizedVectors/SplitVectors members, which are an implementation detail not otherwise leaked to this file, query getTypeAction to determine whether or not the type will have been scalarized/split. Also use more existing helper functions to simplify the implementations in the case where the RHS is legal but the LHS is not.