code: def match_type(expected_type, actual_type):
          
          if expected_type == None:
              return True
          if actual_type == None:
              raise Exception("Actual type cannot be null")
  
          if isinstance(expected_type, type):
              return issubclass(actual_type, expected_type)
          
          if isinstance(expected_type, str):
              return TypeMatcher.match_type_by_name(expected_type, actual_type)
  
          return False
docs: Matches expected type to an actual type.
          The types can be specified as types, type names or [[TypeCode]].
  
          :param expected_type: an expected type to match.
  
          :param actual_type: an actual type to match.
  
          :return: true if types are matching and false if they don't.