class INodeFile extends INodeWithAdditionalFields implements BlockCollection {

  List<BlockInfoContiguous> concatBlocks(INodeFile[] inodes)
      throws StorageException, TransactionContextException {
    List<BlockInfoContiguous> oldBlks = new ArrayList<>();
    for (INodeFile srcInode : inodes) {
      for (BlockInfoContiguous block : srcInode.getBlocks()) {
        BlockInfoContiguous copy = BlockInfoContiguous.cloneBlock(block);
        oldBlks.add(copy);
        addBlock(block);
        block.setBlockCollection(this);
      }
    }
    recomputeFileSize();
    return oldBlks;
  }

  public  INodeFile(long id, PermissionStatus permissions, BlockInfoContiguous[] blklist,
      short replication, long modificationTime, long atime,
      long preferredBlockSize, byte storagePolicyID);
  public  INodeFile(long id, PermissionStatus permissions, BlockInfoContiguous[] blklist,
      short replication, long modificationTime, long atime,
      long preferredBlockSize, byte storagePolicyID, boolean inTree);
  public  INodeFile(long id, PermissionStatus permissions, long header,
      long modificationTime, long atime, boolean isFileStoredInDB, byte storagepolicy, boolean inTree);
  public  INodeFile(INodeFile other);

}