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