AtomicPositiveInteger extends Number { public final void set(int newValue) { if (newValue < 0) { throw new IllegalArgumentException("new value " + newValue + " < 0"); } indexUpdater.set(this, newValue); } AtomicPositiveInteger();  AtomicPositiveInteger(int initialValue); final int getAndIncrement(); final int getAndDecrement(); final int incrementAndGet(); final int decrementAndGet(); final int get(); final void set(int newValue); final int getAndSet(int newValue); final int getAndAdd(int delta); final int addAndGet(int delta); final boolean compareAndSet(int expect, int update); final boolean weakCompareAndSet(int expect, int update); @Override byte byteValue(); @Override short shortValue(); @Override int intValue(); @Override long longValue(); @Override float floatValue(); @Override double doubleValue(); @Override String toString(); @Override int hashCode(); @Override boolean equals(Object obj);  }
@Test public void testSet() throws Exception { i1.set(100); assertEquals(100, i1.get()); try { i1.set(-1); fail(); } catch (IllegalArgumentException expected) { assertThat(expected.getMessage(), allOf(containsString("new value"), containsString("< 0"))); } }