// Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

package com.android.tools.r8.cf;

import com.android.tools.r8.NeverInline;
import java.io.IOException;
import java.io.OutputStream;

public class CloserTest {

  @NeverInline
  public static CloserTest create() {
    return new CloserTest();
  }

  OutputStream register() {
    return System.out;
  }

  public void doSomething(String message) {
    System.out.println(message);
  }

  public static void main(String... args) throws IOException {
    CloserTest closer = CloserTest.create();
    try {
      OutputStream out = closer.register();
      out.write(args[0].getBytes());
    } catch (Throwable e) {
      closer.doSomething(e.getMessage());
    } finally {
      closer.doSomething("FINISHED");
    }
  }
}
