code: public static <E> Set<E> difference(Set<? extends E> s1, Set<? extends E> s2) {
        Set<E> copy1 = new HashSet<>(s1);
        copy1.removeAll(new HashSet<>(s2));
        return copy1;
     }
docs: Returns the elements that are present in s1 but which are not present
  in s2, without changing the contents of neither s1, nor s2.
  
  @param s1 first set
  @param s2 second set
  @param <E> type of objects in Set
  @return the elements in s1 that are not in s2