public static <T extends MultiSpectral> T createSubImageOf_MS(T input) { T ret = (T) new MultiSpectral(input.type, input.width, input.height, input.getNumBands()); for (int i = 0; i < input.getNumBands(); i++) { ret.bands[i] = createSubImageOf_S(input.getBand(i)); } ret.stride = ret.bands[0].stride; ret.startIndex = ret.bands[0].startIndex; return ret; }