def explanation(self, index, extra=None):
extraBits = <NUM_LIT:0> if extra is None else self.extraBits(index)<EOL>if not hasattr(self, '<STR_LIT>'):<EOL><INDENT>formatString = '<STR_LIT>'<EOL>lo = hi = value = self.value(index, extra)<EOL><DEDENT>elif extraBits==<NUM_LIT:0>:<EOL><INDENT>formatString = '<STR_LIT>'<EOL>lo, hi = self.span(index)<EOL>value = lo<EOL><DEDENT>else:<EOL><INDENT>formatString = '<STR_LIT>'<EOL>lo, hi = self.span(index)<EOL>value = lo+extra<EOL><DEDENT>return formatString.format(<EOL>self.description and self.description+'<STR_LIT>',<EOL>'<STR_LIT:x>'*extraBits,<EOL>self.bitPattern(index),<EOL>lo, hi,<EOL>extra,<EOL>value,<EOL>)<EOL>
Expanded version of Code.explanation supporting extra bits.
        If you don't supply extra, it is not mentioned.