class OptionValue implements Comparable<OptionValue> {

  public static OptionValue create(AccessibleScopes accessibleScopes, String name, long val, OptionScope scope) {
    return new OptionValue(Kind.LONG, accessibleScopes, name, val, null, null, null, scope);
  }

  @JsonCreator private  OptionValue(@JsonProperty(JSON_KIND) Kind kind,
                      @JsonProperty(JSON_ACCESSIBLE_SCOPES) AccessibleScopes accessibleScopes,
                      @JsonProperty(JSON_NAME) String name,
                      @JsonProperty(JSON_NUM_VAL) Long num_val,
                      @JsonProperty(JSON_STRING_VAL) String string_val,
                      @JsonProperty(JSON_BOOL_VAL) Boolean bool_val,
                      @JsonProperty(JSON_FLOAT_VAL) Double float_val,
                      @JsonProperty(JSON_SCOPE) OptionScope scope);

}