/// <summary>
 /// </summary>
 /// <param name="target"></param>
 private void PerformModeCombo(AttackableUnit target = null)
 {
     if (CanAttack() && target.CanGetOrbwalked())
     {
         Attack(target);
     }
 }
        /// <summary>
        ///     Internal function for the mixed mode logic
        /// </summary>
        /// <param name="target"><see cref="AttackableUnit" /> Optional target (usually <see cref="Obj_AI_Hero" />)</param>
        private void PerformModeMixed(AttackableUnit target = null)
        {
            if (target.CanGetOrbwalked() && !ShouldWait())
            {
                Attack(target);
                return;
            }

            PerformModeLastHit();
        }
        /// <summary>
        ///     Internal function for the lane freeze logic
        /// </summary>
        /// <param name="target"><see cref="AttackableUnit" /> Optional target (usually <see cref="Obj_AI_Hero" />)</param>
        private void PerformModeLaneFreeze(AttackableUnit target = null)
        {
            if (target.CanGetOrbwalked() && !ShouldWait())
            {
                Attack(target);
                return;
            }

            var minion = GetKillableMinion(MinionTypes.All, HealthPredictionType.Default, 0.5);

            if (minion != null)
            {
                Attack(minion);
            }
        }