def METHOD_NAME(dut):
    """
    Fetch the drop counter capabilities for the given device.
    Args:
        dut (SonicHost): The device to query for drop counter capabilities.
    Returns:
        A Dictionary containing 1) A Dictionary that maps from supported counter types to the
        number of support counters of that type, and 2) a Dictionary that maps from supported
        counter types to drop reasons that are supported for that type.
        If drop counters are not supported on this device, then an empty dictionary will be
        returned, like this: `{"counters": {}, "reasons": {}}`.
        If any other error occurs, then None will be returned.
    """
    output = dut.command(_SHOW_CAPABILITIES)
    if output["rc"] == 2:
        return {"counters": {}, "reasons": {}}
    elif output["rc"]:
        return None
    if "does not support drop counters" in output["stdout"]:
        return {"counters": {}, "reasons": {}}
    counters = {}
    reasons = {}
    # Delete the header.
    output = output["stdout_lines"][2:]
    # Extract the supported counter types and quantities from the first
    # part of the output. We'll parse until we hit the empty line.
    line = output.pop(0)
    while line:
        line = line.split()
        counters[line[0]] = int(line[1])
        reasons[line[0]] = []
        line = output.pop(0)
    # Extract the supported drop reasons from the second part of the output.
    curr_type = []
    for line in output:
        if not line:
            continue
        elif line in SUPPORTED_COUNTER_TYPES:
            curr_type = reasons[line]
        else:
            curr_type.append(line.strip())
    return {"counters": counters, "reasons": reasons}