public Dictionary <Directions, List <IPieceType> > CheckAlongCompassPoints(string originalGridRef, List <Directions> locations, IPieceType pieceToPlay) { var countersAlongLine = new Dictionary <Directions, List <IPieceType> >(); foreach (Directions direction in locations) { var listOfStuffToTurnOver = new List <IPieceType>(); var gridRef = originalGridRef; do { var neighbouringCounter = _gridRefFinder.NeighbouringSquare(direction, gridRef, _board); if (neighbouringCounter == null) { break; } if (neighbouringCounter.Colour != pieceToPlay.Colour) { listOfStuffToTurnOver.Add(neighbouringCounter); } else { countersAlongLine.Add(direction, listOfStuffToTurnOver); break; } gridRef = _gridRefFinder.FindGridRef(direction, gridRef); } while (true); } return(countersAlongLine); }