class_docstr: Optional base class for fixers.
  
  The subclass name must be FixFooBar where FooBar is the result of
  removing underscores and capitalizing the words of the fix name.
  For example, the class name for a fixer named 'has_key' should be
  FixHasKey.
class_docstr_tok: ["Optional","base","class","for","fixers",".","The","subclass","name","must","be","FixFooBar","where","FooBar","is","the","result","of","removing","underscores","and","capitalizing","the","words","of","the","fix","name",".","For","example",",","the","class","name","for","a","fixer","named","'has_key","'","should","be","FixHasKey","."]
code: def log_message(self, message):
      if self.first_log:
          self.first_log = False
          self.log.append("### In file %s ###" % self.filename)
      self.log.append(message)
  
imports: import itertools
  from .patcomp import PatternCompiler
  from .None import pygram
  from .fixer_util import does_tree_import
label_desc: Use image node_id 7 for calling the BaseFix obj's underlying member method code with example usage: obj.log_message(message) without return types