     // MARK: - Internal Methods
     
     internal func recreate() {
+        guard animationGroup != nil else { return }        // Not need to be recreated.
         stop()
         let when = dispatch_time(DISPATCH_TIME_NOW, Int64(0.2 * double_t(NSEC_PER_SEC)))
         dispatch_after(when, dispatch_get_main_queue()) { () -> Void in

            pulse.backgroundColor = backgroundColor
            let oldAlpha = alpha
            alpha = CGColorGetAlpha(backgroundColor)
            if animationGroup != nil && alpha != oldAlpha {
                recreate()
            }
        }

    /// The value of this property should be ranging from @c 0 to @c 1 (exclusive).
    public var keyTimeForHalfOpacity: Float = 0.2 {
        didSet {
            recreate()
        }
    }
    
