/// <summary>
        /// Converts the given GD into preconditions. A root AND-expression is split into a list of precondition expressions.
        /// </summary>
        /// <param name="gdAstNode">AST node.</param>
        /// <returns>Converted preconditions.</returns>
        public static Preconditions ToPreconditions(GdAstNode gdAstNode)
        {
            Preconditions preconditions = new Preconditions();

            Expression expression = ToExpression(gdAstNode);

            var andExpression = expression as AndExpression;

            if (andExpression != null)
            {
                preconditions.AddRange(andExpression.Arguments);
            }
            else if (expression != null)
            {
                preconditions.Add(expression);
            }

            return(preconditions);
        }