### Question:
ID implements Serializable { public static ID of(int value) { Validate.isTrue(value > 0, "ID value must be greater than zero."); return new ID(value); }  static ID of(int value); @Override String toString(); int get(); boolean isSet(); static boolean isDefined(ID id); Optional<T> ifSet(Function<Integer, T> fn); static ID NONE; }### Answer:
@Test(expected = IllegalArgumentException.class) public void not_zero() { ID.of(0); }
@Test(expected = IllegalArgumentException.class) public void not_negative() { ID.of(-1); }
@Test public void set_to_json() throws JsonProcessingException { assertJsonWrite( JsonUtils.number(12), ID.of(12) ); }
@Test public void read_from_json() throws JsonProcessingException { assertJsonRead( ID.of(9), new IntNode(9), ID.class ); }