code: def compile(self, axisTags, sharedCoordIndices={}, pointData=None):
      assert set(self.axes.keys()) <= set(axisTags), (
          "Unknown axis tag found.",
          self.axes.keys(),
          axisTags,
      )
  
      tupleData = []
      auxData = []
  
      if pointData is None:
          usedPoints = self.getUsedPoints()
          if usedPoints is None:  # Nothing to encode
              return b"", b""
          pointData = self.compilePoints(usedPoints)
  
      coord = self.compileCoord(axisTags)
      flags = sharedCoordIndices.get(coord)
      if flags is None:
          flags = EMBEDDED_PEAK_TUPLE
          tupleData.append(coord)
  
      intermediateCoord = self.compileIntermediateCoord(axisTags)
      if intermediateCoord is not None:
          flags |= INTERMEDIATE_REGION
          tupleData.append(intermediateCoord)
  
      # pointData of b'' implies "use shared points".
      if pointData:
          flags |= PRIVATE_POINT_NUMBERS
          auxData.append(pointData)
  
      auxData.append(self.compileDeltas())
      auxData = b"".join(auxData)
  
      tupleData.insert(0, struct.pack(">HH", len(auxData), flags))
      return b"".join(tupleData), auxData
  
imports: from fontTools.misc.fixedTools import fixedToFloat, floatToFixed, floatToFixedToStr, strToFixedToFloat, otRound
  from fontTools.misc.textTools import safeEval
  import array
  from collections import Counter, defaultdict
  import io
  import logging
  import struct
  import sys
label_desc: Use image node_id 8 for calling the TupleVariation obj's underlying member method code with example usage: obj.compile(axisTags, sharedCoordIndices, pointData) and returns: bytes,  auxData, bytes,  bytes