docs: public void setPanelState(PanelState state) {
  
          // Abort any running animation, to allow state change
          if(mDragHelper.getViewDragState() == ViewDragHelper.STATE_SETTLING){
              Log.d(TAG, "View is settling. Aborting animation.");
              mDragHelper.abort();
          }
  
          if (state == null || state == PanelState.DRAGGING) {
              throw new IllegalArgumentException("Panel state cannot be null or DRAGGING.");
          }
          if (!isEnabled()
                  || (!mFirstLayout && mSlideableView == null)
                  || state == mSlideState
                  || mSlideState == PanelState.DRAGGING) return;
  
          if (mFirstLayout) {
              setPanelStateInternal(state);
          } else {
              if (mSlideState == PanelState.HIDDEN) {
                  mSlideableView.setVisibility(View.VISIBLE);
                  requestLayout();
              }
              switch (state) {
                  case ANCHORED:
                      smoothSlideTo(mAnchorPoint, 0);
                      break;
                  case COLLAPSED:
                      smoothSlideTo(0, 0);
                      break;
                  case EXPANDED:
                      smoothSlideTo(1.0f, 0);
                      break;
                  case HIDDEN:
                      int newTop = computePanelTopPosition(0.0f) + (mIsSlidingUp ? +mPanelHeight : -mPanelHeight);
                      smoothSlideTo(computeSlideOffset(newTop), 0);
                      break;
              }
          }
      }