public void paint () {
    gc.set_foreground (random_color ());    
    
    int xlim = window.width;
    int ylim = window.height;

    int x = xlim/2;
    int y = ylim/2;

    for (int i=0; i<depth; i++) {
      x += random.nextInt (1 + 2*offset) - offset;
      y += random.nextInt (1 + 2*offset) - offset;
      window.point (gc, x, y);
      
      if (x_symmetry) window.point (gc, xlim-x, y);
      if (y_symmetry) window.point (gc, x, ylim-y);
      if (x_symmetry && y_symmetry) window.point (gc, xlim-x, ylim-y);

      if (step_size != 0 && i % step_size == 0)
        if (sleep (draw_delay)) return;
    }
  }