* in which case they are assumed dead and hence part of the eye.
* @param excludedSpaceLists space lists to exclude from consideration because they are outside the group.
* @return set of eyes in this group
*/
private GoEyeSet findEyesFromCandidates(GoBoardPositionLists excludedSpaceLists) {
GoEyeSet eyes = new GoEyeSet();
boolean ownedByPlayer1 = group_.isOwnedByPlayer1();
GroupAnalyzer groupAnalyzer = analyzerMap_.getAnalyzer(group_);
Box innerBox = createBoxExcludingBorder(boundingBox_);
for ( int r = innerBox.getMinRow(); r < innerBox.getMaxRow(); r++ ) {
for ( int c = innerBox.getMinCol(); c < innerBox.getMaxCol(); c++ ) {
// if the empty space is already marked as being an eye, skip
GoBoardPosition space = (GoBoardPosition) board_.getPosition( r, c );
assert space != null : "pos r="+r +" c="+c;
if ( !space.isVisited() && space.isUnoccupied() && !space.isInEye() ) {
GoBoardPositionList eyeSpaces =
nbrAnalyzer_.findStringFromInitialPosition( space, ownedByPlayer1,
false, NeighborType.NOT_FRIEND,
boundingBox_ );
excludedSpaceLists.add(eyeSpaces);
// make sure this is a real eye.
if ( confirmEye( eyeSpaces) ) {
GoEye eye = new GoEye( eyeSpaces, board_, group_, groupAnalyzer);
eyes.add( eye );
}
else {
GameContext.log(3, eyeSpaces.toString("This list of stones was rejected as being an eye: "));
}
}