private void appendMethod(@Nonnull Printer out, @Nonnull MethodMember method) {
		if (classInfo.hasAnnotationModifier()) {
			MethodPrinter constructorPrinter = new MethodPrinter(format, classInfo, method) {
				@Override
				protected void buildDeclarationFlags(@Nonnull StringBuilder sb) {
					// no-op since all methods are 'public abstract' per interface contract (with additional restrictions)
				}

				@Override
				protected void appendAbstractBody(@Nonnull StringBuilder sb) {
					AnnotationElement annotationDefault = method.getAnnotationDefault();
					if (annotationDefault != null) {
						sb.append(" default ").append(PrintUtils.elementToString(format, annotationDefault)).append(";");
					} else {
						sb.append(";");
					}
				}
			};
			out.appendMultiLine(constructorPrinter.print());
		} else if (classInfo.hasInterfaceModifier()) {
			MethodPrinter constructorPrinter = new MethodPrinter(format, classInfo, method) {
				@Override
				protected void buildDeclarationFlags(@Nonnull StringBuilder sb) {
					Collection<AccessFlag> flags = AccessFlag.getApplicableFlags(AccessFlag.Type.METHOD, method.getAccess());
					flags = AccessFlag.sort(AccessFlag.Type.METHOD, flags);
					flags.remove(AccessFlag.ACC_PUBLIC);
					flags.remove(AccessFlag.ACC_ABSTRACT);
					boolean isAbstract = AccessFlag.isAbstract(method.getAccess());
					if (!flags.isEmpty()) {
						String flagsStr = AccessFlag.toString(flags);
						if (!isAbstract)
							sb.append("default ");
						sb.append(flagsStr).append(' ');
					} else if (!isAbstract)
						sb.append("default ");
				}
			};
			out.appendMultiLine(constructorPrinter.print());
		} else {
			out.appendMultiLine(new MethodPrinter(format, classInfo, method).print());
		}
	}
Appends the given method.

@param out
		Printer to write to.
@param method
		Regular method.
recaf-core/src/main/java/software/coley/recaf/services/decompile/fallback/print/ClassPrinter.java