@Nonnull
	protected Result<Printer> memberPrinter(@Nonnull ClassMemberPathNode path) {
		ClassPathNode owner = path.getParent();
		if (owner == null)
			return Result.err(Error.of("Dangling member", null));

		ClassMember member = path.getValue();
		return classPrinter(owner).flatMap((printer) -> {
			Printer memberPrinter = null;

			if (member.isMethod()) {
				memberPrinter = printer.method(member.getName(), member.getDescriptor());
			} else if (member.isField()) {
				memberPrinter = printer.field(member.getName(), member.getDescriptor());
			}

			if (memberPrinter == null) {
				return Result.err(Error.of("Failed to find member", null));
			} else {
				return Result.ok(memberPrinter);
			}
		});
	}
Common pipeline implementation details for all class types.

@param <C>
		Class type which will be assembled.
@param <R>
		Compile return value for JASM {@link Compiler}.
@param <I>
		Class intermediate representation type.

@author Justus Garbe
recaf-core/src/main/java/software/coley/recaf/services/assembler/AbstractAssemblerPipeline.java