code: function whereCanIJump(board, from, positions) {
      var nearPieces = getNotEmptyNearPositions(board, from);
      return nearPieces.reduce(function (accPositions, nearPiece) {
          var jumpTo = getJumpPosition(from, nearPiece, board);
          if (!jumpTo || Position.containsXY(accPositions, jumpTo)) return accPositions;
          jumpTo.jumpingBlackPiece = nearPiece.isBlack;
          jumpTo.jumps = (from.jumps || []).concat(from);
          return whereCanIJump(board, jumpTo, accPositions.concat(jumpTo));
      }, positions || []);
  }
docs: Gets all positions where can I jump recursively.
  1. Get not empty near positions from board.
  2. Foreach not empty near position:
  - Get jump position.
  - If jump position do NOT exists or accumulated positions
  contains jump position then return accumulated positions.
  - Set Jumping black piece to true if is black piece.
  - Set Jumps to from + from.jumps.
  - Call and return this method again recursively to get next jump positions.