code: private boolean markSpans(int count, int after) {
          int cursor = getSelectionStart();
          MentionsEditable text = getMentionsText();
          MentionSpan prevSpan = text.getMentionSpanEndingAt(cursor);
  
          if (count == (after + 1) && prevSpan != null) {
  
              // Cursor was directly behind a span and was moved back one, so delete it if selected,
              // or select it if not already selected
              if (prevSpan.isSelected()) {
                  Mentionable mention = prevSpan.getMention();
                  Mentionable.MentionDeleteStyle deleteStyle = mention.getDeleteStyle();
                  Mentionable.MentionDisplayMode displayMode = prevSpan.getDisplayMode();
                  // Determine new DisplayMode given previous DisplayMode and MentionDeleteStyle
                  if (deleteStyle == Mentionable.MentionDeleteStyle.PARTIAL_NAME_DELETE
                          && displayMode == Mentionable.MentionDisplayMode.FULL) {
                      prevSpan.setDisplayMode(Mentionable.MentionDisplayMode.PARTIAL);
                  } else {
                      prevSpan.setDisplayMode(Mentionable.MentionDisplayMode.NONE);
                  }
              } else {
                  // Span was not selected, so select it
                  prevSpan.setSelected(true);
              }
  
              return true;
          }
  
          return false;
      }
docs: Marks a span for deletion later if necessary by checking if the last character in a MentionSpan
  is deleted by this change. If so, mark the span to be deleted later when
  {@link #ensureMentionSpanIntegrity(Editable)} is called in {@link #handleTextChanged()}.
  
  @param count length of affected text before change starting at start in text
  @param after length of affected text after change
  
  @return  true if there is a span before the cursor that is going to change state