docs: private Map<IPath, IPath> createOutputLocations() throws CoreException {
  
          Map<IPath, IPath> srcToOutputMap = new HashMap<>();
  
          // get the default location => relative to wsp
          IPath defaultOutputLocation = ResourceUtils.relativeToAbsolute(javaProject.getOutputLocation());
          IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
          // path to the project without project name itself
          IClasspathEntry entries[] = javaProject.getResolvedClasspath(true);
          for (int i = 0; i < entries.length; i++) {
              IClasspathEntry classpathEntry = entries[i];
              if (classpathEntry.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
                  IPath outputLocation = ResourceUtils.getOutputLocation(classpathEntry, defaultOutputLocation);
                  if(outputLocation == null) {
                      continue;
                  }
                  IResource cpeResource = root.findMember(classpathEntry.getPath());
                  // patch from 2891041: do not analyze derived "source" folders
                  // because they probably contain auto-generated classes
                  if (cpeResource != null && cpeResource.isDerived()) {
                      continue;
                  }
                  // TODO not clear if it is absolute in workspace or in global FS
                  IPath srcLocation = ResourceUtils.relativeToAbsolute(classpathEntry.getPath());
                  if(srcLocation != null) {
                      srcToOutputMap.put(srcLocation, outputLocation);
                  }
              }
          }
  
          return srcToOutputMap;
      }