<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def free(self, request_key):
 """ Works together with 'mark_as_forwarded' and 'mark_as_executed' methods. It makes request to be removed if all replicas request was forwarded to freed it and if request executor marked it as executed. """

        state = self.get(request_key)
        if not state:
            return
        state.forwardedTo -= 1
        self._clean(state)