### Question:
Identity implements Executor { public void require() { Identity identity = current(); if (identity != this) { throw new IdentityException( "Identity \"" + this + "\" required, but context was \"" + identity + "\""); } } private  Identity(String name); static Identity get(String name); static Identity create(); @Nullable static Identity current(); String name(); boolean isCurrent(); void require(); static void require(Collection<Identity> identities); void exclude(); Executor wrapExecutor(Executor executor); ScheduledExecutorService wrapExecutor(ScheduledExecutorService executor); @Override void execute(Runnable command); @Override String toString(); static final Identity DEFAULT; }### Answer:
@Test void require() { assertEquals(Identity.DEFAULT, Identity.current()); Identity idFoobar = Identity.get("foobar"); Identity idBlah = Identity.get("blah"); idFoobar.execute( () -> { assertThrows(SecurityException.class, idBlah::require); idFoobar.require(); }); assertThrows(SecurityException.class, idFoobar::require); assertThrows(SecurityException.class, idBlah::require); }