public function addProblem(
        $definitionSource,
        $problemType,
        $problemMessage)
    {
        if (!is_string($definitionSource) || !is_string($problemMessage)) {
            throw new LazyJsonMapperException('The definitionSource and problemMessage parameters must be strings.');
        }
        if ($problemType !== 'bad_definitions' && $problemType !== 'missing_definitions') {
            throw new LazyJsonMapperException('The problemType parameter must be either "bad_definitions" or "missing_definitions".');
        }

        if (!isset($this->{$problemType}[$definitionSource])) {
            $this->{$problemType}[$definitionSource] = [];
        }

        $this->{$problemType}[$definitionSource][] = $problemMessage;
    }