code: @SuppressWarnings("unchecked")
    public static <InType> CombiningIterable<InType> createSplatted(
        Iterable<? extends Iterable<InType>> in,
        Comparator<InType> comparator
    )
    {
      return create(
          new MergeIterable<InType>(comparator, (Iterable<Iterable<InType>>) in),
          comparator,
          new BinaryFn<InType, InType, InType>()
          {
            @Override
            public InType apply(InType arg1, InType arg2)
            {
              if (arg1 == null) {
                return arg2;
              }
              return arg1;
            }
          }
      );
    }
docs: Creates a CombiningIterable around a MergeIterable such that equivalent elements are thrown away
  
  If there are multiple Iterables in parameter "in" with equivalent objects, there are no guarantees
  around which object will win.  You will get *some* object from one of the Iterables, but which Iterable is
  unknown.
  
  @param in An Iterable of Iterables to be merged
  @param comparator the Comparator to determine sort and equality
  @param <InType> Type of object
  @return An Iterable that is the merge of all Iterables from in such that there is only one instance of
  equivalent objects.