"""
Python module generated from Java source file com.google.common.collect.AbstractMultimap

Java source file obtained from artifact guava version 33.3.1-jre

Because this Python module is automatically generated, it may contain errors
and/or code that cannot be parsed. Please report these issues at
https://github.com/magicmq/docs-translator/issues
"""
from com.google.common.annotations import GwtCompatible
from com.google.common.collect import *
from com.google.errorprone.annotations import CanIgnoreReturnValue
from com.google.errorprone.annotations.concurrent import LazyInit
from com.google.j2objc.annotations import WeakOuter
from java.util import AbstractCollection
from java.util import Iterator
from java.util import Spliterator
from javax.annotation import CheckForNull
from org.checkerframework.checker.nullness.qual import Nullable
from typing import Any, Callable, Iterable, Tuple


class AbstractMultimap(Multimap):
    """
    A skeleton `Multimap` implementation, not necessarily in terms of a `Map`.

    Author(s)
    - Louis Wasserman
    """

    def isEmpty(self) -> bool:
        ...


    def containsValue(self, value: "Object") -> bool:
        ...


    def containsEntry(self, key: "Object", value: "Object") -> bool:
        ...


    def remove(self, key: "Object", value: "Object") -> bool:
        ...


    def put(self, key: "K", value: "V") -> bool:
        ...


    def putAll(self, key: "K", values: Iterable["V"]) -> bool:
        ...


    def putAll(self, multimap: "Multimap"["K", "V"]) -> bool:
        ...


    def replaceValues(self, key: "K", values: Iterable["V"]) -> Iterable["V"]:
        ...


    def entries(self) -> Iterable["Entry"["K", "V"]]:
        ...


    def keySet(self) -> set["K"]:
        ...


    def keys(self) -> "Multiset"["K"]:
        ...


    def values(self) -> Iterable["V"]:
        ...


    def asMap(self) -> dict["K", Iterable["V"]]:
        ...


    def equals(self, object: "Object") -> bool:
        ...


    def hashCode(self) -> int:
        """
        Returns the hash code for this multimap.
        
        The hash code of a multimap is defined as the hash code of the map view, as returned by
        Multimap.asMap.

        See
        - Map.hashCode
        """
        ...


    def toString(self) -> str:
        """
        Returns a string representation of the multimap, generated by calling `toString` on the
        map returned by Multimap.asMap.

        Returns
        - a string representation of the multimap
        """
        ...
