@Nonnull
	private Project updateProject(Source src, Project prj, ResourceResolver resolver) {
		ResourceRef srcRef = src.getResourceRef();
		if (!prj.getMainSourceSet().getSources().contains(srcRef)) {
			ResourceResolver sibRes1 = new SiblingResourceResolver(srcRef, ResourceResolver.forResources());
			SourceSet ss = prj.getMainSourceSet();
			ss.addSource(srcRef);
			ss.addResources(src.tagReader.collectFiles(srcRef, sibRes1));
			ss.addDependencies(src.collectBinaryDependencies());
			ss.addCompileOptions(src.getCompileOptions());
			ss.addNativeOptions(src.getNativeOptions());
			prj.addRepositories(src.tagReader.collectRepositories());
			prj.addRuntimeOptions(src.getRuntimeOptions());
			src.tagReader.collectManifestOptions().forEach(kv -> {
				if (!kv.getKey().isEmpty()) {
					prj.getManifestAttributes().put(kv.getKey(), kv.getValue() != null ? kv.getValue() : "true");
				}
			});
			src.tagReader.collectAgentOptions().forEach(kv -> {
				if (!kv.getKey().isEmpty()) {
					prj.getManifestAttributes().put(kv.getKey(), kv.getValue() != null ? kv.getValue() : "true");
				}
			});
			String version = src.tagReader.getJavaVersion();
			if (version != null && JavaUtil.checkRequestedVersion(version)) {
				if (new JavaUtil.RequestedVersionComparator().compare(prj.getJavaVersion(), version) > 0) {
					prj.setJavaVersion(version);
				}
			}
			for (String srcDep : src.collectSourceDependencies()) {
				ResourceRef subRef = sibRes1.resolve(srcDep, true);
				prj.addSubProject(new ProjectBuilder(buildRefs).build(subRef));
			}
			ResourceResolver sibRes2 = new SiblingResourceResolver(srcRef, resolver);
			for (Source includedSource : src.tagReader.collectSources(srcRef, sibRes2)) {
				updateProject(includedSource, prj, resolver);
			}
		}
		return prj;
	}
Updates the given <code>Project</code> with all the information from the
<code>Source</code>. This includes the current source file with all other
source files it references, all resource files, anything to do with
dependencies, repositories and class paths as well as compile time and
runtime options.

@param prj      The <code>Project</code> to update
@param resolver The resolver to use for dependent (re)sources
@return The given <code>Project</code>
src/main/java/dev/jbang/source/ProjectBuilder.java