class SETStatementSequenceNode extends SETNode {
  private DavaBody davaBody;
  private boolean hasContinue;

  public SETStatementSequenceNode(IterableSet body, DavaBody davaBody) {
    super(body);
    add_SubBody(body);

    this.davaBody = davaBody;

    hasContinue = false;
  }

  public SETStatementSequenceNode(IterableSet body) {
    this(body, null);
  }

  public boolean has_Continue() {
    return hasContinue;
  }

  public IterableSet get_NaturalExits() {
    IterableSet c = new IterableSet();
    AugmentedStmt last = (AugmentedStmt) get_Body().getLast();

    if ((last.csuccs != null) && !last.csuccs.isEmpty()) {
      c.add(last);
    }

    return c;
  }

  public ASTNode emit_AST() {<FILL_FUNCTION_BODY>}

  public AugmentedStmt get_EntryStmt() {
    return (AugmentedStmt) get_Body().getFirst();
  }

  public void insert_AbruptStmt(DAbruptStmt stmt) {
    if (hasContinue) {
      return;
    }

    get_Body().addLast(new AugmentedStmt(stmt));
    hasContinue = stmt.is_Continue();
  }

  protected boolean resolve(SETNode parent) {
    throw new RuntimeException("Attempting auto-nest a SETStatementSequenceNode.");
  }
}

    List<AugmentedStmt> l = new LinkedList<AugmentedStmt>();

    boolean isStaticInitializer = davaBody.getMethod().getName().equals(SootMethod.staticInitializerName);

    Iterator it = get_Body().iterator();
    while (it.hasNext()) {
      AugmentedStmt as = (AugmentedStmt) it.next();
      Stmt s = as.get_Stmt();

      if (davaBody != null) {

        if (((s instanceof ReturnVoidStmt) && (isStaticInitializer)) || (s instanceof GotoStmt)
            || (s instanceof MonitorStmt)) {
          continue;
        }

        /*
         * January 12th 2006 Trying to fix the super problem we need to not ignore constructor unit i.e. this or super
         */
        if (s == davaBody.get_ConstructorUnit()) {
          // System.out.println("ALLOWING this.init STMT TO GET ADDED..............SETStatementSequenceNode");
          // continue;
        }

        if (s instanceof IdentityStmt) {
          IdentityStmt ids = (IdentityStmt) s;

          Value rightOp = ids.getRightOp(), leftOp = ids.getLeftOp();

          if (davaBody.get_ThisLocals().contains(leftOp) || (rightOp instanceof ParameterRef)
              || (rightOp instanceof CaughtExceptionRef)) {
            continue;
          }
        }
      }

      l.add(as);
    }

    if (l.isEmpty()) {
      return null;
    } else {
      return new ASTStatementSequenceNode(l);
    }
  
<methods>public void <init>(IterableSet<soot.dava.internal.asg.AugmentedStmt>) ,public boolean add_Child(soot.dava.internal.SET.SETNode, IterableSet#RAW) ,public void add_SubBody(IterableSet#RAW) ,public boolean contains(java.lang.Object) ,public void dump() ,public void dump(java.io.PrintStream) ,public abstract soot.dava.internal.AST.ASTNode emit_AST() ,public List<java.lang.Object> emit_ASTBody(IterableSet#RAW) ,public boolean equals(java.lang.Object) ,public void find_AbruptEdges(soot.dava.toolkits.base.finders.AbruptEdgeFinder) ,public void find_LabeledBlocks(soot.dava.toolkits.base.finders.LabeledBlockFinder) ,public void find_SmallestSETNode(soot.dava.internal.asg.AugmentedStmt) ,public void find_StatementSequences(soot.dava.toolkits.base.finders.SequenceFinder, soot.dava.DavaBody) ,public IterableSet<soot.dava.internal.asg.AugmentedStmt> get_Body() ,public Map<IterableSet#RAW,IterableSet#RAW> get_Body2ChildChain() ,public abstract soot.dava.internal.asg.AugmentedStmt get_EntryStmt() ,public IterableSet<soot.dava.internal.asg.AugmentedStmt> get_IntersectionWith(soot.dava.internal.SET.SETNode) ,public soot.dava.internal.SET.SETNodeLabel get_Label() ,public abstract IterableSet#RAW get_NaturalExits() ,public soot.dava.internal.SET.SETNode get_Parent() ,public IterableSet#RAW get_Predecessors() ,public List<IterableSet#RAW> get_SubBodies() ,public IterableSet#RAW get_Successors() ,public boolean has_IntersectionWith(soot.dava.internal.SET.SETNode) ,public int hashCode() ,public boolean insert_ChildBefore(soot.dava.internal.SET.SETNode, soot.dava.internal.SET.SETNode, IterableSet#RAW) ,public boolean is_StrictSupersetOf(soot.dava.internal.SET.SETNode) ,public boolean is_SupersetOf(soot.dava.internal.SET.SETNode) ,public boolean nest(soot.dava.internal.SET.SETNode) ,public boolean remove_Child(soot.dava.internal.SET.SETNode, IterableSet#RAW) ,public void verify() <variables>private IterableSet<soot.dava.internal.asg.AugmentedStmt> body,protected Map<IterableSet#RAW,IterableSet#RAW> body2childChain,protected soot.dava.internal.asg.AugmentedStmt entryStmt,private final non-sealed soot.dava.internal.SET.SETNodeLabel label,private static final org.slf4j.Logger logger,protected soot.dava.internal.SET.SETNode parent,protected IterableSet#RAW predecessors,protected LinkedList<IterableSet#RAW> subBodies,protected IterableSet#RAW successors