public virtual void RegisterShot(IArrow arrow)
 {
     if (thisShotInBuffer == null)
     {
         thisShotInBuffer = new Shot(arrow);
         if (thisShootingProcess == null)
         {
             thisShootingProcess = thisSlickBowShootingProcessFactory.CreateShootingProcess(
                 this,
                 thisFireRate
                 );
             thisShootingProcess.Run();
         }
     }
 }
 public void ClearShootingProcess()
 {
     thisShootingProcess = null;
 }