content: // DO NOT EDIT THIS FILE! IT IS AUTOMATICALLY GENERATED FROM FILE "src/D_ZIP.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 D_ZIP {
    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=28;
        if ($opEqualY($invokeField("length",args),0)) {
          $line=28;
          A=$fix($opIntvlY('a','c'));
        }
        else {
          $line=30;
          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=34;
        Object zip=$fix(D_ZIP.createTransducer(A));
        $line=35;
        GAutomataFrame.show($cast(gold.structures.automaton.IAutomaton.class,zip));
        $line=36;
        Utilities.test($cast(gold.structures.automaton.IAutomaton.class,zip));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,D_ZIP.class,"main",$line);
      }
    }
    public static ITransducer createTransducer(Object Alph) {
      int $line=0;
      Object $result=null;
      $try:try {
        $line=42;
        A=$fix(Alph);
        $line=43;
        gold.structures.set.ISet $v5=$newSet();
        $v6:for (Object letter:GCollections.unmodifiableCollection(A)) {
          int $v7=$int(1);
          int $v8=$int(5);
          for (int count=$v7; count<=$v8; count++) {
            $v5.add(GCollections.asList(letter,count));
          }
        }
        Object Q=$fix($opUnionY($v5,GCollections.asSet("I","F")));
        $line=44;
        Object \u03A3=$fix($opUnionY(A,GCollections.asSet('$')));
        $line=47;
        Object \u03A3_=$fix($opUnionY($opUnionY(A,$opIntvlY('2','5')),GCollections.asSet('$')));
        $line=49;
        Object q_0=$fix("I");
        $line=50;
        Object F=$fix(GCollections.asSet("F"));
        $line=51;
        $result=$invokeConstructor(GDeterministicTransducer.class,new Object[]{Q,\u03A3,\u03A3_,q_0,F,new GMethod(D_ZIP.class,"d"),new GMethod(D_ZIP.class,"g"),new GMethod(D_ZIP.class,"h")});
        if (true) break $try;
        $line=52;
        $rethrow(new RuntimeException("The function \"createTransducer(Alph:Object)\" did not return a value."));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,D_ZIP.class,"createTransducer",$line);
      }
      return $cast(ITransducer.class,$result);
    }
    public static Object d(Object q, Object \u03C3) {
      int $line=0;
      Object $result=null;
      $try:try {
        $line=56;
        if ($opEqualY(q,"F")) {
          $line=57;
          $result="F";
          if (true) break $try;
        }
        else {
          $line=58;
          if ($opEqualY(\u03C3,'$')) {
            $line=59;
            $result="F";
            if (true) break $try;
          }
          else {
            $line=61;
            $result=GCollections.asList(\u03C3,1);
            if (true) break $try;
          }
        }
        $line=63;
        $rethrow(new RuntimeException("The function \"d(q:Object,\u03C3:Object)\" did not return a value."));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,D_ZIP.class,"d",$line);
      }
      return $result;
    }
    public static Object d(java.lang.Iterable $v9, Object a) {
      int $line=0;
      Object $result=null;
      $try:try {
        java.util.Iterator $v10=GCollections.unmodifiableCollection($v9).iterator();
        Object s=$v10.next();
        Object c=$v10.next();
        $line=66;
        if ($opEqualY(a,'$')) {
          $line=67;
          $result="F";
          if (true) break $try;
        }
        else {
          $line=68;
          if (($bool($opEqualY(a,s))&&$bool($opLesstY(c,5)))) {
            $line=69;
            $result=GCollections.asList(a,$opAdditY(c,1));
            if (true) break $try;
          }
          else {
            $line=71;
            $result=GCollections.asList(a,1);
            if (true) break $try;
          }
        }
        $line=73;
        $rethrow(new RuntimeException("The function \"d(\u27E8s,c\u27E9:java.lang.Iterable,a:Object)\" did not return a value."));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,D_ZIP.class,"d",$line);
      }
      return $result;
    }
    public static Object g(Object q) {
      int $line=0;
      Object $result=null;
      $try:try {
        $line=76;
        $result="";
        if (true) break $try;
        $line=77;
        $rethrow(new RuntimeException("The function \"g(q:Object)\" did not return a value."));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,D_ZIP.class,"g",$line);
      }
      return $result;
    }
    public static Object h(Object q, Object \u03C3) {
      int $line=0;
      Object $result=null;
      $try:try {
        $line=83;
        if (($opEqualY(q,"I")&&$opEqualY(\u03C3,'$'))) {
          $line=83;
          $result=\u03C3;
          if (true) break $try;
        }
        else {
          $line=84;
          $result="";
          if (true) break $try;
        }
        $line=87;
        $rethrow(new RuntimeException("The function \"h(q:Object,\u03C3:Object)\" did not return a value."));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,D_ZIP.class,"h",$line);
      }
      return $result;
    }
    public static Object h(java.lang.Iterable $v11, Object a) {
      int $line=0;
      Object $result=null;
      $try:try {
        java.util.Iterator $v12=GCollections.unmodifiableCollection($v11).iterator();
        Object s=$v12.next();
        Object c=$v12.next();
        $line=91;
        if (($opEqualY(a,'$')&&$opEqualY(c,1))) {
          $line=92;
          $result=$opAdditY(s,"$");
          if (true) break $try;
        }
        else {
          $line=93;
          if ($opEqualY(a,'$')) {
            $line=94;
            $result=$opAdditY($opAdditY($invokeMethod(String.class,"valueOf",true,null,new Object[]{s}),$invokeMethod(String.class,"valueOf",true,null,new Object[]{c})),"$");
            if (true) break $try;
          }
          else {
            $line=95;
            if (($bool($opEqualY(a,s))&&$bool($opLesstY(c,5)))) {
              $line=96;
              $result="";
              if (true) break $try;
            }
            else {
              $line=97;
              if ($opEqualY(c,1)) {
                $line=98;
                $result=s;
                if (true) break $try;
              }
              else {
                $line=99;
                $result=$opAdditY($invokeMethod(String.class,"valueOf",true,null,new Object[]{s}),$invokeMethod(String.class,"valueOf",true,null,new Object[]{c}));
                if (true) break $try;
              }
            }
          }
        }
        $line=102;
        $rethrow(new RuntimeException("The function \"h(\u27E8s,c\u27E9:java.lang.Iterable,a:Object)\" did not return a value."));
      }
      catch (Throwable $throwable) {
        $rethrow($throwable,D_ZIP.class,"h",$line);
      }
      return $result;
    }
  }
  