const annotation = null;

class Annotation {
final String message;
const Annotation(this.message);
}

class A<E> {}

class C {
m() => new A<@annotation @Annotation("test") C>();
}


const[KeywordToken] annotation[StringToken] =[SimpleToken] null[KeywordToken];[SimpleToken]

class[KeywordToken] Annotation[StringToken] {[BeginToken]
final[KeywordToken] String[StringToken] message[StringToken];[SimpleToken]
const[KeywordToken] Annotation[StringToken]([BeginToken]this[KeywordToken].[SimpleToken]message[StringToken])[SimpleToken];[SimpleToken]
}[SimpleToken]

class[KeywordToken] A[StringToken]<[BeginToken]E[StringToken]>[SimpleToken] {[BeginToken]}[SimpleToken]

class[KeywordToken] C[StringToken] {[BeginToken]
m[StringToken]([BeginToken])[SimpleToken] =>[SimpleToken] new[KeywordToken] A[StringToken]<[BeginToken]@[SimpleToken]annotation[StringToken] @[SimpleToken]Annotation[StringToken]([BeginToken]"test"[StringToken])[SimpleToken] C[StringToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]
