Set<FeatureWrapper> featureWrapperSet = new HashSet<FeatureWrapper>();
for (FeatureWrapper fw : featureWrappers) {
Stack<FeatureWrapper> featureWrapperStack = new Stack<FeatureWrapper>();
featureWrapperStack.add(fw);
while (!featureWrapperStack.isEmpty()) {
FeatureWrapper popedFeatureWrapper = featureWrapperStack.pop();
featureWrapperSet.add(popedFeatureWrapper);
FeatureWrapper[] requireFeatures = popedFeatureWrapper.getRequiredFeatures();
if (requireFeatures != null && requireFeatures.length > 0) {
for (FeatureWrapper rfw : requireFeatures) {
featureWrapperStack.push(rfw);
}
}