001    /* This file was generated with JastAdd2 (http://jastadd.org) version R20130213 */
002    package AST;
003    
004    import java.util.HashSet;
005    import java.io.File;
006    import java.util.*;
007    import beaver.*;
008    import java.util.ArrayList;
009    import java.util.zip.*;
010    import java.io.*;
011    import java.io.FileNotFoundException;
012    import java.util.Collection;
013    /**
014     * @production EmptyStmt : {@link Stmt};
015     * @ast node
016     * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/java.ast:198
017     */
018    public class EmptyStmt extends Stmt implements Cloneable {
019      /**
020       * @apilevel low-level
021       */
022      public void flushCache() {
023      }
024      /**
025       * @apilevel internal
026       */
027      public void flushCollectionCache() {
028      }
029      /**
030       * @apilevel internal
031       */
032      @SuppressWarnings({"unchecked", "cast"})
033      public EmptyStmt clone() throws CloneNotSupportedException {
034        EmptyStmt node = (EmptyStmt)super.clone();
035        node.isDAafter_Variable_values = null;
036        node.isDUafter_Variable_values = null;
037        node.canCompleteNormally_computed = false;
038        node.in$Circle(false);
039        node.is$Final(false);
040        return node;
041      }
042    /**
043     * @apilevel internal
044     */
045      @SuppressWarnings({"unchecked", "cast"})
046    public EmptyStmt copy() {
047      
048      try {
049        EmptyStmt node = (EmptyStmt) clone();
050        node.parent = null;
051        if(children != null)
052          node.children = (ASTNode[]) children.clone();
053        
054        return node;
055      } catch (CloneNotSupportedException e) {
056        throw new Error("Error: clone not supported for " + getClass().getName());
057      }
058      
059    }/**
060     * Create a deep copy of the AST subtree at this node.
061     * The copy is dangling, i.e. has no parent.
062     * @return dangling copy of the subtree at this node
063     * @apilevel low-level
064     */
065      @SuppressWarnings({"unchecked", "cast"})
066    public EmptyStmt fullCopy() {
067      
068      EmptyStmt tree = (EmptyStmt) copy();
069      if (children != null) {
070        for (int i = 0; i < children.length; ++i) {
071          
072          ASTNode child = (ASTNode) children[i];
073          if(child != null) {
074            child = child.fullCopy();
075            tree.setChild(child, i);
076          }
077        }
078      }
079      return tree;
080      
081    }  /**
082       * @ast method 
083       * @aspect PrettyPrint
084       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:537
085       */
086      public void toString(StringBuffer s) {
087        s.append(indent());
088        s.append(";");
089      }
090      /**
091       * @ast method 
092       * @aspect CreateBCode
093       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:1191
094       */
095      public void createBCode(CodeGeneration gen) {
096        super.createBCode(gen);
097      }
098      /**
099       * @ast method 
100       * 
101       */
102      public EmptyStmt() {
103        super();
104    
105    
106      }
107      /**
108       * Initializes the child array to the correct size.
109       * Initializes List and Opt nta children.
110       * @apilevel internal
111       * @ast method
112       * @ast method 
113       * 
114       */
115      public void init$Children() {
116      }
117      /**
118       * @apilevel low-level
119       * @ast method 
120       * 
121       */
122      protected int numChildren() {
123        return 0;
124      }
125      /**
126       * @apilevel internal
127       * @ast method 
128       * 
129       */
130      public boolean mayHaveRewrite() {
131        return false;
132      }
133      protected java.util.Map isDAafter_Variable_values;
134      /**
135       * @attribute syn
136       * @aspect DA
137       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:416
138       */
139      @SuppressWarnings({"unchecked", "cast"})
140      public boolean isDAafter(Variable v) {
141        Object _parameters = v;
142        if(isDAafter_Variable_values == null) isDAafter_Variable_values = new java.util.HashMap(4);
143        if(isDAafter_Variable_values.containsKey(_parameters)) {
144          return ((Boolean)isDAafter_Variable_values.get(_parameters)).booleanValue();
145        }
146          ASTNode$State state = state();
147      int num = state.boundariesCrossed;
148      boolean isFinal = this.is$Final();
149        boolean isDAafter_Variable_value = isDAafter_compute(v);
150      if(isFinal && num == state().boundariesCrossed){ isDAafter_Variable_values.put(_parameters, Boolean.valueOf(isDAafter_Variable_value)); }
151            return isDAafter_Variable_value;
152      }
153      /**
154       * @apilevel internal
155       */
156      private boolean isDAafter_compute(Variable v) {  return isDAbefore(v);  }
157      protected java.util.Map isDUafter_Variable_values;
158      /**
159       * @attribute syn
160       * @aspect DU
161       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:865
162       */
163      @SuppressWarnings({"unchecked", "cast"})
164      public boolean isDUafter(Variable v) {
165        Object _parameters = v;
166        if(isDUafter_Variable_values == null) isDUafter_Variable_values = new java.util.HashMap(4);
167        if(isDUafter_Variable_values.containsKey(_parameters)) {
168          return ((Boolean)isDUafter_Variable_values.get(_parameters)).booleanValue();
169        }
170          ASTNode$State state = state();
171      int num = state.boundariesCrossed;
172      boolean isFinal = this.is$Final();
173        boolean isDUafter_Variable_value = isDUafter_compute(v);
174      if(isFinal && num == state().boundariesCrossed){ isDUafter_Variable_values.put(_parameters, Boolean.valueOf(isDUafter_Variable_value)); }
175            return isDUafter_Variable_value;
176      }
177      /**
178       * @apilevel internal
179       */
180      private boolean isDUafter_compute(Variable v) {  return isDUbefore(v);  }
181      /**
182       * @apilevel internal
183       */
184      protected boolean canCompleteNormally_computed = false;
185      /**
186       * @apilevel internal
187       */
188      protected boolean canCompleteNormally_value;
189      /**
190       * @attribute syn
191       * @aspect UnreachableStatements
192       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/UnreachableStatements.jrag:44
193       */
194      @SuppressWarnings({"unchecked", "cast"})
195      public boolean canCompleteNormally() {
196        if(canCompleteNormally_computed) {
197          return canCompleteNormally_value;
198        }
199          ASTNode$State state = state();
200      int num = state.boundariesCrossed;
201      boolean isFinal = this.is$Final();
202        canCompleteNormally_value = canCompleteNormally_compute();
203      if(isFinal && num == state().boundariesCrossed){ canCompleteNormally_computed = true; }
204            return canCompleteNormally_value;
205      }
206      /**
207       * @apilevel internal
208       */
209      private boolean canCompleteNormally_compute() {  return reachable();  }
210      /**
211       * @attribute syn
212       * @aspect PreciseRethrow
213       * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/PreciseRethrow.jrag:55
214       */
215      public boolean modifiedInScope(Variable var) {
216        ASTNode$State state = state();
217        try {  return false;  }
218        finally {
219        }
220      }
221      /**
222       * @apilevel internal
223       */
224      public ASTNode rewriteTo() {
225        return super.rewriteTo();
226      }
227    }