public Builder addShape(Shape shape) {
            // Members must be added by their containing shapes.
            if (!shape.isMemberShape()) {
                shapeMap.get().put(shape.getId(), shape);
                // Automatically add members of the shape.
                for (MemberShape memberShape : shape.members()) {
                    shapeMap.get().put(memberShape.getId(), memberShape);
                }
            }

            return this;
        }
Add a shape to the builder.

<p>{@link MemberShape} shapes are not added to the model directly.
They must be added by adding their containing shapes (e.g., to add a
list member, you must add the list shape that contains it). Any member
shape provided to any of the methods used to add shapes to the
model are ignored.

@param shape Shape to add.
@return Returns the builder.
smithy-model/src/main/java/software/amazon/smithy/model/Model.java