question: records the elapsed time stats for the action . for each input artifact , it finds the real dependent artifacts and records the critical path stats . concode_field_sep C maxCriticalPath concode_elem_sep Clock clock concode_elem_sep PriorityQueue<C> slowestComponents concode_elem_sep int SLOWEST_COMPONENTS_SIZE concode_elem_sep Object lock concode_elem_sep ConcurrentMap<Artifact,C> outputArtifactToComponent concode_field_sep void actionStarted concode_elem_sep int compare concode_elem_sep void addArtifactDependency concode_elem_sep C tryAddComponent concode_elem_sep void middlemanAction concode_elem_sep void finalizeActionStat concode_elem_sep ImmutableList<C> getSlowestComponents concode_elem_sep C createComponent concode_elem_sep void actionCached concode_elem_sep C getMaxCriticalPath concode_elem_sep A aggregate concode_elem_sep boolean isBiggestCriticalPath
target: void function ( ActionCompletionEvent arg0 ) { Action loc0 = arg0 . getAction ( ) ; C loc1 = Preconditions . checkNotNull ( outputArtifactToComponent . get ( loc0 . getPrimaryOutput ( ) ) ) ; finalizeActionStat ( arg0 . getRelativeActionStartTime ( ) , loc0 , loc1 ) ; }