public void AndThen() { Option <int> opt1 = new Some <int>(1); Assert.Equal(2, opt1.AndThen(x => new Some <int>(x + 1)).Unwrap()); Assert.Equal(None <int> .Instance, opt1.AndThen(_ => None <int> .Instance)); Option <int> opt2 = None <int> .Instance; Assert.Equal(None <int> .Instance, opt2.AndThen(x => new Some <int>(x + 1))); Assert.Equal(None <int> .Instance, opt2.AndThen(_ => None <int> .Instance)); }