@Lock
Введем аннотацию @Lock(name=<lock_name>, terminated=[true,false], acquireBefore=<array_of_names>, acquireAfter=<array_of_names>)
Например,
@Lock(name = ”user", acquireBefore = "account", acquireAfter = {"agent", "cluster"})
Необходимо проверять заданную иерархию блокировок в процессе работы программы (это не связано с текущей функциональностью Dl-Check). Так же, если блокировка помечена как terminated, то после ее взятие не должны браться другие блокировки.
@GuardedBy
Необходимо проверять правила доступа к полям/методам, заданные аннотацией @GuardedBy. Дополнительно научим понимать имя блокировки, которое задается аннотацией @Lock.