         return found
     }
     
-    fileprivate func findRecoilBack(_ timeRecoilFront: CUnsignedLongLong) -> Bool {
+    fileprivate func findRecoilBack(_ timeRecoilFront: CUnsignedLongLong) -> Event? {
         var found: Bool = false
+        var result: Event?
         let directions: Set<SearchDirection> = [.backward, .forward]
         search(directions: directions, startTime: timeRecoilFront, minDeltaTime: 0, maxDeltaTime: criteria.recoilBackMaxTime, maxDeltaTimeBackward: criteria.recoilBackBackwardMaxTime, useCycleTime: false, updateCycle: false) { (event: Event, time: CUnsignedLongLong, deltaTime: CLongLong, stop: UnsafeMutablePointer<Bool>) in
             if self.isBack(event, type: self.criteria.recoilType) {

                } else {
                    found = true
                }
                stop.initialize(to: true)
            }
        }
        return found
    }
    
    fileprivate func findSpecialEvents() {

            fgetpos(self.file, &position)
            let t = CUnsignedLongLong(event.param1)
            
            let recoilBack = self.findRecoilBack(t)
            fseek(self.file, Int(position), SEEK_SET)
            if let recoilBack = recoilBack {
                if criteria.startFromRecoil() {
                    storeFissionAlphaRecoilBack(recoilBack, match: recoilsPerAct, type: criteria.startParticleType, deltaTime: deltaTime)
                }
            } else if (criteria.requiredRecoilBack) {
                return false
