public PhaseOneResult process(TreePath bodyPath,ProcessingEnvironment env,UnderlyingAST underlyingAST,Label exceptionalExitLabel,TreeBuilder treeBuilder,AnnotationProvider annotationProvider){
  this.env=env;
  this.tryStack=new TryStack(exceptionalExitLabel);
  this.treeBuilder=treeBuilder;
  this.annotationProvider=annotationProvider;
  elements=env.getElementUtils();
  types=env.getTypeUtils();
  treeLookupMap=new IdentityHashMap<>();
  convertedTreeLookupMap=new IdentityHashMap<>();
  nodeList=new ArrayList<>();
  bindings=new HashMap<>();
  leaders=new HashSet<>();
  breakLabels=new HashMap<>();
  continueLabels=new HashMap<>();
  returnNodes=new ArrayList<>();
  scan(bodyPath,null);
  nodeList.add(new UnconditionalJump(regularExitLabel));
  return new PhaseOneResult(underlyingAST,treeLookupMap,convertedTreeLookupMap,nodeList,bindings,leaders,returnNodes);
}

public PhaseOneResult process ( TreePath bodyPath , ProcessingEnvironment env , UnderlyingAST underlyingAST , Label exceptionalExitLabel , TreeBuilder treeBuilder , AnnotationProvider annotationProvider ) { this . env = env ; this . tryStack = new TryStack ( exceptionalExitLabel ) ; this . treeBuilder = treeBuilder ; this . annotationProvider = annotationProvider ; elements = env . getElementUtils ( ) ; types = env . getTypeUtils ( ) ; treeLookupMap = new IdentityHashMap < > ( ) ; convertedTreeLookupMap = new IdentityHashMap < > ( ) ; nodeList = new ArrayList < > ( ) ; bindings = new HashMap < > ( ) ; leaders = new HashSet < > ( ) ; breakLabels = new HashMap < > ( ) ; continueLabels = new HashMap < > ( ) ; returnNodes = new ArrayList < > ( ) ; scan ( bodyPath , null ) ; nodeList . add ( new UnconditionalJump ( regularExitLabel ) ) ; return new PhaseOneResult ( underlyingAST , treeLookupMap , convertedTreeLookupMap , nodeList , bindings , leaders , returnNodes ) ; }
performs the actual work of phase one .
