MvcTemplate.Components.Mvc.MvcSiteMapProvider.CopyAndSetState C# (CSharp) Method

CopyAndSetState() private method

private CopyAndSetState ( IEnumerable nodes, String area, String controller, String action ) : IEnumerable
nodes IEnumerable
area String
controller String
action String
return IEnumerable
        private IEnumerable<MvcSiteMapNode> CopyAndSetState(IEnumerable<MvcSiteMapNode> nodes, String area, String controller, String action)
        {
            List<MvcSiteMapNode> copies = new List<MvcSiteMapNode>();
            foreach (MvcSiteMapNode node in nodes)
            {
                MvcSiteMapNode copy = new MvcSiteMapNode();
                copy.IconClass = node.IconClass;
                copy.IsMenu = node.IsMenu;

                copy.Controller = node.Controller;
                copy.Action = node.Action;
                copy.Area = node.Area;

                copy.Children = CopyAndSetState(node.Children, area, controller, action);
                copy.HasActiveChildren = copy.Children.Any(child => child.IsActive || child.HasActiveChildren);
                copy.IsActive =
                    copy.Children.Any(childNode => childNode.IsActive && !childNode.IsMenu) ||
                    (
                        String.Equals(node.Area, area, StringComparison.OrdinalIgnoreCase) &&
                        String.Equals(node.Action, action, StringComparison.OrdinalIgnoreCase) &&
                        String.Equals(node.Controller, controller, StringComparison.OrdinalIgnoreCase
                    ));

                copies.Add(copy);
            }

            return copies;
        }
        private IEnumerable<MvcSiteMapNode> GetAuthorizedSiteMap(Int32? accountId, IEnumerable<MvcSiteMapNode> nodes)