     }
 
     /// Returns a location for an obstructing piece within the sequence.
+    @warn_unused_result
     private func _locationForObstruction<S: SequenceType where S.Generator.Element == Location>(s: S) -> Location? {
         for location in s {
             guard board[location] == nil else {

    }

    /// Returns the captured pieces for a color, or for all if color is `nil`.
    public func capturedPieces(for color: Color? = nil) -> [Piece] {
        let pieces = _moveHistory.flatMap({ $0.capture })
        if let color = color {

    }

    /// The available moves for the current player.
    @warn_unused_result
    public func availableMoves() -> [Move] {
        return Array(board.map({ movesForPiece(at: $0.location) }).flatten())
    }

    /// Returns the moves currently available for the piece at `location`, if any.
    @warn_unused_result
    public func movesForPiece(at location: Location) -> [Move] {
        guard let piece = board[location] else { return [] }
        let pieceColor = piece.color
