package com.todoist.pojo;

import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

class Utils {
    static boolean equals(Object a, Object b) {
        return a == b || (a != null && a.equals(b));
    }

    static int clamp(int val, int min, int max) {
        return val < min ? min : (val > max ? max : val);
    }

    static <T> Set<T> unmodifiableSet(Collection<? extends T> s) {
        if (s != null) {
            return Collections.unmodifiableSet(new HashSet<T>(s));
        } else {
            // The empty set is immutable.
            return Collections.emptySet();
        }
    }

    static <T> Set<T> unmodifiableSetWithElement(Set<? extends T> set, T el) {
        HashSet<T> copy = new HashSet<>(set.size() + 1);
        copy.addAll(set);
        copy.add(el);
        return Collections.unmodifiableSet(copy);
    }

    static <T> Set<T> unmodifiableSetWithoutElement(Set<? extends T> set, T el) {
        HashSet<T> copy = new HashSet<>(set.size() - 1);
        copy.addAll(set);
        copy.remove(el);
        return Collections.unmodifiableSet(copy);
    }
}

@@ -715,32 +715,66 @@
 T%3E set, T el) %7B%0A
+        if (!set.isEmpty()) %7B%0A    
         HashSet%3C
@@ -814,32 +814,36 @@
 ) + 1);%0A        
+    
 copy.addAll(set)
@@ -844,32 +844,36 @@
 l(set);%0A        
+   
+ 
 copy.add(el);%0A  
@@ -866,24 +866,28 @@
 py.add(el);%0A
+    
         retu
@@ -920,24 +920,140 @@
 eSet(copy);%0A
+        %7D else %7B%0A            // The singleton is immutable.%0A            return Collections.singleton(el);%0A        %7D%0A
     %7D%0A%0A    s
@@ -1121,32 +1121,66 @@
 T%3E set, T el) %7B%0A
+        if (!set.isEmpty()) %7B%0A    
         HashSet%3C
@@ -1220,32 +1220,36 @@
 ) - 1);%0A        
+    
 copy.addAll(set)
@@ -1254,24 +1254,28 @@
 t);%0A        
+ 
+   
 copy.remove(
@@ -1275,24 +1275,28 @@
 remove(el);%0A
+    
         retu
@@ -1329,20 +1329,133 @@
 eSet(copy);%0A
+        %7D else %7B%0A            // The empty set is immutable.%0A            return Collections.emptySet();%0A        %7D%0A
     %7D%0A%7D%0A

Improve utility methods