<commit_before>import SpriteKit

class MOptionWhistlesVsZombiesMenuItem
{
    let positionX:CGFloat
    let positionY:CGFloat
    private(set) var whistleTexture:MOptionWhistlesVsZombiesWhistleTextures?
    private(set) var texture:SKTexture?
    private(set) var title:String?
    private(set) var descr:String?
    private(set) var textureSize:CGSize
    
    init(positionX:CGFloat, positionY:CGFloat)
    {
        self.positionX = positionX
        self.positionY = positionY
        textureSize = CGSize.zero
    }
    
    //MARK: public
    
    func factoryWhistle() -> MOptionWhistlesVsZombiesWhistle?
    {
        return nil
    }
}<commit_msg>Create factory whistle final<commit_after>import SpriteKit

class MOptionWhistlesVsZombiesMenuItem
{
    let positionX:CGFloat
    let positionY:CGFloat
    private(set) var whistleType:MOptionWhistlesVsZombiesWhistle.Type?
    private(set) var whistleTextures:MOptionWhistlesVsZombiesWhistleTextures?
    private(set) var texture:SKTexture?
    private(set) var title:String?
    private(set) var descr:String?
    private(set) var textureSize:CGSize
    
    init(positionX:CGFloat, positionY:CGFloat)
    {
        self.positionX = positionX
        self.positionY = positionY
        textureSize = CGSize.zero
    }
    
    //MARK: public
    
    //MARK: final
    
    final func factoryWhistle() -> MOptionWhistlesVsZombiesWhistle?
    {
        guard
        
            let whistleType:MOptionWhistlesVsZombiesWhistle.Type = self.whistleType,
            let whistleTextures:MOptionWhistlesVsZombiesWhistleTextures = self.whistleTextures
        
        else
        {
            return nil
        }
        
        let whistle:MOptionWhistlesVsZombiesWhistle = whistleType.init(
            textures:whistleTextures)
        
        return whistle
    }
}
{'fraction_non_alphanumeric': 0.06673960612691467, 'fraction_numerical': 0.0, 'mean_word_length': 2.75564681724846, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7594050', 'n_tokens_mistral': 595, 'n_tokens_neox': 567, 'n_words': 99}