code: def deprecated_conditional(predicate,
                             removal_version,
                             entity_description,
                             hint_message=None,
                             stacklevel=4):
    
    validate_deprecation_semver(removal_version, 'removal version')
    if predicate():
      warn_or_error(removal_version, entity_description, hint_message, stacklevel=stacklevel)
docs: Marks a certain configuration as deprecated.
  
    The predicate is used to determine if that configuration is deprecated. It is a function that
    will be called, if true, then the deprecation warning will issue.
  
    :param () -> bool predicate: A function that returns True if the deprecation warning should be on.
    :param string removal_version: The pants version which will remove the deprecated functionality.
    :param string entity_description: A description of the deprecated entity.
    :param string hint_message: An optional hint pointing to alternatives to the deprecation.
    :param int stacklevel: How far up in the stack do we go to find the calling fn to report
    :raises DeprecationApplicationError if the deprecation is applied improperly.