SLING-9373 remove compile dependency to guava
diff --git a/pom.xml b/pom.xml
index 1123441..cba0071 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling-bundle-parent</artifactId>
-        <version>36</version>
+        <version>38</version>
         <relativePath />
     </parent>
 
@@ -69,12 +69,11 @@
         </dependency>
     
         <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>15.0</version>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-collections4</artifactId>
+            <version>4.1</version>
             <scope>compile</scope>
         </dependency>
-    
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
@@ -102,6 +101,12 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>15.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <scope>test</scope>
diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/MockNamespaceRegistry.java b/src/main/java/org/apache/sling/testing/mock/jcr/MockNamespaceRegistry.java
index 477a2fe..26763b2 100644
--- a/src/main/java/org/apache/sling/testing/mock/jcr/MockNamespaceRegistry.java
+++ b/src/main/java/org/apache/sling/testing/mock/jcr/MockNamespaceRegistry.java
@@ -23,15 +23,15 @@
 import javax.jcr.NamespaceRegistry;
 import javax.jcr.RepositoryException;
 
-import com.google.common.collect.BiMap;
-import com.google.common.collect.HashBiMap;
+import org.apache.commons.collections4.BidiMap;
+import org.apache.commons.collections4.bidimap.TreeBidiMap;
 
 /**
  * Mock {@link NamespaceRegistry} implementation.
  */
 class MockNamespaceRegistry implements NamespaceRegistry {
 
-    private final BiMap<String, String> namespacePrefixMapping = HashBiMap.create();
+    private final BidiMap<String, String> namespacePrefixMapping = new TreeBidiMap<>();
 
     public MockNamespaceRegistry() {
         this.namespacePrefixMapping.put("jcr", "http://www.jcp.org/jcr/1.0");
@@ -44,7 +44,7 @@
 
     @Override
     public String getPrefix(final String uri) throws RepositoryException {
-        return this.namespacePrefixMapping.inverse().get(uri);
+        return this.namespacePrefixMapping.getKey(uri);
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/MockQuery.java b/src/main/java/org/apache/sling/testing/mock/jcr/MockQuery.java
index 0e56026..cb6b385 100644
--- a/src/main/java/org/apache/sling/testing/mock/jcr/MockQuery.java
+++ b/src/main/java/org/apache/sling/testing/mock/jcr/MockQuery.java
@@ -18,6 +18,7 @@
  */
 package org.apache.sling.testing.mock.jcr;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -30,8 +31,6 @@
 
 import org.osgi.annotation.versioning.ConsumerType;
 
-import com.google.common.collect.ImmutableMap;
-
 /**
  * Mock implementation of {@link Query}.
  */
@@ -97,7 +96,7 @@
     }
     
     public Map<String, Value> getBindVariables() throws RepositoryException {
-        return ImmutableMap.copyOf(variables);
+        return Collections.unmodifiableMap(variables);
     }
     
 
diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/MockQueryManager.java b/src/main/java/org/apache/sling/testing/mock/jcr/MockQueryManager.java
index ddf2c12..6682321 100644
--- a/src/main/java/org/apache/sling/testing/mock/jcr/MockQueryManager.java
+++ b/src/main/java/org/apache/sling/testing/mock/jcr/MockQueryManager.java
@@ -19,7 +19,10 @@
 package org.apache.sling.testing.mock.jcr;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
@@ -31,8 +34,6 @@
 
 import org.apache.commons.lang3.StringUtils;
 
-import com.google.common.collect.ImmutableList;
-
 /**
  * Mock implementation of {@link QueryManager}.
  */
@@ -41,12 +42,12 @@
     private List<MockQueryResultHandler> resultHandlers = new ArrayList<MockQueryResultHandler>();
     
     @SuppressWarnings("deprecation")
-    private static final List<String> SUPPORTED_QUERY_LANGUAGES = ImmutableList.of(
+    private static final List<String> SUPPORTED_QUERY_LANGUAGES = Stream.of(
       Query.JCR_SQL2,
       Query.JCR_JQOM,
       Query.XPATH,
       Query.SQL
-    );
+    ).collect(Collectors.toList());
     
     @Override
     public Query createQuery(String statement, String language) throws RepositoryException {
@@ -73,7 +74,7 @@
             }
         }
         // fallback to empty result
-        return new MockQueryResult(ImmutableList.<Node>of());
+        return new MockQueryResult(Collections.emptyList());
     }
 
     // --- unsupported operations ---
diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/MockQueryResult.java b/src/main/java/org/apache/sling/testing/mock/jcr/MockQueryResult.java
index 3ab0842..84cd1b9 100644
--- a/src/main/java/org/apache/sling/testing/mock/jcr/MockQueryResult.java
+++ b/src/main/java/org/apache/sling/testing/mock/jcr/MockQueryResult.java
@@ -18,24 +18,19 @@
  */
 package org.apache.sling.testing.mock.jcr;
 
+import java.util.Collections;
 import java.util.List;
 
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
 import javax.jcr.RepositoryException;
 import javax.jcr.query.QueryResult;
-import javax.jcr.query.Row;
 import javax.jcr.query.RowIterator;
 
 import org.apache.jackrabbit.commons.iterator.NodeIteratorAdapter;
 import org.apache.jackrabbit.commons.iterator.RowIteratorAdapter;
-import org.jetbrains.annotations.Nullable;
 import org.osgi.annotation.versioning.ProviderType;
 
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
 /**
  * Mock implementation of {@link QueryResult}.
  * Allows to manually set the expected result, optional with column names 
@@ -48,7 +43,7 @@
     private final List<String> columnNames;
     
     public MockQueryResult(List<Node> nodes) {
-        this(nodes, ImmutableList.<String>of());
+        this(nodes, Collections.emptyList());
     }
 
     public MockQueryResult(List<Node> nodes, List<String> columnNames) {
@@ -63,12 +58,9 @@
 
     @Override
     public RowIterator getRows() throws RepositoryException {
-        return new RowIteratorAdapter(Lists.transform(nodes, new Function<Node, Row>() {
-            @Override
-            public Row apply(@Nullable Node node) {
-                return new MockRow(columnNames, node);
-            }
-        }));
+        return new RowIteratorAdapter(nodes.stream()
+                .map(node -> new MockRow(columnNames, node))
+                .iterator());
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java b/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java
index f650365..6271c03 100644
--- a/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java
+++ b/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java
@@ -46,8 +46,6 @@
 import org.apache.jackrabbit.value.ValueFactoryImpl;
 import org.xml.sax.ContentHandler;
 
-import com.google.common.collect.ImmutableSet;
-
 /**
  * Mock {@link Session} implementation. This instance holds the JCR data in a
  * simple ordered map.
@@ -228,8 +226,8 @@
         }
 
         // Find all items matching the source
-        List<ItemData> itemsToMove = new LinkedList<>();
-        for (String key : ImmutableSet.copyOf(items.keySet())) {
+        List<ItemData> itemsToMove = new LinkedList<>();        
+        for (String key : new ArrayList<>(items.keySet())) {
             if (key.startsWith(source.getPath())) {
                 itemsToMove.add(items.remove(key));
             }
@@ -244,7 +242,7 @@
         }
 
         // Cycle items and add them back at the end
-        for (String key : ImmutableSet.copyOf(items.keySet())) {
+        for (String key : new ArrayList<>(items.keySet())) {
             if (key.equals(destination.getPath())) {
                 // Move items before destination
                 for (ItemData item : itemsToMove) {