about this alternative if provided.
        pending : bool, optional
            If True, uses a PendingDeprecationWarning instead of a
            DeprecationWarning. Cannot be used together with removal.
        obj_type : str, optional
            The object type being deprecated.
        addendum : str, optional
            Additional text appended directly to the final message.
        removal : str, optional
            The expected removal version. With the default (an empty
            string), a removal version is automatically computed from
            since. Set to other Falsy values to not schedule a removal
            date. Cannot be used together with pending.
    """
    if pending and removal:
        raise ValueError("A pending deprecation cannot have a scheduled removal")
    if not pending:
        if not removal:
            removal = f"in {removal}" if removal else "within ?? minor releases"
            raise NotImplementedError(
                f"Need to determine which default deprecation schedule to use. "
                f"{removal}"
            )
        else:
            removal = f"in {removal}"
    if not message:
        message = ""
        if obj_type:
            message += f"The {obj_type} `{name}`"
        else:
            message += f"`{name}`"
        if pending:
            message += " will be deprecated in a future version"
        else:
            message += f" was deprecated in LangChain {since}"
            if removal:
                message += f" and will be removed {removal}"
        if alternative:
            message += f". Use {alternative} instead."
        if addendum:
            message += f" {addendum}"
    warning_cls = PendingDeprecationWarning if pending else LangChainDeprecationWarning
    warning = warning_cls(message)