def METHOD_NAME(self, value):
    # type: (bytes) -> Union[Tuple, List, OrderedDict, bool, int, str, bytes]
    """
    Decode bencode formatted byte string ``value``.
    :param value: Bencode formatted string
    :type value: bytes
    :return: Decoded value
    :rtype: object
    """
    try:
        value = to_binary(value)
        data, length = self.decode_func[value[0:1]](value, 0)
    except (IndexError, KeyError, TypeError, ValueError):
        raise BencodeDecodeError("not a valid bencoded string")
    if length != len(value):
        raise BencodeDecodeError("invalid bencoded value (data after valid prefix)")
    return data