public FileStatus(
     long length,
     boolean isdir,
     int block_replication,
     long blocksize,
     long modification_time,
     long access_time,
     FsPermission permission,
     String owner,
     String group,
     Path symlink,
     Path path) {
   this.length = length;
   this.isdir = isdir;
   this.block_replication = (short) block_replication;
   this.blocksize = blocksize;
   this.modification_time = modification_time;
   this.access_time = access_time;
   if (permission != null) {
     this.permission = permission;
   } else if (isdir) {
     this.permission = FsPermission.getDirDefault();
   } else if (symlink != null) {
     this.permission = FsPermission.getDefault();
   } else {
     this.permission = FsPermission.getFileDefault();
   }
   this.owner = (owner == null) ? "" : owner;
   this.group = (group == null) ? "" : group;
   this.symlink = symlink;
   this.path = path;
   // The variables isdir and symlink indicate the type:
   // 1. isdir implies directory, in which case symlink must be null.
   // 2. !isdir implies a file or symlink, symlink != null implies a
   //    symlink, otherwise it's a file.
   assert (isdir && symlink == null) || !isdir;
 }