// Path: src/main/java/com/google/dicomwebfuse/entities/CloudConf.java
// public class CloudConf {
// 
//   private String stage;
//   private String project;
//   private String location;
//   private String dataSet;
// 
//   public CloudConf(String stage, String project, String location, String dataSet) {
//     this.stage = stage;
//     this.project = project;
//     this.location = location;
//     this.dataSet = dataSet;
//   }
// 
//   public String getStage() {
//     return stage;
//   }
// 
//   public String getProject() {
//     return project;
//   }
// 
//   public String getLocation() {
//     return location;
//   }
// 
//   public String getDataSet() {
//     return dataSet;
//   }
// }
// 
// Path: src/main/java/com/google/dicomwebfuse/entities/cache/CacheTime.java
// public class CacheTime {
// 
//   private final long objectsCacheTime;
//   private final long instanceFilesCacheTime;
// 
//   public CacheTime(long objectsCacheTime, long instanceFilesCacheTime) {
//     this.objectsCacheTime = objectsCacheTime;
//     this.instanceFilesCacheTime = instanceFilesCacheTime;
//   }
// 
//   public long getObjectsCacheTime() {
//     return objectsCacheTime;
//   }
// 
//   public long getInstanceFilesCacheTime() {
//     return instanceFilesCacheTime;
//   }
// 
//   @Override
//   public String toString() {
//     return objectsCacheTime + "," + instanceFilesCacheTime;
//   }
// }


import com.beust.jcommander.Parameter;
import com.beust.jcommander.converters.BooleanConverter;
import com.beust.jcommander.converters.LongConverter;
import com.beust.jcommander.converters.PathConverter;
import com.google.dicomwebfuse.entities.CloudConf;
import com.google.dicomwebfuse.entities.cache.CacheTime;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
  public Path mountPath;

  @Parameter(
      names = {"--cacheTime", "-t"},
      descriptionKey = "option.cacheTime",
      converter = CacheTimeConverter.class,
      order = 2,
      validateWith = CacheTimePositiveValidator.class
  )
  public CacheTime cacheTime = new CacheTime(60, 300);

  @Parameter(
      names = {"--cacheSize", "-s"},
      descriptionKey = "option.cacheSize",
      converter = LongConverter.class,
      order = 3,
      validateWith = CacheSizePositiveValidator.class
  )
  public long cacheSize = 10000;

  @Parameter(
      names = {"--enableDeletion", "-d"},
      descriptionKey = "option.enableDeletion",
      order = 4,
      converter = BooleanConverter.class
  )
  public boolean enableDeletion = true;

  @Parameter(
      names = {"--keyFile", "-k"},
// Path: src/main/java/com/google/dicomwebfuse/entities/CloudConf.java
// public class CloudConf {
// 
//   private String stage;
//   private String project;
//   private String location;
//   private String dataSet;
// 
//   public CloudConf(String stage, String project, String location, String dataSet) {
//     this.stage = stage;
//     this.project = project;
//     this.location = location;
//     this.dataSet = dataSet;
//   }
// 
//   public String getStage() {
//     return stage;
//   }
// 
//   public String getProject() {
//     return project;
//   }
// 
//   public String getLocation() {
//     return location;
//   }
// 
//   public String getDataSet() {
//     return dataSet;
//   }
// }
// 
// Path: src/main/java/com/google/dicomwebfuse/entities/cache/CacheTime.java
// public class CacheTime {
// 
//   private final long objectsCacheTime;
//   private final long instanceFilesCacheTime;
// 
//   public CacheTime(long objectsCacheTime, long instanceFilesCacheTime) {
//     this.objectsCacheTime = objectsCacheTime;
//     this.instanceFilesCacheTime = instanceFilesCacheTime;
//   }
// 
//   public long getObjectsCacheTime() {
//     return objectsCacheTime;
//   }
// 
//   public long getInstanceFilesCacheTime() {
//     return instanceFilesCacheTime;
//   }
// 
//   @Override
//   public String toString() {
//     return objectsCacheTime + "," + instanceFilesCacheTime;
//   }
// }


// Path: src/main/java/com/google/dicomwebfuse/parser/Arguments.java
import com.beust.jcommander.Parameter;
import com.beust.jcommander.converters.BooleanConverter;
import com.beust.jcommander.converters.LongConverter;
import com.beust.jcommander.converters.PathConverter;
import com.google.dicomwebfuse.entities.CloudConf;
import com.google.dicomwebfuse.entities.cache.CacheTime;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;

  public Path mountPath;

  @Parameter(
      names = {"--cacheTime", "-t"},
      descriptionKey = "option.cacheTime",
      converter = CacheTimeConverter.class,
      order = 2,
      validateWith = CacheTimePositiveValidator.class
  )
  public CacheTime cacheTime = new CacheTime(60, 300);

  @Parameter(
      names = {"--cacheSize", "-s"},
      descriptionKey = "option.cacheSize",
      converter = LongConverter.class,
      order = 3,
      validateWith = CacheSizePositiveValidator.class
  )
  public long cacheSize = 10000;

  @Parameter(
      names = {"--enableDeletion", "-d"},
      descriptionKey = "option.enableDeletion",
      order = 4,
      converter = BooleanConverter.class
  )
  public boolean enableDeletion = true;

  @Parameter(
      names = {"--keyFile", "-k"},
      descriptionKey = "option.keyFile",