code: public IChemFormat guessFormat(Reader input) throws IOException {
          if (input == null) {
              throw new IllegalArgumentException("input cannot be null");
          }
          // make a copy of the header
          char[] header = new char[this.headerLength];
          if (!input.markSupported()) {
              throw new IllegalArgumentException("input must support mark");
          }
          input.mark(this.headerLength);
          input.read(header, 0, this.headerLength);
          input.reset();
  
          BufferedReader buffer = new BufferedReader(new CharArrayReader(header));
          IChemFormat chemFormat = getMatchResult(buffer);
  
          if(chemFormat == null){
          	buffer = new BufferedReader(new CharArrayReader(header));
              chemFormat = getXYZFormat(buffer);
            }
          return chemFormat;
          
      }
docs: Creates a String of the Class name of the <code>IChemObject</code> reader
  for this file format. The input is read line-by-line
  until a line containing an identifying string is
  found.
  
  <p>The ReaderFactory detects more formats than the CDK
  has Readers for.
  
  <p>This method is not able to detect the format of gziped files.
  Use <code>guessFormat(InputStream)</code> instead for such files.
  
  @throws IOException  if an I/O error occurs
  @throws IllegalArgumentException if the input is null
  @return The guessed <code>IChemFormat</code> or <code>null</code> if the
  file format is not recognized.
  
  @see #guessFormat(InputStream)