void (FunctionDescriptor functionDescriptor, Printer printer) { AbstractContractProvider contractProvider = functionDescriptor.getUserData(ContractProviderKey.INSTANCE); if (contractProvider == null) return; ContractDescription contractDescription = contractProvider.getContractDescription(); if (contractDescription == null || contractDescription.getEffects().isEmpty()) return; printer.println(); printer.pushIndent(); for (EffectDeclaration effect : contractDescription.getEffects()) { StringBuilder sb = new StringBuilder(); ContractDescriptionRenderer renderer = new ContractDescriptionRenderer(sb); effect.accept(renderer, Unit.INSTANCE); printer.println(sb.toString()); } printer.popIndent(); }