private boolean resolveInternally(List<BundleRequirement> requirements)
			throws GhidraBundleException {
		if (requirements.isEmpty()) {
			return true;
		}

		List<BundleCapability> capabilities = getAllCapabilities();
		Iterator<BundleRequirement> requirementIterator = requirements.iterator();
		boolean anyMissing = false;
		while (requirementIterator.hasNext()) {
			BundleRequirement requirement = requirementIterator.next();
			if (capabilities.stream().anyMatch(requirement::matches)) {
				requirementIterator.remove();
			}
			else {
				anyMissing = true;
			}
		}
		return !anyMissing;
	}
visit discrepancies between java source and corresponding class files.

<pre>
walk resources to find:
 - source files that are newer than their corresponding binary
		reports (source file, list of corresponding binaries)
	- source files with no corresponding binary
		reports (source file, empty list)
 - binary files with no corresponding source
 	reports (null, list of binary files)
 
  for a source file source_root/com/blah/Blah.java
  
  all of the following binaries would correspond:
  	binary_root/com/blah/Blah.class
  	binary_root/com/blah/Blah$Inner.class
  	binary_root/com/blah/Blah$12.class
  	binary_root/com/blah/Blah$12.class
  	binary_root/com/blah/Blah$Inner$Innerer.class
  	...
</pre>
@param discrepancy the discrepancy callback
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/osgi/GhidraSourceBundle.java