public static Struct extractStructFromNodeFlatBuffer(final FlatNode node) {
        final Struct.Builder builder = Struct.newBuilder();

        builder.putFields("NAME", Value.newBuilder().setStringValue(nullToEmpty(node.name())).build());
        builder.putFields("NAMESPACE", Value.newBuilder().setStringValue(nullToEmpty(node.namespace())).build());
        builder.putFields("CLUSTER_ID", Value.newBuilder().setStringValue(nullToEmpty(node.clusterId())).build());

        final Struct.Builder labels = Struct.newBuilder();
        for (int i = 0; i < node.labelsLength(); i++) {
            final KeyVal label = node.labels(i);
            labels.putFields(nullToEmpty(label.key()), Value.newBuilder().setStringValue(nullToEmpty(label.value())).build());
        }
        builder.putFields("LABELS", Value.newBuilder().setStructValue(labels).build());

        return builder.build();
    }
This method does the reverse conversion of https://github.com/istio/proxy/blob/938a9485a4286f0ce824b76df221a9bb6c8a6989/extensions/common/proto_util.cc#L112. It extracts the metadata from the
{@link FlatNode flat buffer node} so that we can reuse the logic of {@link FieldsHelper}.

@param node the flat buffer node where to extract the metadata
@return the metadata {@link Struct}
oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/als/mx/ServiceMetaInfoAdapter.java