code: def decompile(self, data, ttFont):
      axisTags = [axis.axisTag for axis in ttFont["fvar"].axes]
      glyphs = ttFont.getGlyphOrder()
      sstruct.unpack(GVAR_HEADER_FORMAT, data[0:GVAR_HEADER_SIZE], self)
      assert len(glyphs) == self.glyphCount
      assert len(axisTags) == self.axisCount
      offsets = self.decompileOffsets_(
          data[GVAR_HEADER_SIZE:],
          tableFormat=(self.flags & 1),
          glyphCount=self.glyphCount,
      )
      sharedCoords = tv.decompileSharedTuples(
          axisTags,
          self.sharedTupleCount,
          data,
          self.offsetToSharedTuples,
      )
      variations = {}
      offsetToData = self.offsetToGlyphVariationData
      glyf = ttFont["glyf"]
  
      def decompileVarGlyph(glyphName, gid):
          gvarData = data[
              offsetToData
              + offsets[gid] : offsetToData
              + offsets[gid + 1]
          ]
          if not gvarData:
              return []
          glyph = glyf[glyphName]
          numPointsInGlyph = self.getNumPoints_(glyph)
          return decompileGlyph_(
              numPointsInGlyph, sharedCoords, axisTags, gvarData
          )
  
      for gid in range(self.glyphCount):
          glyphName = glyphs[gid]
          variations[glyphName] = partial(
              decompileVarGlyph, glyphName, gid
          )
      self.variations = _LazyDict(variations)
  
      if ttFont.lazy is False:  # Be lazy for None and True
          self.ensureDecompiled()
  
imports: from collections import UserDict, deque
  from functools import partial
  from fontTools.misc import sstruct
  from fontTools.misc.textTools import safeEval
  from .None import DefaultTable
  import array
  import itertools
  import logging
  import struct
  import sys
  import fontTools.ttLib.tables.TupleVariation
label_desc: Use image node_id 4 for calling the table__g_v_a_r obj's underlying member method code with example usage: obj.decompile(data, ttFont) and returns: decompileGlyph_, list