diff --git a/include/utils/JenkinsHash.h b/include/utils/JenkinsHash.h
index e964e6f..7da5dbd 100644
--- a/include/utils/JenkinsHash.h
+++ b/include/utils/JenkinsHash.h
@@ -19,6 +19,9 @@
  * should still be quite good.
  **/
 
+#ifndef ANDROID_JENKINS_HASH_H
+#define ANDROID_JENKINS_HASH_H
+
 #include <utils/TypeHelpers.h>
 
 namespace android {
@@ -42,3 +45,4 @@
 
 }
 
+#endif // ANDROID_JENKINS_HASH_H
diff --git a/include/utils/LruCache.h b/include/utils/LruCache.h
index 2a70d76..937fe1e 100644
--- a/include/utils/LruCache.h
+++ b/include/utils/LruCache.h
@@ -36,6 +36,9 @@
 
     void setOnEntryRemovedListener(OnEntryRemoved<TKey, TValue>* listener);
     size_t size() const;
+    const TKey& keyAt(size_t index) const;
+    const TValue& valueAt(size_t index) const;
+    void removeAt(size_t index);
     const TValue& get(const TKey& key);
     bool put(const TKey& key, const TValue& value);
     bool remove(const TKey& key);
@@ -86,6 +89,27 @@
 }
 
 template <typename TKey, typename TValue>
+const TKey& LruCache<TKey, TValue>::keyAt(size_t index) const {
+    const Entry& entry = mTable->entryAt(index);
+    return entry.key;
+}
+
+template <typename TKey, typename TValue>
+const TValue& LruCache<TKey, TValue>::valueAt(size_t index) const {
+    const Entry& entry = mTable->entryAt(index);
+    return entry.value;
+}
+
+template <typename TKey, typename TValue>
+void LruCache<TKey, TValue>::removeAt(size_t index) {
+    if (index < 0) {
+        return;
+    }
+
+    mTable->removeAt(index);
+}
+
+template <typename TKey, typename TValue>
 const TValue& LruCache<TKey, TValue>::get(const TKey& key) {
     hash_t hash = hash_type(key);
     ssize_t index = mTable->find(-1, hash, key);
