code: def c_to_n(self, var_c):
          
  
          if not (var_c.type == "c"):
              raise HGVSInvalidVariantError("Expected a cDNA (c.); got " + str(var_c))
          if self._validator:
              self._validator.validate(var_c)
          var_c.fill_ref(self.hdp)
          tm = self._fetch_AlignmentMapper(
              tx_ac=var_c.ac, alt_ac=var_c.ac, alt_aln_method="transcript")
          pos_n = tm.c_to_n(var_c.posedit.pos)
          if (isinstance(var_c.posedit.edit, hgvs.edit.NARefAlt)
                  or isinstance(var_c.posedit.edit, hgvs.edit.Dup)
                  or isinstance(var_c.posedit.edit, hgvs.edit.Inv)):
              edit_n = copy.deepcopy(var_c.posedit.edit)
          else:
              raise HGVSUnsupportedOperationError(
                  "Only NARefAlt/Dup/Inv types are currently implemented")
          var_n = hgvs.sequencevariant.SequenceVariant(
              ac=var_c.ac, type="n", posedit=hgvs.posedit.PosEdit(pos_n, edit_n))
          if self.replace_reference:
              self._replace_reference(var_n)
          if self.add_gene_symbol:
              self._update_gene_symbol(var_n, var_c.gene)
          return var_n
docs: Given a parsed c. variant, return a n. variant on the specified
          transcript using the specified alignment method (default is
          "transcript" indicating a self alignment).
  
          :param hgvs.sequencevariant.SequenceVariant var_c: a variant object
          :returns: variant object (:class:`hgvs.sequencevariant.SequenceVariant`)
          :raises HGVSInvalidVariantError: if var_c is not of type "c"