private bool BuildParticleContentModel(ParticleContentValidator contentValidator, XmlSchemaParticle particle)
{
bool flag = false;
if (particle is XmlSchemaElement)
{
XmlSchemaElement element = (XmlSchemaElement) particle;
contentValidator.AddName(element.QualifiedName, element);
}
else if (particle is XmlSchemaAny)
{
flag = true;
XmlSchemaAny any = (XmlSchemaAny) particle;
contentValidator.AddNamespaceList(any.NamespaceList, any);
}
else if (particle is XmlSchemaGroupBase)
{
XmlSchemaObjectCollection items = ((XmlSchemaGroupBase) particle).Items;
bool flag2 = particle is XmlSchemaChoice;
contentValidator.OpenGroup();
bool flag3 = true;
for (int i = 0; i < items.Count; i++)
{
if (flag3)
{
flag3 = false;
}
else if (flag2)
{
contentValidator.AddChoice();
}
else
{
contentValidator.AddSequence();
}
flag = this.BuildParticleContentModel(contentValidator, (XmlSchemaParticle) items[i]);
}
contentValidator.CloseGroup();
}
if ((particle.MinOccurs != 1M) || (particle.MaxOccurs != 1M))
{
if ((particle.MinOccurs == 0M) && (particle.MaxOccurs == 1M))
{
contentValidator.AddQMark();
return flag;
}
if ((particle.MinOccurs == 0M) && (particle.MaxOccurs == 79228162514264337593543950335M))
{
contentValidator.AddStar();
return flag;
}
if ((particle.MinOccurs == 1M) && (particle.MaxOccurs == 79228162514264337593543950335M))
{
contentValidator.AddPlus();
return flag;
}
contentValidator.AddLeafRange(particle.MinOccurs, particle.MaxOccurs);
}
return flag;
}