     }
     
     func forceAsFileRegion() -> FileRegion {
-        return tryAsFileRegion()!
+        if let v = tryAsFileRegion() {
+            return v
+        } else {
+            fatalError("tried to decode as type \(FileRegion.self) but found \(Mirror(reflecting: Mirror(reflecting: self.storage).children.first!.value).subjectType)")
+        }
     }
     
     func tryAsOther<T>(type: T.Type = T.self) -> T? {

    }

    func forceAsOther<T>(type: T.Type = T.self) -> T {
        return tryAsOther(type: type)!
    }

    func forceAs<T>(type: T.Type = T.self) -> T {

    }

    func forceAsByteBuffer() -> ByteBuffer {
        if let v = tryAsByteBuffer() {
            return v
        } else {
            fatalError("tried to decode as type \(ByteBuffer.self) but found \(Mirror(reflecting: Mirror(reflecting: self.storage).children.first!.value).subjectType)")
        }
    }

    func tryAsFileRegion() -> FileRegion? {
