public static TraceFile fromNode(Node value) {
        ObjectNode node = value.expectObjectNode();
        Builder builder = builder()
                .smithyTrace(node.expectStringMember(SMITHY_TRACE_TEXT).getValue())
                .metadata(TraceMetadata.fromNode(node.expectObjectMember(METADATA_TEXT)));

        //parse shapes
        Map<StringNode, Node> shapeMap = node.expectObjectMember(SHAPES_TEXT).getMembers();
        for (Map.Entry<StringNode, Node> entry : shapeMap.entrySet()) {
            for (Node linkNode : (entry.getValue().expectArrayNode()).getElements()) {
                builder.addShapeLink(entry.getKey().getValue(), ShapeLink.fromNode(linkNode));
            }
        }

        //parse definitions
        if (node.containsMember(DEFINITIONS_TEXT)) {
            builder.definitions(ArtifactDefinitions.fromNode(node.expectObjectMember(DEFINITIONS_TEXT)));
        }

        return builder.build();
    }
Converts ObjectNode into TraceFile.

@param value an ObjectNode that represents the entire trace file.
@return TraceFile produced from an ObjectNode.
smithy-codegen-core/src/main/java/software/amazon/smithy/codegen/core/trace/TraceFile.java