private static void VisitLiteral(Expression literal, GdlVisitor visitor) { visitor.VisitLiteral(literal); var fact = literal as Fact; if (fact != null) { if (fact.RelationName == GameContainer.Parser.TokDistinct) VisitDistinct(fact, visitor); else VisitSentence(fact, visitor); } else if (literal is Negation) VisitNot((Negation) literal, visitor); else if (literal is Disjunction) VisitOr((Disjunction) literal, visitor); else throw new Exception("Unexpected GdlLiteral type " + literal.GetType()); }