code: @Override
      public AudioInputStream getAudioInputStream(URL url)
              throws UnsupportedAudioFileException, IOException {
          LOG.log(Level.FINE, "TAudioFileReader.getAudioInputStream(URL): begin (class: {0})", getClass().getSimpleName());
          long lFileLengthInBytes = getDataLength(url);
          InputStream inputStream = url.openStream();
          AudioInputStream audioInputStream = null;
          try {
              audioInputStream = getAudioInputStream(inputStream, lFileLengthInBytes);
          } catch (UnsupportedAudioFileException | IOException e) {
              inputStream.close();
              throw e;
          }
          LOG.log(Level.FINE, "TAudioFileReader.getAudioInputStream(URL): end");
          return audioInputStream;
      }
docs: Get an AudioInputStream object for a URL. This method calls
  getAudioInputStream(InputStream, long). Subclasses should not override
  this method unless there are really severe reasons. Normally, it is
  sufficient to implement getAudioFileFormat(InputStream, long) and perhaps
  override getAudioInputStream(InputStream, long).
  
  @param url	the URL to read from.
  @return	an AudioInputStream instance containing the audio data from this
  URL.
  @throws javax.sound.sampled.UnsupportedAudioFileException
  @throws java.io.IOException