SLING-8737 - Add support for lazily-evaluated bindings

* implemented equals and hashCode for LazyBindings, since the class
extends HashMap, but also has its own fields
diff --git a/src/main/java/org/apache/sling/api/scripting/LazyBindings.java b/src/main/java/org/apache/sling/api/scripting/LazyBindings.java
index 8bbe55b..3dff1a6 100644
--- a/src/main/java/org/apache/sling/api/scripting/LazyBindings.java
+++ b/src/main/java/org/apache/sling/api/scripting/LazyBindings.java
@@ -139,11 +139,6 @@
     }
 
     @Override
-    public boolean containsValue(Object value) {
-        return super.containsValue(value);
-    }
-
-    @Override
     public Object get(Object key) {
         String k = key.toString();
         if (!super.containsKey(k) && suppliers.containsKey(k)) {
@@ -167,6 +162,23 @@
     }
 
     @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o instanceof LazyBindings && super.equals(o)) {
+            LazyBindings other = (LazyBindings) o;
+            return suppliers.equals(other.suppliers);
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return super.hashCode() + suppliers.hashCode();
+    }
+
+    @Override
     public Object getOrDefault(Object key, Object defaultValue) {
         Object result = get(key);
         if (result == null) {