code: @Override
  	public BufferedImage filter(BufferedImage src, BufferedImage dst) {
  		final int width = src.getWidth();
  		final int height = src.getHeight();
  
  		final BufferedImage image;
  		if (dst == null) {
  			image = createCompatibleDestImage(src, null);
  		} else {
  			image = dst;
  		}
  
  		final int[] srcPixels = new int[width * height];
  		final int[] dstPixels = new int[width * height];
  
  		getPixels(src, 0, 0, width, height, srcPixels);
  		// horizontal pass
  		blur(srcPixels, dstPixels, width, height, radius);
  		// vertical pass
  		blur(dstPixels, srcPixels, height, width, radius);
  		// the result is now stored in srcPixels due to the 2nd pass
  		setPixels(image, 0, 0, width, height, srcPixels);
  
  		return image;
  	}
docs: {@inheritDoc}