code: public static <A> Set<A> intersection(Set<A> first, Set<A> second) {
  
          HashSet<A> result = new HashSet<A>(first);
          result.retainAll(second);
          return result;
      }
docs: Returns the intersection of two sets without modifying the original sets.<p>
  
  @param <A> the type of objects contained in the sets
  
  @param first the first set
  @param second the second set
  
  @return the intersection of both sets