static void generateOperationListing(
            DocGenerationContext context,
            DocWriter writer,
            EntityShape shape,
            List<OperationShape> operations
    ) {
        writer.pushState(new BoundOperationsSection(context, shape, operations));

        if (operations.isEmpty()) {
            writer.popState();
            return;
        }

        var parentLinkId = context.symbolProvider()
                .toSymbol(shape)
                .expectProperty(DocSymbolProvider.LINK_ID_PROPERTY, String.class);
        writer.openHeading("Operations", parentLinkId + "-operations");
        writer.openList(ListType.UNORDERED);

        for (var operation : operations) {
            writer.pushState(new BoundOperationSection(context, shape, operation));
            writeListingElement(context, writer, operation);
            writer.popState();
        }

        writer.closeList(ListType.UNORDERED);
        writer.closeHeading();
        writer.popState();
    }
Provides common generation methods for services and resources.
smithy-docgen/src/main/java/software/amazon/smithy/docgen/generators/GeneratorUtils.java