code: @Override
      public File getBundleFile(Object caller, String relativeBundlePath) {
          final String mockBundlePrivate = "bundle-";
  
          if (caller == null)
              throw new NullPointerException("Caller to getBundleFile can not be null (path=" + relativeBundlePath + ")");
  
          String filePath = PathUtils.normalizeDescendentPath(relativeBundlePath);
  
          File bundleFile = null;
  
          // First, get Bundle used to load the caller
          Bundle b = FrameworkUtil.getBundle(caller.getClass());
          BundleContext bc = null;
          long id = 0;
  
          if (b != null) {
              // can return null
              bc = b.getBundleContext();
              id = b.getBundleId();
              if (bc != null) {
                  bundleFile = bc.getDataFile(filePath);
              } else if (tc.isDebugEnabled()) {
                  Tr.debug(tc, "BundleContext is null -- the bundle that loaded the class is in an invalid state", b);
              }
          }
  
          if (bundleFile == null) {
              // Unable to create a file in the bundle's private data area, potentially
              // because we aren't running in a framework at all, or the bundle couldn't 
              // be found for the file, or because the bundle was in an invalid state.
              String dir = mockBundlePrivate + id + "/" + filePath;
              bundleFile = new File(serverWorkarea.getNormalizedPath(), dir);
          }
  
          return bundleFile;
      }
docs: {@inheritDoc}