Determine whether json conforms with the JSG specification

        :param json: JSON string, URI to JSON or file name with JSON
        :param name: Test name for ValidationResult -- printed in dx if present
        :param verbose: True means print the response
        :return: pass/fail + fail reason

def conforms(self, json: str, name: str = "", verbose: bool=False) -> ValidationResult:
        """ Determine whether json conforms with the JSG specification

        :param json: JSON string, URI to JSON or file name with JSON
        :param name: Test name for ValidationResult -- printed in dx if present
        :param verbose: True means print the response
        :return: pass/fail + fail reason
        """
        json = self._to_string(json) if not self.is_json(json) else json
        try:
            self.json_obj = loads(json, self.module)
        except ValueError as v:
            return ValidationResult(False, str(v), name, None)
        logfile = StringIO()
        logger = Logger(cast(TextIO, logfile))      # cast because of bug in ide
        if not is_valid(self.json_obj, logger):
            return ValidationResult(False, logfile.getvalue().strip('\n'), name, None)
        return ValidationResult(True, "", name, type(self.json_obj).__name__)