// Path: src/main/java/com/papercut/dust/model/Validations.java
// public class Validations {
// 
//     /**
//      * Validation group used when creating a device.
//      */
//     public interface Create {
//     }
// 
//     /**
//      * Validation group used when updating a device.
//      */
//     public interface Update {
//     }
// }
// 
// Path: src/main/java/com/papercut/dust/model/Identifiable.java
// public interface Identifiable<T> {
// 
//     Long getId();
// 
//     T withId(long newId);
// 
// }


import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.papercut.dust.model.Validations;
import com.papercut.dust.model.Identifiable;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Objects;
    @JsonProperty
    @Null(groups = {Validations.Create.class, Validations.Update.class})
    final Long claimedById;

    @JsonProperty
    @Null(groups = {Validations.Create.class, Validations.Update.class})
    final String claimedBy;

    public Device(
            @JsonProperty("id") Long id,
            @JsonProperty("brand") String brand,
            @JsonProperty("model") String model,
            @JsonProperty("hostname") String hostname,
            @JsonProperty("nickname") String nickname,
            @JsonProperty("ip") String ip,
            @JsonProperty("admin_url") String adminUrl,
            @JsonProperty("admin_username") String adminUsername,
            @JsonProperty("admin_password") String adminPassword,
            @JsonProperty("wiki_url") String wikiUrl,
            @JsonProperty("manual_url") String manualUrl,
            @JsonProperty("photo_url") String photoUrl,
            @JsonProperty("comment") String comment,
            @JsonProperty("location") String location,
            @JsonProperty("claimed_by_id") Long claimedById,
            @JsonProperty("claimed_by") String claimedBy
    ) {
        this.id = id;
        this.brand = brand;
        this.model = model;
        this.hostname = hostname;
// Path: src/main/java/com/papercut/dust/model/Validations.java
// public class Validations {
// 
//     /**
//      * Validation group used when creating a device.
//      */
//     public interface Create {
//     }
// 
//     /**
//      * Validation group used when updating a device.
//      */
//     public interface Update {
//     }
// }
// 
// Path: src/main/java/com/papercut/dust/model/Identifiable.java
// public interface Identifiable<T> {
// 
//     Long getId();
// 
//     T withId(long newId);
// 
// }


// Path: src/main/java/com/papercut/dust/device/Device.java
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.papercut.dust.model.Validations;
import com.papercut.dust.model.Identifiable;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Objects;

    @JsonProperty
    @Null(groups = {Validations.Create.class, Validations.Update.class})
    final Long claimedById;

    @JsonProperty
    @Null(groups = {Validations.Create.class, Validations.Update.class})
    final String claimedBy;

    public Device(
            @JsonProperty("id") Long id,
            @JsonProperty("brand") String brand,
            @JsonProperty("model") String model,
            @JsonProperty("hostname") String hostname,
            @JsonProperty("nickname") String nickname,
            @JsonProperty("ip") String ip,
            @JsonProperty("admin_url") String adminUrl,
            @JsonProperty("admin_username") String adminUsername,
            @JsonProperty("admin_password") String adminPassword,
            @JsonProperty("wiki_url") String wikiUrl,
            @JsonProperty("manual_url") String manualUrl,
            @JsonProperty("photo_url") String photoUrl,
            @JsonProperty("comment") String comment,
            @JsonProperty("location") String location,
            @JsonProperty("claimed_by_id") Long claimedById,
            @JsonProperty("claimed_by") String claimedBy
    ) {
        this.id = id;
        this.brand = brand;
        this.model = model;
        this.hostname = hostname;
        this.nickname = nickname;