return createTempFile(prefix, suffix, null);
if (directory == null) { String dirname = System.getProperty("java.io.tmpdir"); if (dirname == null) throw new IOException("Cannot determine system temporary directory");  directory = new File(dirname); if (! VMFile.exists(directory.path)) throw new IOException("System temporary directory " + directory.getName() + " does not exist."); if (! VMFile.isDirectory(directory.path)) throw new IOException("System temporary directory " + directory.getName() + " is not really a directory."); }   if (prefix.length() < 3) throw new IllegalArgumentException("Prefix too short: " + prefix);   if (suffix == null) suffix = ".tmp";   File file; if (!VMFile.IS_DOS_8_3) { do { long now = System.currentTimeMillis(); if (now > last_tmp) {  last_tmp = now; n_created = 0; } else n_created++;  String name = Long.toHexString(now); if (n_created > 0) name += '_'+Integer.toHexString(n_created); String filename = prefix + name + suffix; file = new File(directory, filename); } while (VMFile.exists(file.path)); } else {  if (prefix.length() >= 8) throw new IllegalArgumentException("Prefix too long: " + prefix + "(valid length 3..7)");  long mask = 0x000000ffffFFFFL >> (prefix.length() * 4); do { int n = (int) (System.currentTimeMillis() & mask); String filename = prefix + java.lang.Integer.toHexString(n) + suffix; file = new File(directory, filename); } while (VMFile.exists(file.path)); }   SecurityManager sm = System.getSecurityManager(); if (sm != null) sm.checkWrite(file.getAbsolutePath());    VMFile.create(file.getAbsolutePath()); return file;
  public static File createTempFile(String prefix, String suffix)    throws IOException  {    return createTempFile(prefix, suffix, null);  }