public void Visit(BcsExpressionNode node)
{
if (node is BcsAtomicAgentNode)
{
VisitAgent(node as BcsAtomicAgentNode);
}
else if (node is BcsAgentStateNode)
{
VisitAgentState(node as BcsAgentStateNode);
}
else if (node is BcsComponentNode)
{
VisitComponent(node as BcsComponentNode);
}
else if (node is BcsComplexNode)
{
VisitComplex(node as BcsComplexNode);
}
else if (node is BcsReactantNode)
{
VisitReactant(node as BcsReactantNode);
}
else if (node is BcsReactionNode)
{
VisitReaction(node as BcsReactionNode);
}
else if(node is BcsLocationNode)
{
VisitLocation(node as BcsLocationNode);
}
else
{
VisitDefault(node);
}
var children = node.EnumerateChildNodes().ToList();
foreach (var childNode in children)
{
Visit(childNode);
}
}