/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
	private static void sop(String s) { System.out.println(s); }
	public static void main (String[] args) throws java.lang.Exception
	{
		sop("ANONYMOUS, NO EXCEPTION");
		try (final BufferedReader br = new BufferedReader(new MyReader(), 42)
		) {
			System.out.println(br.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		sop("ANONYMOUS, EXCEPTION");
		try (final BufferedReader br = new BufferedReader(new MyReader(), -42)
		) {
			System.out.println(br.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		sop("NAMED, NO EXCEPTION");
		try (
			final Reader mr = new MyReader();
			final BufferedReader br = new BufferedReader(mr, 42)
		) {
			System.out.println(br.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		sop("NAMED, EXCEPTION");
		try (
			final Reader mr = new MyReader();
			final BufferedReader br = new BufferedReader(mr, -42)
		) {
			System.out.println(br.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private static final class MyReader extends Reader
	{
		public MyReader() {
			super();
			System.out.println("hello from reader");
		}
		@Override
		public void close() {
			System.out.println("bye from reader");
		}
		@Override
		public int read(char[] c, int m, int n) {
			return 37;
		}
	}
}