// case with a jump (i.e. a non-nullish prop)
foo != null && foo.bar != null && foo.bar.baz.buzz
foo.bar != null && foo.bar.baz.buzz

// case where for some reason there is a doubled up expression
foo != null && foo.bar != null && foo.bar.baz != null && foo.bar.baz != null && foo.bar.baz.buzz
foo.bar != null && foo.bar.baz != null && foo.bar.baz != null && foo.bar.baz.buzz

// chained members with element access
foo != null && foo[bar] != null && foo[bar].baz != null && foo[bar].baz.buzz

// case with a jump (i.e. a non-nullish prop)
foo != null && foo[bar].baz != null && foo[bar].baz.buzz

// chained calls
foo != null && foo.bar != null && foo.bar.baz != null && foo.bar.baz.buzz()
foo != null && foo.bar != null && foo.bar.baz != null && foo.bar.baz.buzz != null && foo.bar.baz.buzz()
foo.bar != null && foo.bar.baz != null && foo.bar.baz.buzz != null && foo.bar.baz.buzz()

// case with a jump (i.e. a non-nullish prop)
foo != null && foo.bar != null && foo.bar.baz.buzz()
foo.bar != null && foo.bar.baz.buzz()

// case with a jump (i.e. a non-nullish prop)
foo != null && foo.bar != null && foo.bar.baz.buzz != null && foo.bar.baz.buzz()

// case with a call expr inside the chain for some inefficient reason
foo != null && foo.bar() != null && foo.bar().baz != null && foo.bar().baz.buzz != null && foo.bar().baz.buzz()

// chained calls with element access
foo != null && foo.bar != null && foo.bar.baz != null && foo.bar.baz[buzz]()
foo != null && foo.bar != null && foo.bar.baz != null && foo.bar.baz[buzz] != null && foo.bar.baz[buzz]()

// (partially) pre-optional chained
foo != null && foo?.bar != null && foo?.bar.baz != null && foo?.bar.baz[buzz] != null && foo?.bar.baz[buzz]()
foo != null && foo?.bar.baz != null && foo?.bar.baz[buzz]
foo != null && foo?.() != null && foo?.().bar
foo.bar != null && foo.bar?.() != null && foo.bar?.().baz

// chained members
foo != undefined && foo.bar
foo.bar != undefined && foo.bar.baz
foo != undefined && foo()
foo.bar != undefined && foo.bar()
foo != undefined && foo.bar != undefined && foo.bar.baz != undefined && foo.bar.baz.buzz
foo.bar != undefined && foo.bar.baz != undefined && foo.bar.baz.buzz

// case with a jump (i.e. a non-nullish prop)
foo != undefined && foo.bar != undefined && foo.bar.baz.buzz
foo.bar != undefined && foo.bar.baz.buzz

// case where for some reason there is a doubled up expression
foo != undefined && foo.bar != undefined && foo.bar.baz != undefined && foo.bar.baz != undefined && foo.bar.baz.buzz
foo.bar != undefined && foo.bar.baz != undefined && foo.bar.baz != undefined && foo.bar.baz.buzz

// chained members with element access
foo != undefined && foo[bar] != undefined && foo[bar].baz != undefined && foo[bar].baz.buzz

// case with a jump (i.e. a non-nullish prop)
foo != undefined && foo[bar].baz != undefined && foo[bar].baz.buzz

// chained calls
foo != undefined && foo.bar != undefined && foo.bar.baz != undefined && foo.bar.baz.buzz()
foo != undefined && foo.bar != undefined && foo.bar.baz != undefined && foo.bar.baz.buzz != undefined && foo.bar.baz.buzz()
foo.bar != undefined && foo.bar.baz != undefined && foo.bar.baz.buzz != undefined && foo.bar.baz.buzz()
