void prepare(){
  boolean unpacked=false;
  final File lockFilePath=new File(mContext.getFilesDir(),LOCK_FILE);
  Systrace.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE,"UnpackingJSBundleLoader.prepare");
synchronized (UnpackingJSBundleLoader.class) {
    try (FileLocker lock=FileLocker.lock(lockFilePath)){
      unpacked=prepareLocked();
    }
 catch (    IOException ioe) {
      throw new RuntimeException(ioe);
    }
 finally {
      Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE);
    }
  }
  if (unpacked && mOnUnpackedCallback != null) {
    mOnUnpackedCallback.run();
  }
}

void prepare ( ) { boolean unpacked = false ; final File lockFilePath = new File ( mContext . getFilesDir ( ) , LOCK_FILE ) ; Systrace . beginSection ( TRACE_TAG_REACT_JAVA_BRIDGE , "UnpackingJSBundleLoader.prepare" ) ; synchronized ( UnpackingJSBundleLoader . class ) { try ( FileLocker lock = FileLocker . lock ( lockFilePath ) ) { unpacked = prepareLocked ( ) ; } catch ( IOException ioe ) { throw new RuntimeException ( ioe ) ; } finally { Systrace . endSection ( TRACE_TAG_REACT_JAVA_BRIDGE ) ; } } if ( unpacked && mOnUnpackedCallback != null ) { mOnUnpackedCallback . run ( ) ; } }
checks if any file needs to be extracted again , and if so , clears the destination directory and unpacks everything again .
