private MutablePiece randomPiece(final int the_x, final int the_y)
  {
    final Block[] blocks = Block.values();
    MutablePiece result;

    switch (blocks[RANDOM.nextInt(blocks.length)])
    {
      case I:
        result = new IPiece(the_x, the_y);
        break;

      case J:
        result = new JPiece(the_x, the_y);
        break;

      case L:
        result = new LPiece(the_x, the_y);
        break;

      case O:
        result = new OPiece(the_x, the_y);
        break;

      case S:
        result = new SPiece(the_x, the_y);
        break;

      case T:
        result = new TPiece(the_x, the_y);
        break;

      case Z:
        result = new ZPiece(the_x, the_y);
        break;

      default: // If EMPTY try again
        result = randomPiece(the_x, the_y);
        break;
    }
    return result;
  }