code: protected void removeCrouton(Crouton crouton) {
      // If the crouton hasn't been displayed yet a `Crouton.hide()` will fail to hide
      // it since the DISPLAY message might still be in the queue. Remove all messages
      // for this crouton.
      removeAllMessagesForCrouton(crouton);
  
      View croutonView = crouton.getView();
      ViewGroup croutonParentView = (ViewGroup) croutonView.getParent();
  
      if (null != croutonParentView) {
        croutonView.startAnimation(crouton.getOutAnimation());
  
        // Remove the Crouton from the queue.
        Crouton removed = croutonQueue.poll();
  
        // Remove the crouton from the view's parent.
        croutonParentView.removeView(croutonView);
        if (null != removed) {
          removed.detachActivity();
          removed.detachViewGroup();
          if (null != removed.getLifecycleCallback()) {
            removed.getLifecycleCallback().onRemoved();
          }
          removed.detachLifecycleCallback();
        }
  
        // Send a message to display the next crouton but delay it by the out
        // animation duration to make sure it finishes
        sendMessageDelayed(crouton, Messages.DISPLAY_CROUTON, crouton.getOutAnimation().getDuration());
      }
    }
docs: Removes the {@link Crouton}'s view after it's display
  durationInMilliseconds.
  
  @param crouton
  The {@link Crouton} added to a {@link ViewGroup} and should be
  removed.