| Methods or constructors annotated with `@MustBeClosed` require that the returned |
| resource is closed. This is enforced by checking that invocations occur within |
| the resource variable initializer of a try-with-resources statement: |
| |
| ```java |
| try (AutoCloseable resource = createTheResource()) { |
| doSomething(resource); |
| } |
| ``` |
| |
| or the `return` statement of another method annotated with `@MustBeClosed`: |
| |
| ```java |
| @MustBeClosed |
| AutoCloseable createMyResource() { |
| return createTheResource(); |
| } |
| ``` |
| |
| To support legacy code, the following pattern is also supported: |
| |
| ```java |
| AutoCloseable resource = createTheResource(); |
| try { |
| doSomething(resource); |
| } finally { |
| resource.close(); |
| } |
| ``` |