docs: public static <D extends ImageGray<D>>
  	void hessian( DerivativeType type , D derivX , D derivY , D derivXX , D derivYY , D derivXY , BorderType borderType ) {
  		ImageBorder<D> border = BorderType.SKIP == borderType ? null : FactoryImageBorder.wrap(borderType, derivX);
  
  		switch( type ) {
  			case PREWITT:
  				if( derivX instanceof GrayF32) {
  					HessianFromGradient.hessianPrewitt((GrayF32) derivX, (GrayF32) derivY, (GrayF32) derivXX, (GrayF32) derivYY, (GrayF32) derivXY, (ImageBorder_F32) border);
  				} else if( derivX instanceof GrayS16) {
  					HessianFromGradient.hessianPrewitt((GrayS16) derivX, (GrayS16) derivY, (GrayS16) derivXX, (GrayS16) derivYY, (GrayS16) derivXY, (ImageBorder_S32) border);
  				} else {
  					throw new IllegalArgumentException("Unknown input image type: "+derivX.getClass().getSimpleName());
  				}
  				break;
  
  			case SOBEL:
  				if( derivX instanceof GrayF32) {
  					HessianFromGradient.hessianSobel((GrayF32) derivX, (GrayF32) derivY, (GrayF32) derivXX, (GrayF32) derivYY, (GrayF32) derivXY, (ImageBorder_F32) border);
  				} else if( derivX instanceof GrayS16) {
  					HessianFromGradient.hessianSobel((GrayS16) derivX, (GrayS16) derivY, (GrayS16) derivXX, (GrayS16) derivYY, (GrayS16) derivXY, (ImageBorder_S32) border);
  				} else {
  					throw new IllegalArgumentException("Unknown input image type: "+derivX.getClass().getSimpleName());
  				}
  				break;
  
  			case THREE:
  				if( derivX instanceof GrayF32) {
  					HessianFromGradient.hessianThree((GrayF32) derivX, (GrayF32) derivY, (GrayF32) derivXX, (GrayF32) derivYY, (GrayF32) derivXY, (ImageBorder_F32) border);
  				} else if( derivX instanceof GrayS16) {
  					HessianFromGradient.hessianThree((GrayS16) derivX, (GrayS16) derivY, (GrayS16) derivXX, (GrayS16) derivYY, (GrayS16) derivXY, (ImageBorder_S32) border);
  				} else {
  					throw new IllegalArgumentException("Unknown input image type: "+derivX.getClass().getSimpleName());
  				}
  				break;
  
  			default:
  				throw new IllegalArgumentException("Unsupported derivative type "+type);
  		}
  	}