public void paint(GC gc, int width, int height) {
		if (!example.checkAdvancedGraphics()) return;
		Device device = gc.getDevice();

		if (bc[0] == null) {
			bc[0] = new BallCollection(0, 0, 5, 5, 20, 20, new Color[] { device
					.getSystemColor(SWT.COLOR_GREEN) });
			bc[1] = new BallCollection(50, 300, 10, -5, 50, 10,
					new Color[] { device.getSystemColor(SWT.COLOR_BLUE) });
			bc[2] = new BallCollection(250, 100, -5, 8, 25, 12,
					new Color[] { device.getSystemColor(SWT.COLOR_RED) });
			bc[3] = new BallCollection(150, 400, 5, 8, 35, 14,
					new Color[] { device.getSystemColor(SWT.COLOR_BLACK) });
			bc[4] = new BallCollection(100, 250, -5, -18, 100, 5,
					new Color[] { device.getSystemColor(SWT.COLOR_MAGENTA) });
		}

		for (int j = 0; j < bc.length; j++) {
			for (int i = 0; i < bc[j].prevx.size(); i++) {
				Transform transform = new Transform(device);
				transform.translate(((Float) bc[j].prevx.get(bc[j].prevx.size()
						- (i + 1))).floatValue(), ((Float) bc[j].prevy
						.get(bc[j].prevy.size() - (i + 1))).floatValue());
				gc.setTransform(transform);
				transform.dispose();

				Path path = new Path(device);
				path.addArc(0, 0, bc[j].ball_size, bc[j].ball_size, 0, 360);
				gc.setAlpha(255 - i * (255 / bc[j].capacity));
				gc.setBackground(bc[j].colors[0]);
				gc.fillPath(path);
				gc.drawPath(path);
				path.dispose();
			}
		}
	}