public override AstVisitAction VisitCommand(CommandAst commandAst) { object newParentObject; var commandElements = commandAst.CommandElements; string dslInstanceName = this.DslNameGiver(commandElements, commandAst.Parent); if (dslInstanceName == null) { return(AstVisitAction.Continue); } string dslTypeName = ((StringConstantExpressionAst)commandElements[0]).Value; dslTypeName = dslTypeName.Replace("PSDesiredStateConfiguration\\", ""); if (dslTypeName.ToLowerInvariant() == "configuration") { CommandParameterAst nameAst = (CommandParameterAst)commandAst.Find(ast => ast is CommandParameterAst && "name".Equals(((CommandParameterAst)ast).ParameterName.ToLowerInvariant()), false); newParentObject = this.ConfigurationAction(nameAst.Argument.ToString(), commandAst.Extent, this.GetCurrentNestingLevel(), this.GetCurrentParentObject()); } else { newParentObject = this.DslAction(dslTypeName, dslInstanceName, commandAst.Extent, this.GetCurrentNestingLevel(), this.GetCurrentParentObject()); } Ast body = commandAst.Find(ast => ast is CommandParameterAst && ("body".Equals(((CommandParameterAst)ast).ParameterName.ToLowerInvariant()) || "value".Equals(((CommandParameterAst)ast).ParameterName.ToLowerInvariant())), false); if (body != null) { this.VisitChildren(body, newParentObject); } else { this.VisitChildren(commandElements[commandElements.Count - 1], newParentObject); } return(AstVisitAction.SkipChildren); }