main() { dynamic foo = new X(); var bar = foo.late; late(); bar(); new X().late(); new Y().late; late int foo; foo = 42; } late() { print("hello"); } class X { late() { print("hello"); } } class Y { int late = 42; } main[StringToken]([BeginToken])[SimpleToken] {[BeginToken] dynamic[KeywordToken] foo[StringToken] =[SimpleToken] new[KeywordToken] X[StringToken]([BeginToken])[SimpleToken];[SimpleToken] var[KeywordToken] bar[StringToken] =[SimpleToken] foo[StringToken].[SimpleToken]late[KeywordToken];[SimpleToken] late[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken] bar[StringToken]([BeginToken])[SimpleToken];[SimpleToken] new[KeywordToken] X[StringToken]([BeginToken])[SimpleToken].[SimpleToken]late[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken] new[KeywordToken] Y[StringToken]([BeginToken])[SimpleToken].[SimpleToken]late[KeywordToken];[SimpleToken] late[KeywordToken] int[StringToken] foo[StringToken];[SimpleToken] foo[StringToken] =[SimpleToken] 42[StringToken];[SimpleToken] }[SimpleToken] late[KeywordToken]([BeginToken])[SimpleToken] {[BeginToken] print[StringToken]([BeginToken]"hello"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken] class[KeywordToken] X[StringToken] {[BeginToken] late[KeywordToken]([BeginToken])[SimpleToken] {[BeginToken] print[StringToken]([BeginToken]"hello"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken] }[SimpleToken] class[KeywordToken] Y[StringToken] {[BeginToken] int[StringToken] late[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken] }[SimpleToken] [SimpleToken]