foo?.["bar"];
foo?.bar;

foo.bar?.foo;
foo?.bar.foo;
foo?.bar?.foo;
foo.bar?.["foo"];
foo?.bar["foo"];
foo?.bar?.["foo"];
foo["bar"]?.foo;
foo?.["bar"].foo;
foo?.["bar"]?.foo;

0.?.toString();
0.5?.toString();
1.000?.toString();

(a?.b).c;
(a ? b : c)?.d;
(a?.b)()
