### Question:
Monitor { public T waitUntilNotEq( T undesiredValue ) throws InterruptedException, TimeoutException { return waitUntilNotEq( undesiredValue, 0 ); } Monitor( String description, T initialValue );  Monitor( String description ); String getDescription(); @Override String toString(); T get(); synchronized T set( T newValue ); T waitUntilEqAndSet( T desiredValue, T newValue ); synchronized T waitUntilEqAndSet( T desiredValue, int maxDelay,
		T newValue ); void waitUntilEq( T desiredValue ); synchronized void waitUntilEq( T desiredValue, int maxDelay ); T waitUntilNotEqAndSet( T undesiredValue, T newValue ); synchronized T waitUntilNotEqAndSet( T undesiredValue, int maxDelay,
		T newValue ); T waitUntilNotEq( T undesiredValue ); synchronized T waitUntilNotEq( T undesiredValue, int maxDelay );  }### Answer:
@Test( expected = TimeoutException.class ) public void waitUntilNotEq2() throws Exception { Monitor<Integer> m = new Monitor<Integer>( "a", null ); m.waitUntilNotEq( null, 1 ); }
@Test( expected = TimeoutException.class ) public void waitUntilNotEq3() throws Exception { Monitor<Integer> m = new Monitor<Integer>( "a", 1 ); m.waitUntilNotEq( 1, 1 ); }