class UselessTryRemover extends ASTAnalysis {
  public UselessTryRemover(Singletons.Global g) {
  }

  public static UselessTryRemover v() {
    return G.v().soot_dava_toolkits_base_AST_UselessTryRemover();
  }

  public int getAnalysisDepth() {
    return ANALYSE_AST;
  }

  public void analyseASTNode(ASTNode n) {<FILL_FUNCTION_BODY>}
}

    Iterator<Object> sbit = n.get_SubBodies().iterator();

    while (sbit.hasNext()) {

      List<Object> subBody = null, toRemove = new ArrayList<Object>();

      if (n instanceof ASTTryNode) {
        subBody = (List<Object>) ((ASTTryNode.container) sbit.next()).o;
      } else {
        subBody = (List<Object>) sbit.next();
      }

      Iterator<Object> cit = subBody.iterator();
      while (cit.hasNext()) {
        Object child = cit.next();

        if (child instanceof ASTTryNode) {
          ASTTryNode tryNode = (ASTTryNode) child;

          tryNode.perform_Analysis(TryContentsFinder.v());

          if ((tryNode.get_CatchList().isEmpty()) || (tryNode.isEmpty())) {
            toRemove.add(tryNode);
          }
        }
      }

      Iterator<Object> trit = toRemove.iterator();
      while (trit.hasNext()) {
        ASTTryNode tryNode = (ASTTryNode) trit.next();

        subBody.addAll(subBody.indexOf(tryNode), tryNode.get_TryBody());
        subBody.remove(tryNode);
      }

      if (!toRemove.isEmpty()) {
        G.v().ASTAnalysis_modified = true;
      }
    }
  
<methods>public non-sealed void <init>() ,public void analyseASTNode(soot.dava.internal.AST.ASTNode) ,public void analyseArrayRef(soot.jimple.ArrayRef) ,public void analyseBinopExpr(soot.jimple.BinopExpr) ,public void analyseDefinitionStmt(soot.jimple.DefinitionStmt) ,public void analyseExpr(soot.jimple.Expr) ,public void analyseInstanceFieldRef(soot.jimple.InstanceFieldRef) ,public void analyseInstanceInvokeExpr(soot.jimple.InstanceInvokeExpr) ,public void analyseInstanceOfExpr(soot.jimple.InstanceOfExpr) ,public void analyseInvokeExpr(soot.jimple.InvokeExpr) ,public void analyseInvokeStmt(soot.jimple.InvokeStmt) ,public void analyseNewArrayExpr(soot.jimple.NewArrayExpr) ,public void analyseNewMultiArrayExpr(soot.jimple.NewMultiArrayExpr) ,public void analyseRef(soot.jimple.Ref) ,public void analyseReturnStmt(soot.jimple.ReturnStmt) ,public void analyseStmt(soot.jimple.Stmt) ,public void analyseThrowStmt(soot.jimple.ThrowStmt) ,public void analyseUnopExpr(soot.jimple.UnopExpr) ,public void analyseValue(soot.Value) ,public abstract int getAnalysisDepth() <variables>public static final int ANALYSE_AST,public static final int ANALYSE_STMTS,public static final int ANALYSE_VALUES