def METHOD_NAME(self, target, name, value):
    """
    Ensure the value evaluated is present (when required) and of the
    correct type.
    """
    if value is None:
        value = self.default(target)
    if self._missing_value(value):
        raise AttributeError(f"Missing required param: `{name}`")
    if self.is_required and not isinstance(value, self.type):
        raise TypeError(f"`{name}` must be a {self.type}, received {type(value)}")
    return True