private synchronized void expandIfNeeded() { if (expanded) { return; } Preconditions.checkState(expandFolder != null, "Directory for jar expansion is not defined."); try { BundleJarUtil.unpackProgramJar(programJarLocation, expandFolder); expanded = true; } catch (IOException e) { throw Throwables.propagate(e); } } }