Describir: Refactoring Java Programs for Flexible Locking