private List<XSParticle> getAllElementParticles( XSParticle particle ) { List<XSParticle> particles = new ArrayList<XSParticle>(); XSTerm xsTerm = particle.getTerm(); switch ( xsTerm.getType() ) { case XSConstants.ELEMENT_DECLARATION: particles.add( particle ); break; case XSConstants.MODEL_GROUP: XSModelGroup group = (XSModelGroup) xsTerm; for ( Iterator<XSParticle> itr = group.getParticles().iterator(); itr.hasNext(); ) { XSParticle xsParticle = itr.next(); particles.addAll( getAllElementParticles( xsParticle ) ); } break; default: // ignore wildcard term } return particles; }