code: public void hide(final View view, final int visibility) {
          if (view.getVisibility() == View.VISIBLE && (visibility == View.INVISIBLE || visibility == View.GONE)) {
              hideNaughtily(view, visibility);
          }
      }
docs: Fades out the specified view and then sets its visibility to the specified
  value (either View.INVISIBLE or View.GONE). If the view is not currently visibile, the
  method will return without doing anything.
  
  @param view       The view to be hidden
  @param visibility The value to which the view's visibility will be set after it fades out.
  Must be either View.VISIBLE or View.INVISIBLE.