docs: public void dismiss(){
  		if(mState != STATE_SHOWN)
  			return;
  		
  		removeCallbacks(mDismissRunnable);
  
          if(mOutAnimation != null){
              mOutAnimation.cancel();
              mOutAnimation.reset();
              mOutAnimation.setAnimationListener(new Animation.AnimationListener() {
  				
  				@Override
  				public void onAnimationStart(Animation animation) {
  					setState(STATE_DISMISSING);
  				}
  				
  				@Override
  				public void onAnimationRepeat(Animation animation) {}
  				
  				@Override
  				public void onAnimationEnd(Animation animation) {
  					if(mRemoveOnDismiss && getParent() != null && getParent() instanceof ViewGroup)
  						((ViewGroup)getParent()).removeView(SnackBar.this);
  					
  					setState(STATE_DISMISSED);
                      setVisibility(View.GONE);
  				}
  			});
              clearAnimation();
  			startAnimation(mOutAnimation);
  		}
  		else{
  			if(mRemoveOnDismiss && getParent() != null && getParent() instanceof ViewGroup)
  				((ViewGroup)getParent()).removeView(this);
  			
  			setState(STATE_DISMISSED);
              setVisibility(View.GONE);
  		}		
  		
  	}