<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _get_example_values(self, route: str, annotation: ResourceAnnotation) -> Dict[str, Any]: """Gets example values for all properties in the annotation's schema. :param route: The route to get example values for. :type route: werkzeug.routing.Rule for a flask api. :param annotation: Schema annotation for the method to be requested. :type annotation: doctor.resource.ResourceAnnotation :retruns: A dict containing property names as keys and example values as values. """

        defined_values = self.defined_example_values.get(
            (annotation.http_method.lower(), str(route)))
        if defined_values and not defined_values['update']:
            return defined_values['values']

        # If we defined a req_obj_type for the logic, use that type's
        # example values instead of the annotated parameters.
        if annotation.logic._doctor_req_obj_type:
            values = annotation.logic._doctor_req_obj_type.get_example()
        else:
            values = {
                k: v.annotation.get_example()
                for k, v in annotation.annotated_parameters.items()
            }
        if defined_values:
            values.update(defined_values['values'])

        # If this is a GET route, we need to json dumps any parameters that
        # are lists or dicts.  Otherwise we'll get a 400 error for those params
        if annotation.http_method == 'GET':
            for k, v in values.items():
                if isinstance(v, (list, dict)):
                    values[k] = json.dumps(v)
        return values