code: def update_metadata_from(self, datapoint: CodeGraph2Seq) -> None:
      graph_nodes = [l.lower() for l in datapoint["node_labels"]]
      self.__gnn_model.update_metadata_from(
          GraphData(
              node_information=graph_nodes,
              edges=datapoint["edges"],
              reference_nodes={
                  "backbone_nodes": datapoint["backbone_sequence"]
              },
          )
      )
  
      self.__decoder_model.update_metadata_from(
          DecoderData(
              input_elements=[
                  graph_nodes[k] for k in datapoint["backbone_sequence"]
              ],
              target_data=datapoint["method_name"],
          ),
      )
  
imports: from typing_extensions import Final, TypedDict
  import torch
  from typing import Any, Dict, List, NamedTuple, Optional, Tuple, Union
  from ptgnn.baseneuralmodel import AbstractNeuralModel, ModuleWithMetrics
  from ptgnn.baseneuralmodel.utils.data import enforce_not_None
  from ptgnn.neuralmodels.gnn.graphneuralnetwork import GraphNeuralNetwork, GraphNeuralNetworkModel
  from ptgnn.neuralmodels.gnn.structs import GnnOutput, GraphData, TensorizedGraphData
  from ptgnn.neuralmodels.reduceops import AbstractVarSizedElementReduce, ElementsToSummaryRepresentationInput, MultiheadSelfAttentionVarSizedElementReduce, SimpleVarSizedElementReduce
  from ptgnn.neuralmodels.sequence.grucopydecoder import DecoderData, GruCopyingDecoder, GruCopyingDecoderModel, TokenizedOutput
label_desc: Use image node_id 2 for calling the Graph2Seq obj's underlying member method code with example usage: obj.update_metadata_from(datapoint) without return types