docs: def get_string(self):
          """
          Returns a string from the Diff resutl.
          Depending on the method, either the string will
          be generated directly from the PDA using the state
          removal method, or the PDA will be first translated to
          a CFG and then a string will be generated from the CFG
          Args:
               None
          Returns:
              A string from the Diff
          """
          return_string = None
          if not self.mmc:
              return ""
          method = 'PDASTRING'
          if method == 'PDASTRING':
              stringgen = PdaString()
              print '* Reduce PDA using DFA BFS (remove unreachable states):'
              newpda = self.mmc.s
              handle = IntersectionHandling()
              newpda = handle.get(newpda, self.mmc.accepted)
              reduce_b = ReducePDA()
              newpda = reduce_b.get(newpda)
              #simply = SimplifyStateIDs()
              #newpda, biggestid, newaccepted = simply.get(
              #    newpda, self.mmc.accepted)
              print "- Total PDA states after reduction are " + repr(len(newpda))
              return_string = stringgen.init(newpda, self.mmc.accepted)
              if return_string is not None:
                  return_string = return_string[0]
          elif method == 'PDACFGSTRING':
  
              optimized = 1
              dt1 = datetime.datetime.fromtimestamp(time.time())
              print '* Initiating PDA simplification'
              print ' - Total PDA states are ' + repr(len(self.mmc.s))
              handle = IntersectionHandling()
              newpda = handle.get(self.mmc.s, self.mmc.accepted)
              newpda = self.mmc.s
              simply = SimplifyStateIDs()
              newpda, biggestid, newaccepted = simply.get(
                  newpda, self.mmc.accepted)
              print ' - Total PDA states after id clearence are ' + repr(len(newpda))
              replace = ReadReplace(newpda, biggestid)
              newpda = replace.replace_read()
              print ' - Total PDA states after read elimination are ' + repr(len(newpda))
              maxstate = replace.nextstate() - 1
              print '* Reduce PDA using DFA BFS (remove unreachable states):'
              reduce_b = ReducePDA()
              newpda = reduce_b.get(newpda)
              print "- Total PDA states after reduction are " + repr(len(newpda))
  
              dt2 = datetime.datetime.fromtimestamp(time.time())
              rdelta = dateutil.relativedelta.relativedelta(dt2, dt1)
              print "* PDA was simplyfied in %d days, %d hours, %d minutes and %d seconds" % (
                  rdelta.days, rdelta.hours, rdelta.minutes, rdelta.seconds)
              dt1 = datetime.datetime.fromtimestamp(time.time())
              print '* Initiating CNF from PDA generation'
              cnfgenerator = PdaCnf(newpda, newaccepted)
              dt2 = datetime.datetime.fromtimestamp(time.time())
              rdelta = dateutil.relativedelta.relativedelta(dt2, dt1)
              print "* CNF was generated in %d days, %d hours, %d minutes and %d seconds" % (
                  rdelta.days, rdelta.hours, rdelta.minutes, rdelta.seconds)
              dt1 = datetime.datetime.fromtimestamp(time.time())
              print '* Initiating string from CFG generation'
              grammar = cnfgenerator.get_rules(optimized)
              print ' - Total grammar rules are ' + repr(len(grammar))
              gen = CFGGenerator(CNFGenerator(grammar),
                                 optimized=optimized,
                                 splitstring=0,
                                 maxstate=maxstate)
              return_string = gen.generate()
              dt2 = datetime.datetime.fromtimestamp(time.time())
              rdelta = dateutil.relativedelta.relativedelta(dt2, dt1)
              print "* A string was generated in %d days, %d hours, %d minutes and %d seconds" % (
                  rdelta.days, rdelta.hours, rdelta.minutes, rdelta.seconds)
  
              print return_string
          else:
              return_string = None
          return return_string