public static FileCache foruser() {
        try {
            String path = System.getProperty("user.home", null);
            if (path == null)
                return (null);
            File home = new File(path);
            if (!home.exists() || !home.isDirectory() || !home.canRead() || !home.canWrite())
                return (null);
            File base = new File(new File(home, ".haven"), "cache");
            if (!base.exists() && !base.mkdirs())
                return (null);
            return (new FileCache(base));
        } catch (SecurityException e) {
            return (null);
        }
    }