diff --git a/drivers/optical/src/main/java/org/onosproject/driver/optical/query/CalientLambdaQuery.java b/drivers/optical/src/main/java/org/onosproject/driver/optical/query/CalientLambdaQuery.java
index 05d7f7e..3f0bf48 100644
--- a/drivers/optical/src/main/java/org/onosproject/driver/optical/query/CalientLambdaQuery.java
+++ b/drivers/optical/src/main/java/org/onosproject/driver/optical/query/CalientLambdaQuery.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.driver.optical.query;
 
+import org.onlab.util.GuavaCollectors;
 import org.onlab.util.Spectrum;
 import org.onosproject.net.ChannelSpacing;
 import org.onosproject.net.GridType;
@@ -24,7 +25,6 @@
 import org.onosproject.net.driver.AbstractHandlerBehaviour;
 
 import java.util.Set;
-import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
 /**
@@ -48,6 +48,6 @@
         return IntStream.rangeClosed((int) startSpacingMultiplier, (int) stopSpacingMultiplier)
                 .filter(i -> i % 2 == 1)
                 .mapToObj(i -> new OchSignal(GridType.FLEX, ChannelSpacing.CHL_6P25GHZ, i, 1))
-                .collect(Collectors.toSet());
+                .collect(GuavaCollectors.toImmutableSet());
     }
 }
diff --git a/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OFOpticalSwitch13LambdaQuery.java b/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OFOpticalSwitch13LambdaQuery.java
index 733cbd5..6bd4574 100644
--- a/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OFOpticalSwitch13LambdaQuery.java
+++ b/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OFOpticalSwitch13LambdaQuery.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.driver.optical.query;
 
+import org.onlab.util.GuavaCollectors;
 import org.onosproject.net.ChannelSpacing;
 import org.onosproject.net.OchSignal;
 import org.onosproject.net.Port;
@@ -28,7 +29,6 @@
 
 import java.util.Collections;
 import java.util.Set;
-import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
 /**
@@ -60,6 +60,6 @@
         // OMS ports expose 'lambdaCount' fixed grid lambdas of 50GHz width, starting from min-frequency 191.7 THz.
         return IntStream.rangeClosed(1, lambdaCount)
                 .mapToObj(x -> OchSignal.newDwdmSlot(ChannelSpacing.CHL_50GHZ, x))
-                .collect(Collectors.toSet());
+                .collect(GuavaCollectors.toImmutableSet());
     }
 }
diff --git a/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OplinkEdfaLambdaQuery.java b/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OplinkEdfaLambdaQuery.java
index c8bf529..6bc8e85 100644
--- a/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OplinkEdfaLambdaQuery.java
+++ b/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OplinkEdfaLambdaQuery.java
@@ -16,10 +16,10 @@
 package org.onosproject.driver.optical.query;
 
 import java.util.Set;
-import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
 import org.onlab.util.Spectrum;
+import org.onlab.util.GuavaCollectors;
 import org.onosproject.net.ChannelSpacing;
 import org.onosproject.net.GridType;
 import org.onosproject.net.OchSignal;
@@ -46,6 +46,6 @@
     public Set<OchSignal> queryLambdas(PortNumber port) {
         return IntStream.rangeClosed((int) startSpacingMultiplier, (int) stopSpacingMultiplier)
                 .mapToObj(x -> new OchSignal(GridType.FLEX, ChannelSpacing.CHL_6P25GHZ, x, 1))
-                .collect(Collectors.toSet());
+                .collect(GuavaCollectors.toImmutableSet());
     }
 }
diff --git a/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OplinkRoadmLambdaQuery.java b/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OplinkRoadmLambdaQuery.java
index 1532a80..597184c 100644
--- a/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OplinkRoadmLambdaQuery.java
+++ b/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OplinkRoadmLambdaQuery.java
@@ -16,9 +16,9 @@
 package org.onosproject.driver.optical.query;
 
 import java.util.Set;
-import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
+import org.onlab.util.GuavaCollectors;
 import org.onosproject.net.ChannelSpacing;
 import org.onosproject.net.OchSignal;
 import org.onosproject.net.PortNumber;
@@ -43,6 +43,6 @@
     public Set<OchSignal> queryLambdas(PortNumber port) {
         return IntStream.rangeClosed(MIN_CHANNEL, MAX_CHANNEL)
                 .mapToObj(x -> OchSignal.newDwdmSlot(ChannelSpacing.CHL_50GHZ, x))
-                .collect(Collectors.toSet());
+                .collect(GuavaCollectors.toImmutableSet());
     }
-}
\ No newline at end of file
+}
diff --git a/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OplinkSwitchLambdaQuery.java b/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OplinkSwitchLambdaQuery.java
index 21c41bf..aea358b 100644
--- a/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OplinkSwitchLambdaQuery.java
+++ b/drivers/optical/src/main/java/org/onosproject/driver/optical/query/OplinkSwitchLambdaQuery.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.driver.optical.query;
 
+import org.onlab.util.GuavaCollectors;
 import org.onlab.util.Spectrum;
 import org.onosproject.net.ChannelSpacing;
 import org.onosproject.net.GridType;
@@ -24,7 +25,6 @@
 import org.onosproject.net.driver.AbstractHandlerBehaviour;
 
 import java.util.Set;
-import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
 /**
@@ -46,6 +46,6 @@
         // Only consider odd values for the multiplier (for easy mapping to fixed grid)
         return IntStream.rangeClosed((int) startSpacingMultiplier, (int) stopSpacingMultiplier)
                 .mapToObj(x -> new OchSignal(GridType.FLEX, ChannelSpacing.CHL_6P25GHZ, x, 1))
-                .collect(Collectors.toSet());
+                .collect(GuavaCollectors.toImmutableSet());
     }
 }
