content: // DO NOT EDIT THIS FILE! IT IS AUTOMATICALLY GENERATED FROM FILE "src/E_UnZIP.gold"
  import gold.*;
  import gold.structures.*;
  import gold.structures.automaton.*;
  import gold.structures.bag.*;
  import gold.structures.collection.*;
  import gold.structures.deque.*;
  import gold.structures.disjointset.*;
  import gold.structures.graph.*;
  import gold.structures.heap.*;
  import gold.structures.list.*;
  import gold.structures.map.*;
  import gold.structures.multimap.*;
  import gold.structures.point.*;
  import gold.structures.queue.*;
  import gold.structures.set.*;
  import gold.structures.stack.*;
  import gold.structures.tree.*;
  import gold.structures.tree.binary.*;
  import gold.structures.tree.nary.*;
  import gold.structures.tuple.*;
  import gold.structures.turingMachine.*;
  import gold.swing.*;
  import gold.swing.icon.*;
  import gold.swing.icon.ajaxload.*;
  import gold.swing.icon.famfamfam.*;
  import gold.swing.icon.gold.*;
  import gold.swing.icon.jlfgr.*;
  import gold.swing.icon.wikimedia.*;
  import gold.swing.icon.windows.*;
  import gold.swing.look.*;
  import gold.swing.util.*;
  import gold.test.*;
  import gold.test.automaton.*;
  import gold.test.general.*;
  import gold.test.graph.*;
  import gold.util.*;
  import gold.visualization.*;
  import gold.visualization.automaton.*;
  import gold.visualization.graph.*;
  import gold.visualization.quadtree.*;
  import gold.visualization.turingMachine.*;
  import gold.visualization.util.*;
  import java.lang.*;
  import org.apfloat.*;
  import static gold.util.GReflection.*;
  @SuppressWarnings("all")
  public final class E_UnZIP {
    static {
      gold.swing.util.GUtilities.installGoldLookAndFeel();
    }
    public static Object A=null;
    public static void main(String[] args) {
      int $line=0;
      Object $result=null;
      $try:try {
        $line=30;
        if ($opEqualY($invokeField("length",args),0)) {
          $line=30;
          A=$fix($opIntvlY('a','c'));
        }
        else {
          $line=32;
          gold.structures.set.ISet $v1=$newSet();
          int $v3=$int(0);
          int $v4=$int($invokeMethod("length",((java.lang.String[])args)[$int(0)],new Object[]{}))-1;
          $v2:for (int i=$v3; i<=$v4; i++) {
            $v1.add($invokeMethod("charAt",((java.lang.String[])args)[$int(0)],new Object[]{i}));
          }
          A=$fix($opDiffeY($v1,GCollections.asSet('$')));
        }
        $line=37;
        Object unZip=$fix(E_UnZIP.createTransducer(A));
        $line=39;
        Utilities.test($cast(gold.structures.automaton.IAutomaton.class,unZip));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,E_UnZIP.class,"main",$line);
      }
    }
    public static ITransducer createTransducer(Object Alph) {
      int $line=0;
      Object $result=null;
      $try:try {
        $line=47;
        A=$fix(Alph);
        $line=48;
        Object Q=$fix($opUnionY($opUnionY(GCollections.asSet("I","F","E"),A),$opCartsY(new Object[]{A,$opIntvlY(2,4)})));
        $line=49;
        Object \u03A3=$fix($opUnionY($opUnionY(A,$opIntvlY('2','5')),GCollections.asSet('$')));
        $line=50;
        Object \u03A3_=$fix($opUnionY(A,GCollections.asSet('$')));
        $line=51;
        Object q_0=$fix("I");
        $line=52;
        Object F=$fix(GCollections.asSet("F"));
        $line=53;
        $result=$invokeConstructor(GDeterministicTransducer.class,new Object[]{Q,\u03A3,\u03A3_,q_0,F,new GMethod(E_UnZIP.class,"\u03B41"),new GMethod(E_UnZIP.class,"g"),new GMethod(E_UnZIP.class,"h1")});
        if (true) break $try;
        $line=54;
        $rethrow(new RuntimeException("The function \"createTransducer(Alph:Object)\" did not return a value."));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,E_UnZIP.class,"createTransducer",$line);
      }
      return $cast(ITransducer.class,$result);
    }
    public static Object \u03B41(Object q, Object s) {
      int $line=0;
      Object $result=null;
      $try:try {
        $line=57;
        if ($opMembrY(q,GCollections.asSet("E","F"))) {
          $line=57;
          $result="E";
          if (true) break $try;
        }
        else {
          $line=58;
          if ($opEqualY(s,'$')) {
            $line=58;
            $result="F";
            if (true) break $try;
          }
          else {
            $line=59;
            if (($opEqualY(q,"I")&&$opMembrY(s,$opIntvlY('2','5')))) {
              $line=59;
              $result="E";
              if (true) break $try;
            }
            else {
              $line=60;
              if ($opEqualY(q,"I")) {
                $line=60;
                $result=s;
                if (true) break $try;
              }
              else {
                $line=61;
                if (($opMembrY(q,A)&&$opEqualY(s,'5'))) {
                  $line=61;
                  $result="I";
                  if (true) break $try;
                }
                else {
                  $line=62;
                  if (($opMembrY(q,A)&&$opMembrY(s,$opIntvlY('2','4')))) {
                    $line=62;
                    $result=GCollections.asList(q,$opSubtrY(s,'0'));
                    if (true) break $try;
                  }
                  else {
                    $line=63;
                    if (($opMembrY(q,A)&&$opEqualY(s,q))) {
                      $line=63;
                      $result="E";
                      if (true) break $try;
                    }
                    else {
                      $line=64;
                      if (($opMembrY(q,A)&&$opMembrY(s,A))) {
                        $line=64;
                        $result=s;
                        if (true) break $try;
                      }
                      else {
                        $line=65;
                        $result="E";
                        if (true) break $try;
                      }
                    }
                  }
                }
              }
            }
          }
        }
        $line=67;
        $rethrow(new RuntimeException("The function \"\u03B41(q:Object,s:Object)\" did not return a value."));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,E_UnZIP.class,"\u03B41",$line);
      }
      return $result;
    }
    public static Object \u03B41(java.lang.Iterable $v5, Object s) {
      int $line=0;
      Object $result=null;
      $try:try {
        java.util.Iterator $v6=GCollections.unmodifiableCollection($v5).iterator();
        Object q=$v6.next();
        Object x=$v6.next();
        $line=70;
        if ($opEqualY(s,'$')) {
          $line=70;
          $result="F";
          if (true) break $try;
        }
        else {
          $line=71;
          if ($opMembrY(s,$opIntvlY('2','5'))) {
            $line=71;
            $result="E";
            if (true) break $try;
          }
          else {
            $line=72;
            if ($opEqualY(s,q)) {
              $line=72;
              $result="E";
              if (true) break $try;
            }
            else {
              $line=73;
              $result=s;
              if (true) break $try;
            }
          }
        }
        $line=75;
        $rethrow(new RuntimeException("The function \"\u03B41(\u27E8q,x\u27E9:java.lang.Iterable,s:Object)\" did not return a value."));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,E_UnZIP.class,"\u03B41",$line);
      }
      return $result;
    }
    public static Object h1(Object q, Object s) {
      int $line=0;
      Object $result=null;
      $try:try {
        $line=80;
        if (($opEqualY(q,"F")||$opEqualY(q,"E"))) {
          $line=80;
          $result="";
          if (true) break $try;
        }
        else {
          $line=81;
          if (($opEqualY(s,'$')&&$opMembrY(q,A))) {
            $line=81;
            $result=$opAdditY(q,"$");
            if (true) break $try;
          }
          else {
            $line=82;
            if ($opEqualY(s,'$')) {
              $line=82;
              $result="$";
              if (true) break $try;
            }
            else {
              $line=83;
              if ($opEqualY(q,"I")) {
                $line=83;
                $result="";
                if (true) break $try;
              }
              else {
                $line=84;
                if (($opMembrY(s,$opIntvlY('2','5'))&&$opMembrY(q,A))) {
                  $line=84;
                  $result=E_UnZIP.starN(q,$opSubtrY(s,'0'));
                  if (true) break $try;
                }
                else {
                  $line=85;
                  if (($opMembrY(q,A)&&!$opEqualY(s,q))) {
                    $line=85;
                    $result=q;
                    if (true) break $try;
                  }
                  else {
                    $line=86;
                    $result="";
                    if (true) break $try;
                  }
                }
              }
            }
          }
        }
        $line=88;
        $rethrow(new RuntimeException("The function \"h1(q:Object,s:Object)\" did not return a value."));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,E_UnZIP.class,"h1",$line);
      }
      return $result;
    }
    public static Object h1(java.lang.Iterable $v7, Object s) {
      int $line=0;
      Object $result=null;
      $try:try {
        java.util.Iterator $v8=GCollections.unmodifiableCollection($v7).iterator();
        Object last=$v8.next();
        Object count=$v8.next();
        $line=91;
        if ($opEqualY(s,'$')) {
          $line=91;
          $result="$";
          if (true) break $try;
        }
        else {
          $line=92;
          $result="";
          if (true) break $try;
        }
        $line=94;
        $rethrow(new RuntimeException("The function \"h1(\u27E8last,count\u27E9:java.lang.Iterable,s:Object)\" did not return a value."));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,E_UnZIP.class,"h1",$line);
      }
      return $result;
    }
    public static Object g(Object q) {
      int $line=0;
      Object $result=null;
      $try:try {
        $line=96;
        $result="";
        if (true) break $try;
        $line=97;
        $rethrow(new RuntimeException("The function \"g(q:Object)\" did not return a value."));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,E_UnZIP.class,"g",$line);
      }
      return $result;
    }
    public static Object starN(Object c, Object n) {
      int $line=0;
      Object $result=null;
      $try:try {
        $line=100;
        if ($opEqualY(n,0)) {
          $line=100;
          $result="";
          if (true) break $try;
        }
        else {
          $line=101;
          $result=$opAdditY($invokeMethod(String.class,"valueOf",true,null,new Object[]{c}),E_UnZIP.starN(c,$opSubtrY(n,1)));
          if (true) break $try;
        }
        $line=103;
        $rethrow(new RuntimeException("The function \"starN(c:Object,n:Object)\" did not return a value."));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,E_UnZIP.class,"starN",$line);
      }
      return $result;
    }
  }
  