code: public static Iterator<ImageTranscoder> getImageTranscoders(ImageReader reader, ImageWriter writer) {
  		if (reader == null) {
  			throw new IllegalArgumentException("reader == null!");
  		}
  		if (writer == null) {
  			throw new IllegalArgumentException("writer == null!");
  		}
  		ImageReaderSpi readerSpi = reader.getOriginatingProvider();
  		ImageWriterSpi writerSpi = writer.getOriginatingProvider();
  		ServiceRegistry.Filter filter = new TranscoderFilter(readerSpi, writerSpi);
  
  		Iterator iter;
  		// Ensure category is present
  		try {
  			iter = theRegistry.getServiceProviders(ImageTranscoderSpi.class, filter, true);
  		} catch (IllegalArgumentException e) {
  			return new HashSet().iterator();
  		}
  		return new ImageTranscoderIterator(iter);
  	}
docs: Returns an <code>Iterator</code> containing all currently registered <code>ImageTranscoder</code>s that
  claim to be able to transcode between the metadata of the given <code>ImageReader</code> and
  <code>ImageWriter</code>.
  
  @param reader
  an <code>ImageReader</code>.
  @param writer
  an <code>ImageWriter</code>.
  
  @return an <code>Iterator</code> containing <code>ImageTranscoder</code>s.
  
  @exception IllegalArgumentException
  if <code>reader</code> or <code>writer</code> is <code>null</code>.