getOrElse<X extends B>(x: () => X): B {
        return this.self.isRight ? <B>this.self.value : x();
    }