bool Board::doesKoRuleApply (const Chain & potentiallyCapturedChain) const
{
    LOG_FUNCTION(cout, "Board::doesKoRuleApply");

    // IF the potentially captured chain has only one stone AND
    // the potentially captured stone was the stone the opposing player just played (m_koState.second) AND
    // the previously played stone had captured a single stone (m_koState.first)
    // THEN the Ko rule applies and the move is invalid.
    //
    if (potentiallyCapturedChain.size() == 1)
    {
        if (m_koState.first && potentiallyCapturedChain.containsPoint(m_koState.second))
        {
            gLogger.log(LogLevel::kMedium, cout, "The Ko rule was enforced"); // " for point ", m_koState.second);
            return true;
        }
    }

    return false;
}