public override void GetExplain(TextualExplanation explanation, bool explainSubElements)
{
explanation.Comment(this);
if (!IsAbstract)
{
explanation.Write("STRUCTURE ");
}
else
{
explanation.Write("INTERFACE ");
}
explanation.WriteLine(Name);
explanation.Indent(2, () =>
{
foreach (Structure structure in Interfaces)
{
if (structure != null)
{
explanation.Write("IMPLEMENTS ");
explanation.WriteLine(structure.Name);
}
}
foreach (StructureElement element in Elements)
{
explanation.Write(element, explainSubElements);
}
if (!IsAbstract)
{
foreach (Procedure procedure in Procedures)
{
explanation.Write(procedure, explainSubElements);
}
foreach (StateMachine stateMachine in StateMachines)
{
explanation.Write(stateMachine, explainSubElements);
}
foreach (Rule rule in Rules)
{
explanation.Write(rule, explainSubElements);
}
}
});
if (!IsAbstract)
{
explanation.WriteLine("END STRUCTURE");
}
else
{
explanation.WriteLine("END INTERFACE");
}
}