def _verify_notif_contents(packet):
    """
    Verify the contents of a result packet
        - Returns False, list of errors if verification fails
                            OR
        - Returns True, None if passes verification
    """
    errors = []

    # Key "id" not allowed in a JSON-RPC notification
    if "id" in packet:
        errors.append("Key 'id' is not allowed in a JSON-RPC notification")

    # Method isn't in the packet, required key
    if "method" not in packet:
        errors.append("method")

    # We don't want to run this code if either of these keys are missing
    # Only run it if failed == False
    if not len(errors) > 0:
        if not isinstance(packet["method"], str):
            errors.append("Key 'method' is not required type str")

        # If it exists, "params" must be list or dict
        if packet.get("params", None) is not None and \
           not isinstance(packet, (dict, list)):
            errors.append("Key 'params' is not required structured type "
                          "(list/dict)")

    if len(errors) > 0:
        # It failed, so return list of "Missing required key 'KEY'"
        #   for each 1 length strings (keys) OR
        #   just the error string if length > 1
        return False, ["Missing required key '{}'".format(err)
                       if len(err.split()) == 1 else err
                       for err in errors]
    else:
        # Success, execution to this point means the packet has passed
        return True, None