class InnerClassInfoFinder extends polyglot.visit.NodeVisitor {

  private final ArrayList<Node> localClassDeclList;
  private final ArrayList<Node> anonBodyList;
  private final ArrayList<Node> memberList;
  // private ArrayList declaredInstList;
  // private ArrayList usedInstList;

  public ArrayList<Node> memberList() {
    return memberList;
  }

  /*
   * public ArrayList declaredInstList(){ return declaredInstList; }
   *
   * public ArrayList usedInstList(){ return usedInstList; }
   */

  public ArrayList<Node> localClassDeclList() {
    return localClassDeclList;
  }

  public ArrayList<Node> anonBodyList() {
    return anonBodyList;
  }

  public InnerClassInfoFinder() {
    // declFound = null;
    localClassDeclList = new ArrayList<Node>();
    anonBodyList = new ArrayList<Node>();
    memberList = new ArrayList<Node>();
    // declaredInstList = new ArrayList();
    // usedInstList = new ArrayList();
  }

  public polyglot.visit.NodeVisitor enter(polyglot.ast.Node parent, polyglot.ast.Node n) {<FILL_FUNCTION_BODY>}
}


    if (n instanceof polyglot.ast.LocalClassDecl) {
      localClassDeclList.add(n);
    }
    if (n instanceof polyglot.ast.New) {
      if (((polyglot.ast.New) n).anonType() != null) {
        anonBodyList.add(n);
      }
      /*
       * polyglot.types.ProcedureInstance pi = ((polyglot.ast.New)n).constructorInstance(); if (pi.isPrivate()){
       * usedInstList.add(new polyglot.util.IdentityKey(pi)); }
       */
    }

    if (n instanceof polyglot.ast.ProcedureDecl) {
      memberList.add(n);
      /*
       * polyglot.types.ProcedureInstance pi = ((polyglot.ast.ProcedureDecl)n).procedureInstance(); if
       * (pi.flags().isPrivate()){ declaredInstList.add(new polyglot.util.IdentityKey(pi)); }
       */
    }
    if (n instanceof polyglot.ast.FieldDecl) {
      memberList.add(n);
      /*
       * polyglot.types.FieldInstance fi = ((polyglot.ast.FieldDecl)n).fieldInstance(); if (fi.flags().isPrivate()){
       * declaredInstList.add(new polyglot.util.IdentityKey(fi)); }
       */
    }
    if (n instanceof polyglot.ast.Initializer) {
      memberList.add(n);
    }

    /*
     * if (n instanceof polyglot.ast.Field) { polyglot.types.FieldInstance fi = ((polyglot.ast.Field)n).fieldInstance(); if
     * (fi.isPrivate()){ usedInstList.add(new polyglot.util.IdentityKey(fi)); } } if (n instanceof polyglot.ast.Call){
     * polyglot.types.ProcedureInst pi = ((polyglot.ast.Call)n).methodInstance(); if (pi.isPrivate()){ usedInstList.add(new
     * polyglot.util.IdentityKey(pi)); } } if (n instanceof polyglot.ast.ConstructorCall){ polyglot.types.ProcedureInstance
     * pi = ((polyglot.ast.ConstructorCall)n).constructorInstance(); if (pi.isPrivate()){ usedInstList.add(new
     * polyglot.util.IdentityKey(pi)); } }
     */

    return enter(n);
  
<methods>public void <init>() ,public polyglot.visit.NodeVisitor begin() ,public polyglot.visit.NodeVisitor enter(polyglot.ast.Node) ,public polyglot.visit.NodeVisitor enter(polyglot.ast.Node, polyglot.ast.Node) ,public void finish() ,public void finish(polyglot.ast.Node) ,public polyglot.ast.Node leave(polyglot.ast.Node, polyglot.ast.Node, polyglot.visit.NodeVisitor) ,public polyglot.ast.Node leave(polyglot.ast.Node, polyglot.ast.Node, polyglot.ast.Node, polyglot.visit.NodeVisitor) ,public polyglot.ast.Node override(polyglot.ast.Node) ,public polyglot.ast.Node override(polyglot.ast.Node, polyglot.ast.Node) ,public java.lang.String toString() ,public polyglot.ast.Node visitEdge(polyglot.ast.Node, polyglot.ast.Node) <variables>