public class Hello {
    // TODO: no code for initialize variables
    // TODO: need to discuss whether support this style
    private int i = maybe("i") {1, 2, 3};
    private Hello self = maybe("self") {new Hello()};

    public static String getLabel(String label) {
        return "" + label;
    }

    public static void maybeVariable() {
        // DONE: can indentify below.
        // DONE: implement this.
        // int b = maybe("b") {10, 2, 3}, c = maybe("c") {3, 2, 1}, d = maybe("d") {4, 5, 6}, e = 2;
        // TODO: edu.buffalo.cse.blue.maybe.ast.MaybeLocalDecl_c cannot be cast to polyglot.ast.Expr
        int b = maybe ("b") {1, 2, 3};
        // // TODO: pass init checker
        // System.out.println(b);

        // DONE: implement mechanism
        // DONE: fix bug, maybe expression can't be visitChild
        int a = 1;
        String label = "a";
        // DONE: fix edu.buffalo.cse.blue.maybe.ast.MaybeLocalAssign_c cannot be cast to polyglot.ast.Assign
        a = maybe(label) {1, 2, 3};
        a = maybe(getLabel(label)) {1, 2, 3};
        a = maybe(label + label) {1, 2, 3};
        a = maybe(label + "a") {1, 2, 3};
        // DONE: syntax error prompt
        // a = maybe(label) {};
        System.out.println(a);
        String str = "";
        str = maybe("str") {"1", "2"};

        a = maybe("a") {1, 2, 3};
        // DONE: fix edu.buffalo.cse.blue.maybe.ast.MaybeLocalAssign_c cannot be cast to polyglot.ast.Assign
        // DONE: The += operator must have numeric operands.
        // DONE: use real typeCheck in MaybeAssignExt
        a *= maybe("a") {1, 2, 3};
        a /= maybe("a") {1, 2, 3};
        a %= maybe("a") {1, 2, 3};
        a += maybe("a") {1, 2, 3};
        a -= maybe("a") {1, 2, 3};

        a <<= maybe("a") {1, 2, 3};
        a >>= maybe("a") {1, 2, 3};
        a >>>= maybe("a") {1, 2, 3};

        a &= maybe("a") {1, 2, 3};
        a ^= maybe("a") {1, 2, 3};
        a |= maybe("a") {1, 2, 3};

        int[] array = new int[3];
        array = new int[]{1, 2, 3};
        // TODO: syntax error
        // array = maybe("array") {{1}, {2}, {3}};
        // TODO: error below
        array[0] = maybe("array") {1, 2, 3};
    }

    public static void main(String[] args) {
        maybeVariable();

        String label = "one alternative ";
        maybe (label) {
            System.out.println(label);
        }

        label = "Two alternatives ";
        maybe (label) {
            System.out.println(label + "0");
        } or {
            System.out.println(label + "1");
        }

        label = "Multiple alternatives ";
        maybe (label) {
            System.out.println(label + "0");
        } or {
            System.out.println(label + "1");
        } or {
            System.out.println(label + "2");
        } or {
            System.out.println(label + "3");
        } or {
            System.out.println(label + "4");
        }

        label = "Nested maybe statements ";
        String level = "levels ";
        int l = 0;
        maybe (label) {
            maybe (level) {
                System.out.println(label + level + l + " 0");
            } or {
                System.out.println(label + level + l + " 1");
            }
        } or {
            l++;
            maybe (level) {
                System.out.println(label + level + l + " 0");
            } or {
                System.out.println(label + level + l + " 1");
            }
        }
        // if (false) {
        //     b++;
        // } else {
        //     c++;
        // }

        // maybe ("3") {
        //     int a = 0;
        // } or {
        //     int b = 1;
        // } or {
        //     int c = 2;
        // }

        System.out.println("Hello world!");
    }
}

@@ -640,34 +640,59 @@
  (%22b%22) %7B1, 2, 3%7D
+, bb = maybe(%22bb%22) %7B1, 2%7D
 ;%0A
-
         // // TO
@@ -1022,21 +1022,19 @@
 = maybe(
-label
+%221%22
 ) %7B1, 2,
@@ -1060,23 +1060,11 @@
 ybe(
-getLabel(label)
+%221%22
 ) %7B1
@@ -1094,21 +1094,11 @@
 ybe(
-label + label
+%222%22
 ) %7B1
@@ -1124,24 +1124,16 @@
 = maybe(
-label + 
 %22a%22) %7B1,
@@ -2308,37 +2308,151 @@
 %0A        maybe (
-label
+%22abcd%22) %7B%0A            System.out.println(label);%0A        %7D%0A        // TODO: duplicate label check%0A        maybe (%22abcd%22
 ) %7B%0A            
@@ -2533,37 +2533,35 @@
 %0A        maybe (
-label
+%222%22
 ) %7B%0A            
@@ -2713,37 +2713,35 @@
 %0A        maybe (
-label
+%223%22
 ) %7B%0A            
@@ -3136,21 +3136,19 @@
  maybe (
-label
+%224%22
 ) %7B%0A    
@@ -3154,37 +3154,35 @@
          maybe (
-level
+%225%22
 ) %7B%0A            
@@ -3377,21 +3377,19 @@
  maybe (
-level
+%226%22
 ) %7B%0A    

update Hello.java for maybe label be StringLit