public void reduce ( GeneralSubtrees excluded ) { if ( excluded == null ) { return ; } for ( int i = 0 , n = excluded . size ( ) ; i < n ; i ++ ) { GeneralNameInterface excludedName = excluded . getGeneralNameInterface ( i ) ; for ( int j = 0 ; j < size ( ) ; j ++ ) { GeneralNameInterface permitted = getGeneralNameInterface ( j ) ; switch ( excludedName . constrains ( permitted ) ) { case GeneralNameInterface . NAME_DIFF_TYPE : break ; case GeneralNameInterface . NAME_MATCH : remove ( j ) ; j -- ; break ; case GeneralNameInterface . NAME_NARROWS : /* permitted narrows excluded */ remove ( j ) ; j -- ; break ; case GeneralNameInterface . NAME_WIDENS : /* permitted widens excluded */ break ; case GeneralNameInterface . NAME_SAME_TYPE : break ; } } /* end of this pass of permitted */ } /* end of pass of excluded */ }
reduce this GeneralSubtrees by contents of another . This function is used in merging excluded NameConstraints with permitted NameConstraints to obtain a minimal form of permitted NameConstraints . It is an optimization and does not affect correctness of the results .