code: public final BufferedImage decode() throws IOException {
  		if (!validPNG) {
  			return null;
  		}
  		ColorModel cmodel = new ComponentColorModel(COLOR_SPACE, BITS, false, false, Transparency.OPAQUE, DATA_TYPE);
  		SampleModel smodel = new ComponentSampleModel(DATA_TYPE, width, height, 3, width * 3, BAND_OFFSETS);
  
  		byte[] bytes = new byte[width * height * 3];// must new each time!
  		byte[][] data = new byte[][] { bytes };
  		ByteBuffer buffer = ByteBuffer.wrap(bytes);
  		decode(buffer, TextureFormat.RGB);
  		DataBufferByte dbuf = new DataBufferByte(data, bytes.length, OFFSET);
  		WritableRaster raster = Raster.createWritableRaster(smodel, dbuf, null);
  
  		BufferedImage bi = new BufferedImage(cmodel, raster, false, null);
  		bi.flush();
  		return bi;
  	}
docs: read just one png file, if invalid, return null
  
  @return
  @throws IOException