question: public void checkIn ( ISchedulingRule rule , IProgressMonitor monitor ) throws CoreException { boolean success = false ; try { if ( workspace . isTreeLocked ( ) ) { String msg = Messages . resources_cannotModify ; throw new ResourceException ( IResourceStatus . WORKSPACE_LOCKED , null , msg , null ) ; } jobManager . beginRule ( rule , monitor ) ; lock . acquire ( ) ; incrementPreparedOperations ( ) ; success = true ; } finally { if ( ! success ) checkInFailed . set ( Boolean . TRUE ) ; } }
target:  An operation calls this method and it only returns when the operation is free to run.