Pass now works for more complex cases.
Fixed a problem where the transformation wasn't being performed because of a check that wasn't necessary.
The transformation was not performed because of a value being used in more than one list. This check is not
necessary since LLVM uses SSA form which means that any conversions of types will not effect uses of that
variable in any other instruction.