diff --git a/java/gov/nist/core/MultiMap.java b/java/gov/nist/core/MultiMap.java
deleted file mode 100644
index 1bcf845..0000000
--- a/java/gov/nist/core/MultiMap.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package gov.nist.core;
-
-/*
- * Copyright 1999-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.Map;
-
-/** 
- * This is simply a Map with slightly different semantics.
- * Instead of returning an Object, it returns a Collection.
- * So for example, you can put( key, new Integer(1) ); 
- * and then a Object get( key ); will return you a Collection 
- * instead of an Integer.
- * Thus, this is simply a tag interface.
- *
- * @since 2.0
- * @author Christopher Berry
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- */
-public interface MultiMap extends Map {
-    
-    public Object remove( Object key, Object item );
-   
-}
diff --git a/java/gov/nist/core/MultiValueMap.java b/java/gov/nist/core/MultiValueMap.java
index 51b8174..8c6920c 100644
--- a/java/gov/nist/core/MultiValueMap.java
+++ b/java/gov/nist/core/MultiValueMap.java
@@ -5,5 +5,6 @@
 import java.util.Map;
 
 public interface MultiValueMap<K,V> extends Map<K,List<V>>, Serializable {
-    public Object remove( K key, V item );
+    // remove(K, V) conflicts with a Map method added in 1.8. http://b/27426743
+    /*public Object remove( K key, V item );*/
 }
diff --git a/java/gov/nist/core/MultiValueMapImpl.java b/java/gov/nist/core/MultiValueMapImpl.java
index 04368e8..90ef324 100644
--- a/java/gov/nist/core/MultiValueMapImpl.java
+++ b/java/gov/nist/core/MultiValueMapImpl.java
@@ -122,14 +122,15 @@
         return this.map.keySet();
     }
 
-    public Object remove(String key, V item) {
+    // remove(K, V) conflicts with a Map method added in 1.8. http://b/27426743
+    /*public Object remove(String key, V item) {
         ArrayList<V> list = this.map.get(key);
         if (list == null) {
             return null;
         } else {
             return list.remove(item);
         }
-    }
+    }*/
 
     public List<V> get(Object key) {
         return map.get(key);
