code: def shorten_line(tokens, source, indentation, indent_word, max_line_length,
                   aggressive=False, experimental=False, previous_line=''):
      
      for candidate in _shorten_line(tokens=tokens,
                                     source=source,
                                     indentation=indentation,
                                     indent_word=indent_word,
                                     aggressive=aggressive,
                                     previous_line=previous_line):
          yield candidate
  
      if aggressive:
          for key_token_strings in SHORTEN_OPERATOR_GROUPS:
              shortened = _shorten_line_at_tokens(
                  tokens=tokens,
                  source=source,
                  indentation=indentation,
                  indent_word=indent_word,
                  key_token_strings=key_token_strings,
                  aggressive=aggressive)
  
              if shortened is not None and shortened != source:
                  yield shortened
  
      if experimental:
          for shortened in _shorten_line_at_tokens_new(
                  tokens=tokens,
                  source=source,
                  indentation=indentation,
                  max_line_length=max_line_length):
  
              yield shortened
docs: Separate line at OPERATOR.
  
      Multiple candidates will be yielded.