code: public static FileInfo fromProto(alluxio.grpc.FileInfo pInfo) {
      FileInfo fileInfo = new FileInfo().setFileId(pInfo.getFileId()).setName(pInfo.getName())
          .setPath(pInfo.getPath()).setUfsPath(pInfo.getUfsPath()).setLength(pInfo.getLength())
          .setBlockSizeBytes(pInfo.getBlockSizeBytes()).setCreationTimeMs(pInfo.getCreationTimeMs())
          .setCompleted(pInfo.getCompleted()).setFolder(pInfo.getFolder())
          .setPinned(pInfo.getPinned()).setCacheable(pInfo.getCacheable())
          .setPersisted(pInfo.getPersisted()).setBlockIds(pInfo.getBlockIdsList())
          .setLastModificationTimeMs(pInfo.getLastModificationTimeMs()).setTtl(pInfo.getTtl())
          .setTtlAction(pInfo.getTtlAction()).setOwner(pInfo.getOwner())
          .setGroup(pInfo.getGroup()).setMode(pInfo.getMode())
          .setPersistenceState(pInfo.getPersistenceState()).setMountPoint(pInfo.getMountPoint())
          .setFileBlockInfos(map(GrpcUtils::fromProto, pInfo.getFileBlockInfosList()))
          .setMountId(pInfo.getMountId()).setInAlluxioPercentage(pInfo.getInAlluxioPercentage())
          .setInMemoryPercentage(pInfo.getInMemoryPercentage())
          .setUfsFingerprint(pInfo.hasUfsFingerprint() ? pInfo.getUfsFingerprint()
              : Constants.INVALID_UFS_FINGERPRINT)
          .setAcl(pInfo.hasAcl() ? (fromProto(pInfo.getAcl())) : AccessControlList.EMPTY_ACL)
          .setDefaultAcl(
              pInfo.hasDefaultAcl() ? ((DefaultAccessControlList) fromProto(pInfo.getDefaultAcl()))
                  : DefaultAccessControlList.EMPTY_DEFAULT_ACL)
          .setReplicationMax(pInfo.getReplicationMax()).setReplicationMin(pInfo.getReplicationMin());
      return fileInfo;
    }
docs: Converts a proto type to a wire type.
  
  @param pInfo the proto representation of a file information
  @return wire representation of the file information