code: def test_final_classmethod(self):
      class ClassWithClassMethod(with_metaclass(FinalMeta, object)):
          count = 0
  
          @final
          @classmethod
          def f(cls):
              cls.count += 1
              return cls.count
  
      with self.assertRaises(TypeError):
  
          class ClassOverridingClassMethod(ClassWithClassMethod):
              @classmethod
              def f(cls):
                  return "Oh Noes!"
  
      with self.assertRaises(TypeError):
          ClassWithClassMethod.f = lambda cls: 0
  
      self.assertEqual(ClassWithClassMethod.f(), 1)
      self.assertEqual(ClassWithClassMethod.f(), 2)
      self.assertEqual(ClassWithClassMethod.f(), 3)
  
      instance = ClassWithClassMethod()
  
      with self.assertRaises(TypeError):
          instance.f = lambda cls: 0
  
      self.assertEqual(ClassWithClassMethod.f(), 4)
      self.assertEqual(ClassWithClassMethod.f(), 5)
      self.assertEqual(ClassWithClassMethod.f(), 6)
  
imports: from abc import abstractmethod, ABCMeta
  from unittest import TestCase
  from six import with_metaclass
  from catalyst.utils.final import FinalMeta, final
  from catalyst.utils.metautils import compose_types
label_desc: Use image node_id 6 for calling the FinalABCMetaTestCase obj's underlying member method code with example usage: obj.test_final_classmethod() and returns: cls, str