code: @Override public RecordReader<LongWritable,SAMRecordWritable>
  		createRecordReader(InputSplit split, TaskAttemptContext ctx)
  			throws InterruptedException, IOException
  	{
  		final Path path;
  		if (split instanceof FileSplit)
  			path = ((FileSplit)split).getPath();
  		else if (split instanceof FileVirtualSplit)
  			path = ((FileVirtualSplit)split).getPath();
  		else
  			throw new IllegalArgumentException(
  				"split '"+split+"' has unknown type: cannot extract path");
  
  		if (this.conf == null)
  			this.conf = ctx.getConfiguration();
  
  		final SAMFormat fmt = getFormat(path);
  		if (fmt == null)
  			throw new IllegalArgumentException(
  				"unknown SAM format, cannot create RecordReader: "+path);
  
  		switch (fmt) {
  			case SAM: return samIF.createRecordReader(split, ctx);
  			case BAM: return bamIF.createRecordReader(split, ctx);
  			case CRAM: return cramIF.createRecordReader(split, ctx);
  			default: assert false; return null;
  		}
  	}
docs: Returns a {@link BAMRecordReader} or {@link SAMRecordReader} as
  appropriate, initialized with the given parameters.
  
  <p>Throws {@link IllegalArgumentException} if the given input split is
  not a {@link FileVirtualSplit} (used by {@link BAMInputFormat}) or a
  {@link FileSplit} (used by {@link SAMInputFormat}), or if the path
  referred to is not recognized as a SAM, BAM, or CRAM file (see {@link
  #getFormat}).</p>