private JoinStatement VisitJoinStatement(JoinStatement joinstmt)
{
if (joinstmt == null) return null;
JoinStatement result = (JoinStatement)joinstmt.Clone();
result.joinPatternList = new JoinPatternList();
for (int i = 0, n = joinstmt.joinPatternList.Length; i < n; i++)
result.joinPatternList.Add((JoinPattern)this.Visit(joinstmt.joinPatternList[i]));
result.statement = (Statement)this.Visit(joinstmt.statement);
result.attributes = this.VisitAttributeList(joinstmt.attributes);
return result;
}