[Collections] Add ImCollections.addElementIfAbsent(IdentityList)

Change-Id: I4c8f2f07b87011394805f136aaea04424a8cf2aa
diff --git a/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/collections/ImCollections.java b/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/collections/ImCollections.java
index 5249621..f7b387f 100644
--- a/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/collections/ImCollections.java
+++ b/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/collections/ImCollections.java
@@ -815,6 +815,18 @@
 		}
 	}
 	
+	public static <E> ImIdentityList<E> addElementIfAbsent(final IdentityList<? extends E> l, final E e) {
+		if (l.isEmpty()) {
+			return new ImSingletonIdentityList<>(e);
+		}
+		else if (!l.contains(e)) {
+			return addElement(l, e);
+		}
+		else {
+			return toIdentityList(l);
+		}
+	}
+	
 	@SuppressWarnings("unchecked")
 	public static <E> ImIdentityList<E> removeElement(final IdentityList<? extends E> l,
 			final @Nullable Object e) {