content: /*
   * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
   * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
   *
   *
   *
   *
   *
   *
   *
   *
   *
   *
   *
   *
   *
   *
   *
   *
   *
   *
   *
   *
   */
  
  package lib.lang;
  
  /**
   * A resource that must be closed when it is no longer needed.
   *
   * @author Josh Bloch
   * @since 1.7
   */
  public interface AutoCloseable {
      /**
       * Closes this resource, relinquishing any underlying resources.
       * This method is invoked automatically on objects managed by the
       * {@code try}-with-resources statement.
       * <p/>
       * <p>While this interface method is declared to throw {@code
       * Exception}, implementers are <em>strongly</em> encouraged to
       * declare concrete implementations of the {@code close} method to
       * throw more specific exceptions, or to throw no exception at all
       * if the close operation cannot fail.
       * <p/>
       * <p><em>Implementers of this interface are also strongly advised
       * to not have the {@code close} method throw {@link
       * InterruptedException}.</em>
       * <p/>
       * This exception interacts with a thread's interrupted status,
       * and runtime misbehavior is likely to occur if an {@code
       * InterruptedException} is {@linkplain Throwable#addSuppressed
       * suppressed}.
       * <p/>
       * More generally, if it would cause problems for an
       * exception to be suppressed, the {@code AutoCloseable.close}
       * method should not throw it.
       * <p/>
       * <p>Note that unlike the {@link java.io.Closeable#close close}
       * method of {@link java.io.Closeable}, this {@code close} method
       * is <em>not</em> required to be idempotent.  In other words,
       * calling this {@code close} method more than once may have some
       * visible side effect, unlike {@code Closeable.close} which is
       * required to have no effect if called more than once.
       * <p/>
       * However, implementers of this interface are strongly encouraged
       * to make their {@code close} methods idempotent.
       *
       * @throws Exception if this resource cannot be closed
       */
      void close() throws Exception;
  }
  