                 // 次のタイミングで.Completedに遷移するため、ここには来ないはず
                 _readers.removeAtIndex(0)
             default:
-                assert(false, "Invalid state \(Int(target.status.rawValue)). Something is wrong.")
+                NSLog("Invalid state[\(Int(target.status.rawValue))]. Something is wrong.")
                 _readers.removeAtIndex(0)
             }
         }

    {

        var offset = offset
        let targets = reverseOrder ? reverse(targets) : targets
        for (i, asset) in enumerate(targets) {
            let duration = asset.duration

            if offset <= duration {
                let time = reverseOrder ? duration - offset : offset
                return (i, time)
            }
            offset -= duration
        }
        return nil
    }

        // 2) 算出した0.0位置からexpectedOffsetを足した場所を調べて返す
        let targets = Array(_assets[indexAtZero..<_assets.endIndex])

        if let result = _positionAt(targets, offset: offsetTime + timeAtZero, reverseOrder: false) {
            return (result.0 + indexAtZero, result.1)
        } else {
            return nil
