docs: protected WireFeed parseChannel(final Element rssRoot, final Locale locale) {
  
          final Channel channel = new Channel(getType());
          channel.setStyleSheet(getStyleSheet(rssRoot.getDocument()));
  
          final Element eChannel = rssRoot.getChild("channel", getRSSNamespace());
  
          final Element title = eChannel.getChild("title", getRSSNamespace());
          if (title != null) {
              channel.setTitle(title.getText());
          }
  
          final Element link = eChannel.getChild("link", getRSSNamespace());
          if (link != null) {
              channel.setLink(link.getText());
          }
  
          final Element description = eChannel.getChild("description", getRSSNamespace());
          if (description != null) {
              channel.setDescription(description.getText());
          }
  
          channel.setImage(parseImage(rssRoot));
  
          channel.setTextInput(parseTextInput(rssRoot));
  
          // Unfortunately Microsoft's SSE extension has a special case of effectively putting the
          // sharing channel module inside the RSS tag and not inside the channel itself. So we also
          // need to look for channel modules from the root RSS element.
          final List<Module> allFeedModules = new ArrayList<Module>();
          final List<Module> rootModules = parseFeedModules(rssRoot, locale);
          final List<Module> channelModules = parseFeedModules(eChannel, locale);
  
          if (rootModules != null) {
              allFeedModules.addAll(rootModules);
          }
  
          if (channelModules != null) {
              allFeedModules.addAll(channelModules);
          }
  
          channel.setModules(allFeedModules);
          channel.setItems(parseItems(rssRoot, locale));
  
          final List<Element> foreignMarkup = extractForeignMarkup(eChannel, channel, getRSSNamespace());
          if (!foreignMarkup.isEmpty()) {
              channel.setForeignMarkup(foreignMarkup);
          }
  
          return channel;
  
      }