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

class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		try { test_1(null); }
        catch (NullPointerException e) { System.out.println("NullPointerException"); }

        try { test_2(null); }
        catch (UnsupportedArgumentException e) { System.out.println(e.getMessage()); }

        try { test_1(Color.Green); }
        catch (UnsupportedArgumentException e) { System.out.println(e.getMessage()); }
	}
	
      public static String test_1 (Color color) throws Exception
      {
        String out = "";
        
        switch (color) // NullPointerException expected
        {
          case Red:
            out = Color.Red.getName();
            break;
          case Blue:
            out = Color.Red.getName();
            break;
          default:
            throw new UnsupportedArgumentException ("unsupported color: " + color.getName());
        }
    
        return out;
      }
	
	public static String test_2 (Color color) throws Exception
	{
	  if (color == null) throw new UnsupportedArgumentException ("unsupported color: NULL");
	  return test_1(color);
	}
}

    enum Color
    {
      Red("Red"), Blue("Blue"), Green("Green");
      private final String name;
      private Color(String n) { name = n; }
      public String getName() { return name; }
    }


    class UnsupportedArgumentException extends Exception
    {
      private String message = null;
 
      public UnsupportedArgumentException() { super(); }
 
      public UnsupportedArgumentException (String message)
      {
        super(message);
        this.message = message;
      }
 
      public UnsupportedArgumentException (Throwable cause) { super(cause); }
 
      @Override public String toString() { return message; }
 
      @Override public String getMessage() { return message; }
    }
