Using the HaveTwoPair and Not(HaveTopTwoPair and HaveBottomeTwoPair) is my way of saying you have Middle two pair
The part of the code line that was true was PairOnBoard so assuming the Not(.....) it wouldn't have ran
This is the Demorgan Rule :
not (A and B) = not A or not B
not (A or B) = not A and not B
If you write when HaveTwoPair and Not(HaveTopTwoPair and HaveBottomTwoPair)
it can be rewritten to when HaveTwoPair and Not HaveTopTwoPair or Not HaveBottomTwoPair
So this line is a disaster because it will be executed even if you have nothing because of the "or Not HaveBottomTwoPair"
To write the line correctly if you have 2 options :
1) when HaveTwoPair and not HaveTopTwoPair and not HaveBottomTwoPair
2) when HaveTwoPair and not (HaveTopTwoPair
or HaveBottomTwoPair)
Don't worry you will get it...But if it's too difficult or too confusing...
My simple advice is never use not (A and B) and never use not A or not B....
Only use
not (A or B) and not A and not B