@Nonnull
	@Override
	public List<String> getOuterClassBreadcrumbs() {
		if (breadcrumbs == null) {
			String currentOuter = getOuterClassName();
			if (currentOuter == null)
				return breadcrumbs = Collections.emptyList();

			int maxOuterDepth = 10;
			List<String> list = new ArrayList<>();
			int counter = 0;
			while (currentOuter != null) {
				if (++counter > maxOuterDepth) {
					list.clear(); // assuming some obfuscator is at work, so breadcrumbs might be invalid.
					break;
				}
				list.addFirst(currentOuter);
				String targetOuter = currentOuter;
				currentOuter = innerClasses.stream()
						.filter(i -> i.getInnerClassName().equals(targetOuter) && i.getOuterClassName() != null)
						.map(InnerClassInfo::getOuterClassName)
						.findFirst().orElse(null);
			}
			breadcrumbs = Collections.unmodifiableList(list);
		}
		return breadcrumbs;
	}
Basic implementation of class info.

@author Matt Coley
@see BasicJvmClassInfo
@see BasicAndroidClassInfo
recaf-core/src/main/java/software/coley/recaf/info/BasicClassInfo.java