setupPoint point = do
    points <- mapM (transMapList (listOfPoint point)) ["AB", "AW", "AE"]
    let [addBlack, addWhite, remove] = map Set.fromList points
        allPoints  = addBlack `Set.union` addWhite `Set.union` remove
        duplicates = concat points \\ Set.elems allPoints
        addWhite'  = addWhite  Set.\\ addBlack
        remove'    = remove    Set.\\ (addBlack `Set.union` addWhite')
    unless (null duplicates) (tell [DuplicateSetupOperationsOmitted duplicates])
    setupFinish addBlack addWhite' remove'

-- note: does not (cannot, in general) check the constraint that addBlack,
-- addWhite, and remove specify disjoint sets of points
-- TODO: what, really, cannot?  even if we allow ourselves a class constraint or something?
setupPoint point = do
    points <- mapM (transMapList (listOfPoint point)) ["AB", "AW", "AE"]
    let [addBlack, addWhite, remove] = map Set.fromList points
        allPoints  = addBlack `Set.union` addWhite `Set.union` remove
        duplicates = concat points \\ Set.elems allPoints
        addWhite'  = addWhite  Set.\\ addBlack
        remove'    = remove    Set.\\ (addBlack `Set.union` addWhite')
    unless (null duplicates) (tell [DuplicateSetupOperationsOmitted duplicates])
    setupFinish addBlack addWhite' remove'

-- note: does not (cannot, in general) check the constraint that addBlack,
-- addWhite, and remove specify disjoint sets of points
-- TODO: what, really, cannot?  even if we allow ourselves a class constraint or something?
setupPoint point = do
    points <- mapM (transMapList (listOfPoint point)) ["AB", "AW", "AE"]
    let [addBlack, addWhite, remove] = map Set.fromList points
        allPoints  = addBlack `Set.union` addWhite `Set.union` remove
        duplicates = concat points \\ Set.elems allPoints
        addWhite'  = addWhite  Set.\\ addBlack
        remove'    = remove    Set.\\ (addBlack `Set.union` addWhite')
    unless (null duplicates) (tell [DuplicateSetupOperationsOmitted duplicates])
    setupFinish addBlack addWhite' remove'

-- note: does not (cannot, in general) check the constraint that addBlack,
-- addWhite, and remove specify disjoint sets of points
-- TODO: what, really, cannot?  even if we allow ourselves a class constraint or something?