def METHOD_NAME(obj):
    """
    Converts a protobuf response into a simple python dictionary.
    Args:
        obj (Any): A deserialized protobuf object.
    Returns:
        dict of {str : Any}: A nested set of keys and values with structure matching the protobuf input.
    """
    results = {}
    if isinstance(obj, Message):
        for field in obj.ListFields():
            name = field[0].name
            field_type = get_classname(type(field[1]))
            prop_value = field[1]
            if field_type in (int, float, bool):
                results[name] = prop_value
            elif field_type == "str":
                if prop_value != "":
                    results[name] = prop_value
            elif field_type == "google._upb._message.RepeatedCompositeContainer":
                if len(prop_value) > 0:
                    results[name] = [METHOD_NAME(sub_obj) for sub_obj in prop_value]
            elif field_type == "google.protobuf.timestamp_pb2.Timestamp":
                results[name] = get_datetime(prop_value).isoformat()
            elif field_type.startswith("pandas."):
                results[name] = prop_value
            elif isinstance(prop_value, Message):
                results[name] = METHOD_NAME(prop_value)
            else:
                results[name] = prop_value
    return results