void (String dirty, @Untainted String clean) { sink(<warning descr="Unknown string is used as safe parameter">next(dirty)</warning>); //warn sink(next(clean)); sink(<warning descr="Unknown string is used as safe parameter">nextPublic(dirty)</warning>); //warn sink(<warning descr="Unknown string is used as safe parameter">nextPublic(clean)</warning>); //warn (public) sink(alwaysClean(dirty)); sink(alwaysClean(clean)); sink(<warning descr="Unknown string is used as safe parameter">staticNext(dirty)</warning>); //warn sink(staticNext(clean)); sink(next(next(clean))); sink(next(next(next(next(next(clean)))))); sink(<warning descr="Unknown string is used as safe parameter">next(next(next(next(next(dirty)))))</warning>); //warn sink(alwaysClean(next(next(next(next(clean)))))); sink(alwaysClean(next(next(next(next(dirty)))))); sink(next(next(next(next(alwaysClean(clean)))))); sink(next(next(next(next(alwaysClean(dirty)))))); sink(next(alwaysClean(clean))); sink(next((alwaysClean(dirty)))); String alwaysClean = alwaysClean(next(next(next(clean)))); sink(alwaysClean); String alwaysClean2 = alwaysClean(next(next(next(dirty)))); sink(alwaysClean2); }