public override ParticleConstraint Build(FileFormatVersions version) { if (!version.AtLeast(Version)) { return(null); } // We can potentially limit creation of a clone to times when it is required; ie, when there // is a version specific particle. var clone = new CompositeParticle(ParticleType, MinOccurs, MaxOccurs, requireFilter: RequireFilter, filterVersion: true, Version); foreach (var child in ChildrenParticles) { clone.Add(child.Build(version)); } return(clone); }