public static List < Match > searchRecursive ( Match match , List < MappedConst > mc , int index ) { List < Match > result = new ArrayList < Match > ( ) ; Constraint con = mc . get ( index ) . getConstr ( ) ; int [ ] ind = mc . get ( index ) . getInds ( ) ; int lastInd = ind [ ind . length - 1 ] ; if ( con . canGenerate ( ) && match . get ( lastInd ) == null ) { Collection < BioPAXElement > elements = con . generate ( match , ind ) ; for ( BioPAXElement ele : elements ) { match . set ( ele , lastInd ) ; if ( mc . size ( ) == index + 1 ) { result . add ( ( Match ) match . clone ( ) ) ; } else { result . addAll ( searchRecursive ( match , mc , index + 1 ) ) ; } match . set ( null , lastInd ) ; } } else { if ( con . satisfies ( match , ind ) ) { if ( mc . size ( ) == index + 1 ) { result . add ( ( Match ) match . clone ( ) ) ; } else { result . addAll ( searchRecursive ( match , mc , index + 1 ) ) ; } } } return result ; }
Continues searching with the mapped constraint at the given index .