@ Override public void process ( Node externs , Node root ) { checkState ( compiler . getLifeCycleStage ( ) . isNormalized ( ) ) ; if ( ! allowRemovalOfExternProperties ) { referencedPropertyNames . addAll ( compiler . getExternProperties ( ) ) ; } traverseAndRemoveUnusedReferences ( root ) ; // This pass may remove definitions of getter or setter properties. GatherGettersAndSetterProperties . update ( compiler , externs , root ) ; }
Traverses the root removing all unused variables . Multiple traversals may occur to ensure all unused variables are removed .