@Test
public void testProcessContextAttachWithNullShutdownHook()
	throws Exception {

	ProcessChannel<String> processChannel = _localProcessExecutor.execute(
		_createJPDAProcessConfig(_JPDA_OPTIONS1),
		Operations.asControllable(Operations.SLEEP));
	Future<Controller> future = processChannel.write(
		Operations.GET_CONTROLLER);
	Controller parentController = future.get();
	Assert.assertTrue(parentController.isAlive());
	Controller childController = parentController.invoke(
		Operations.asNewJVM(_JPDA_OPTIONS2, Operations.SLEEP));
	Assert.assertTrue(childController.isAlive());
	// Attach with null shutdown hook
	Assert.assertEquals(
		"DONE",
		childController.invoke(
			() -> {
				try {
					LocalProcessLauncher.ProcessContext.attach(
						"NullShutdownHook", 1, null);
					return "NULL_SHUTDOWN_HOOK_ACCEPTED";
				}
				catch (IllegalArgumentException illegalArgumentException) {
					if (!Objects.equals(
							illegalArgumentException.getMessage(),
							"Shutdown hook is null")) {
						return illegalArgumentException.getMessage();
					}
				}
				return "DONE";
			}));
	Assert.assertFalse(childController.invoke(Operations.IS_ATTACHED));
	// Kill parent
	parentController.invoke(Operations.TERMINATE);
	Assert.assertFalse(parentController.isAlive());
	// Kill child
	childController.invoke(Operations.TERMINATE);
	Assert.assertFalse(childController.isAlive());
}