docs: public static <Input extends ImageGray<Input>, Output extends ImageGray<Output>>
  	ImageDistort<Input, Output> distortSB(boolean cached, InterpolatePixelS<Input> interp, Class<Output> outputType)
  	{
  		AssignPixelValue_SB<Output> assigner;
  		if( outputType == GrayF32.class ) {
  			assigner = (AssignPixelValue_SB)new AssignPixelValue_SB.F32();
  		} else if( GrayS32.class.isAssignableFrom(outputType) ) {
  			assigner = (AssignPixelValue_SB)new AssignPixelValue_SB.S32();
  		} else if( GrayI16.class.isAssignableFrom(outputType) ) {
  			assigner = (AssignPixelValue_SB)new AssignPixelValue_SB.I16();
  		} else if( GrayI8.class.isAssignableFrom(outputType) ) {
  			assigner = (AssignPixelValue_SB)new AssignPixelValue_SB.I8();
  		} else {
  			throw new IllegalArgumentException("Output type not supported: "+outputType.getSimpleName());
  		}
  
  		if(BoofConcurrency.USE_CONCURRENT ) {
  			if( cached ) {
  				return new ImageDistortCache_SB_MT<>(assigner,interp);
  			} else {
  				return new ImageDistortBasic_SB_MT<>(assigner,interp);
  			}
  		} else if( cached ) {
  			return new ImageDistortCache_SB<>(assigner,interp);
  		} else {
  			return new ImageDistortBasic_SB<>(assigner,interp);
  		}
  	}