public Long doInTransaction(TransactionStatus status) {
ImmutableCollection<FileItem> immutableFiles = ImmutableList.copyOf(files);
checkArgument(files != null && !files.isEmpty(), "Can't save experiment without files");
if (!validator.userHasEditPermissionsOnExperiment(actor, experimentId)
|| !validator.userHasReadPermissionsOnFiles(actor, toFileMetaData(immutableFiles))) {
throw new AccessDenied("User isn't permitted to edit experiment");
}
checkArgument(validator.canUserUpdateExperimentWithTitle(actor, experimentId, info.name), "User already has experiment with this name: \"" + info.name + "\"");
checkArgument(validator.canCreateExperimentWithFiles(transform(files, new Function<FileItem, Long>() {
@Override
public Long apply(FileItem input) {