public function getGroupedIcons()
    {
        // Answer Cached Icons (if available):
        
        if ($icons = self::cache()->get($this->getCacheKey())) {
            return $icons;
        }
        
        // Initialise:
        
        $icons = [];
        
        // Parse Icon Source Data:
        
        $data = Yaml::parse($this->getSourceData());
        
        // Build Icon Groups:
        
        if (isset($data['icons'])) {
            
            foreach ($data['icons'] as $icon) {
                
                foreach ($icon['categories'] as $category) {
                    
                    // Create Category Array:
                    
                    if (!isset($icons[$category])) {
                        $icons[$category] = [];
                    }
                    
                    // Create Icon Element:
                    
                    $icons[$category][$icon['id']] = [
                        'name' => $icon['name'],
                        'unicode' => $icon['unicode']
                    ];
                    
                }
                
            }
            
        }
        
        // Sort Icons by Group:
        
        ksort($icons);
        
        // Sort Icon Groups by Name:
        
        foreach ($icons as &$group) {
            uasort($group, function ($a, $b) {
                return strcasecmp($a['name'], $b['name']);
            });
        }
        
        // Store Icons in Cache:
        
        self::cache()->set($this->getCacheKey(), $icons);
        
        // Answer Grouped Icons:
        
        return $icons;
    }