docs: @SuppressWarnings("checkstyle:innerassignment")
      public static IClasspathEntry[][] readFileEntriesWithException(String projectName, URL projectRootAbsoluteFullPath,
              Map<IPath, UnknownXmlElements> unknownElements)
              throws CoreException, IOException, ClasspathEntry.AssertionFailedException, URISyntaxException {
  
          final URL rscFile = new URL(projectRootAbsoluteFullPath.toExternalForm().concat(JavaProject.CLASSPATH_FILENAME));
          byte[] bytes;
  
          // when a project is imported, we get a first delta for the addition of the .project, but the .classpath is not accessible
          // so default to using java.io.File
          // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=96258
          final URI location;
          try {
              location = rscFile.toURI();
          } catch (URISyntaxException e) {
              throw e;
          }
          if (location == null) {
              throw new IOException("Cannot obtain a location URI for " + rscFile); //$NON-NLS-1$
          }
          final File file = Util.toLocalFile(location, null/* no progress monitor available */);
          if (file == null) {
              throw new IOException("Unable to fetch file from " + location); //$NON-NLS-1$
          }
  
          try {
              bytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(file);
          } catch (IOException e) {
              throw e;
          }
  
          if (hasUTF8BOM(bytes)) {
              // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=240034
              final int length = bytes.length - IContentDescription.BOM_UTF_8.length;
              System.arraycopy(bytes, IContentDescription.BOM_UTF_8.length, bytes = new byte[length], 0, length);
          }
          String xmlClasspath;
          try {
              // .classpath always encoded with UTF-8
              xmlClasspath = new String(bytes, org.eclipse.jdt.internal.compiler.util.Util.UTF_8);
          } catch (UnsupportedEncodingException e) {
              Util.log(e, "Could not read .classpath with UTF-8 encoding"); //$NON-NLS-1$
              // fallback to default
              xmlClasspath = new String(bytes);
          }
          return decodeClasspath(projectName, Path.fromPortableString(projectRootAbsoluteFullPath.getPath()), xmlClasspath, unknownElements);
      }