code: def ElementCreator(cls, json, **kwargs):
      
      if 'exception' not in kwargs:
          kwargs.update(exception=CreateElementFailed)
      href = kwargs.pop('href') if 'href' in kwargs else cls.href
      
      result = SMCRequest(
          href=href,
          json=json,
          **kwargs).create()
      
      element = cls(
          name=json.get('name'),
          type=cls.typeof,
          href=result.href)
      
      if result.user_session.in_atomic_block:
          result.user_session.transactions.append(element)
      return element
docs: Helper method for creating elements. If the created element type is
      a SubElement class type, provide href value as kwargs since that class
      type does not have a direct entry point. This is a lazy load that will
      provide only the meta for the element. Additional attribute access
      will load the full data.
  
      :param Element,SubElement cls: class for creating
      :param dict json: json payload
      :param SMCException exception: exception class to override
      :return: instance of type Element with meta
      :rtype: Element