code: def custom_classfunc_rule(self, opname, token, customize, next_token):
          
          args_pos, args_kw = self.get_pos_kw(token)
  
          # Additional exprs for * and ** args:
          #  0 if neither
          #  1 for CALL_FUNCTION_VAR or CALL_FUNCTION_KW
          #  2 for * and ** args (CALL_FUNCTION_VAR_KW).
          # Yes, this computation based on instruction name is a little bit hoaky.
          nak = ( len(opname)-len('CALL_FUNCTION') ) // 3
  
          token.kind = self.call_fn_name(token)
          uniq_param = args_kw + args_pos
  
          # Note: 3.5+ have subclassed this method; so we don't handle
          # 'CALL_FUNCTION_VAR' or 'CALL_FUNCTION_EX' here.
          rule = ('call ::= expr ' +
                      ('pos_arg ' * args_pos) +
                      ('kwarg ' * args_kw) +
                      'expr ' * nak + token.kind)
  
          self.add_unique_rule(rule, token.kind, uniq_param, customize)
  
          if 'LOAD_BUILD_CLASS' in self.seen_ops:
              if (next_token == 'CALL_FUNCTION' and next_token.attr == 1
                  and args_pos > 1):
                  rule = ('classdefdeco2 ::= LOAD_BUILD_CLASS mkfunc %s%s_%d'
                          %  (('expr ' * (args_pos-1)), opname, args_pos))
                  self.add_unique_rule(rule, token.kind, uniq_param, customize)
docs: call ::= expr {expr}^n CALL_FUNCTION_n
          call ::= expr {expr}^n CALL_FUNCTION_VAR_n
          call ::= expr {expr}^n CALL_FUNCTION_VAR_KW_n
          call ::= expr {expr}^n CALL_FUNCTION_KW_n
  
          classdefdeco2 ::= LOAD_BUILD_CLASS mkfunc {expr}^n-1 CALL_FUNCTION_n