Text this: Permission-Based Separation Logic for Multithreaded Java Programs