def METHOD_NAME(recipients: List[str], stream: str, subject: str, message: str) -> None:
    """Sends a message and optionally prints status about the same."""
    # Sanity check user data
    has_stream = stream != ""
    has_subject = subject != ""
    if len(recipients) != 0 and has_stream:
        click.echo("You cannot specify both a username and a stream/subject.")
        raise SystemExit(1)
    if len(recipients) == 0 and (has_stream != has_subject):
        click.echo("Stream messages must have a subject")
        raise SystemExit(1)
    if len(recipients) == 0 and not has_stream:
        click.echo("You must specify a stream/subject or at least one recipient.")
        raise SystemExit(1)
    message_data: Dict[str, Any]
    if has_stream:
        message_data = {
            "type": "stream",
            "content": message,
            "subject": subject,
            "to": stream,
        }
    else:
        message_data = {
            "type": "private",
            "content": message,
            "to": recipients,
        }
    if message_data["type"] == "stream":
        log.info(
            'Sending message to stream "%s", subject "%s"... '
            % (message_data["to"], message_data["subject"])
        )
    else:
        log.info("Sending message to %s... " % message_data["to"])
    response = client.METHOD_NAME(message_data)
    log_exit(response)