@Test
  public final void testAutoClose() throws Exception {

    final MutableBoolean closeCalled = new MutableBoolean(false);
    assertFalse(closeCalled.booleanValue());
    assertTrue(AutoCloseable.class.isAssignableFrom(TestInputStream.class));

    // read the input stream
    // @NEW
    try (TestInputStream in = new TestInputStream(closeCalled)) {
      IOUtils.toByteArray(in);
    }

    // assert that the close method is called automatically
    assertTrue(closeCalled.booleanValue());
  }
  @Test
  public final void testAutoCloseTwoResources() throws Exception {

    final MutableBoolean close1Called = new MutableBoolean(false);
    final MutableBoolean close2Called = new MutableBoolean(false);

    // read the input streams
    // @NEW
    try (TestInputStream in1 = new TestInputStream(close1Called);
        TestInputStream in2 = new TestInputStream(close2Called)) {
      IOUtils.toByteArray(in1);
      IOUtils.toByteArray(in2);
    }

    // assert that the close methods are called automatically
    assertTrue(close1Called.booleanValue());
    assertTrue(close2Called.booleanValue());
  }