Add short-cut path taking when the paremter type is equal to own type

Change-Id: Ifbc3ea11c901b1496adcc8d0a372c86cd27969e2
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/GenericDiscreteResources.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/GenericDiscreteResources.java
index 4672d81..9c7292d 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/GenericDiscreteResources.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/GenericDiscreteResources.java
@@ -81,9 +81,13 @@
     // returns a new instance, not mutate the current instance
     @Override
     public DiscreteResources add(DiscreteResources other) {
-        Set<DiscreteResource> newValues = new LinkedHashSet<>(this.values);
-        newValues.addAll(other.values());
-        return new GenericDiscreteResources(newValues);
+        if (other instanceof GenericDiscreteResources) {
+            return new GenericDiscreteResources(Sets.union(this.values(), other.values()));
+        } else if (other instanceof EmptyDiscreteResources) {
+            return this;
+        }
+
+        return DiscreteResources.of(Sets.union(this.values(), other.values()));
     }
 
     @Override