package Ġat . y awk . jav ab rowser . generator . byte code Ċ Ċ import Ġorg . testng . Assert Ċ import Ġorg . testng . annotations . Test Ċ Ċ class ĠSignature Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` method Ġsignature Ġ 1 `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprinter Ġ= ĠByte code Printer (:: test Hash Binding ) ĊĠĠĠĠĠĠĠ Ġprinter . print Method Signature ("< E : Ljava / lang / Exception ; >( Ljava / util / List < TE ; >; I ) Ljava / util / List < Ljava / lang / String ; >; ^ TE ; ^ Ljava / lang / Throwable ;", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccess Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" test ") ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( printer . finish String (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< E Ġextends Ġjava . lang . Exception > Ġjava . util . List < java . lang . String > Ġtest ( java . util . List < E >, Ġint ) Ġthrows ĠE , Ġjava . lang . Throwable ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` method Ġsignature Ġ 2 `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprinter Ġ= ĠByte code Printer (:: test Hash Binding ) ĊĠĠĠĠĠĠĠ Ġprinter . print Method Signature ("< E : Ljava / lang / Exception ; >() V ^ TE ;", Ġaccess Ġ= Ġ 0 , Ġname Ġ= Ġ" test ") ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( printer . finish String (), Ġ"< E Ġextends Ġjava . lang . Exception > Ġvoid Ġtest () Ġthrows ĠE ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` method Ġsignature Ġ 3 `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprinter Ġ= ĠByte code Printer (:: test Hash Binding ) ĊĠĠĠĠĠĠĠ Ġprinter . print Method Signature ("< T : Ljava / lang / Object ; >() V ", Ġaccess Ġ= Ġ 0 , Ġname Ġ= Ġ" test ") ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( printer . finish String (), Ġ"< T > Ġvoid Ġtest () ") ĊĠĠĠ Ġ} Ċ }