docs: public static <D extends ImageGray<D>>
  	GradientCornerIntensity<D> harris(int windowRadius, float kappa, boolean weighted, Class<D> derivType)
  	{
  
  		if( BoofConcurrency.USE_CONCURRENT ) {
  			if( derivType == GrayF32.class ) {
  				if( weighted )
  					return (GradientCornerIntensity)new ImplSsdCornerWeighted_F32_MT(windowRadius,new HarrisCorner_F32(kappa));
  				else
  					return (GradientCornerIntensity)new ImplSsdCorner_F32_MT(windowRadius,new HarrisCorner_F32(kappa));
  			} else if( derivType == GrayS16.class ) {
  				if( weighted )
  					return (GradientCornerIntensity)new ImplSsdCornerWeighted_S16_MT(windowRadius,new HarrisCorner_S32(kappa));
  				else
  					return (GradientCornerIntensity)new ImplSsdCorner_S16_MT(windowRadius,new HarrisCorner_S32(kappa));
  			}
  		} else {
  			if (derivType == GrayF32.class) {
  				if (weighted)
  					return (GradientCornerIntensity) new ImplSsdCornerWeighted_F32(windowRadius, new HarrisCorner_F32(kappa));
  				else
  					return (GradientCornerIntensity) new ImplSsdCorner_F32(windowRadius, new HarrisCorner_F32(kappa));
  			} else if (derivType == GrayS16.class) {
  				if (weighted)
  					return (GradientCornerIntensity) new ImplSsdCornerWeighted_S16(windowRadius,new HarrisCorner_S32(kappa));
  				else
  					return (GradientCornerIntensity) new ImplSsdCorner_S16(windowRadius, new HarrisCorner_S32(kappa));
  			}
  		}
  		throw new IllegalArgumentException("Unknown image type "+derivType);
  	}