protected void advance(boolean returnWithId) { while (true) { for (; ((currentFeatureType == null) || !currentFeatureType.hasNext()) && featureIter.hasNext(); ) { currentFeatureType = featureIter.next(); } if (!currentFeatureType.hasNext()) break; while (currentFeatureType.hasNext()) { featureToReturn.init(); copyNextFeature(featureToReturn); featureToReturn.id = featureMap.getId(featureToReturn); if (featureToReturn.id < 0) { continue; } if (featureValid(data, cposStart, cposEnd, featureToReturn, model, _fixedTransitions)) return; } } featureToReturn.id = -1; }