code: def create_message(self, rootdict, path, error, add_comments):
          
  
          if not path:
              # error applies to the root type
              d = rootdict
              key = d["__type__"]
          elif isinstance(path[-1], int):
              # the error is on an object in a list
              d = utils.findkey(rootdict, *path)
              key = d["__type__"]
          else:
              key = path[-1]
              d = utils.findkey(rootdict, *path[:-1])
  
          error_message = "ERROR: Invalid value in {}".format(key.upper())
  
          # add a comment to the dict structure
  
          if add_comments:
              if "__comments__" not in d:
                  d["__comments__"] = OrderedDict()
  
              d["__comments__"][key] = "# {}".format(error_message)
  
          error_message = {"error": error.message,
                           "message": error_message}
  
          # add in details of the error line, when Mapfile was parsed to
          # include position details
  
          if "__position__" in d:
              if not path:
                  # position for the root object is stored in the root of the dict
                  pd = d["__position__"]
              else:
                  pd = d["__position__"][key]
  
              error_message["line"] = pd.get("line")
              error_message["column"] = pd.get("column")
  
          return error_message
docs: Add a validation comment to the dictionary
          path is the path to the error object, it can be empty if the error is in the root object
          http://python-jsonschema.readthedocs.io/en/latest/errors/#jsonschema.exceptions.ValidationError.absolute_path
          It can also reference an object in a list e.g. [u'layers', 0]
  
          Unfortunately it is not currently possible to get the name of the failing property from the
          JSONSchema error object, even though it is in the error message.
          See https://github.com/Julian/jsonschema/issues/119