<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def findall_operations(self, predicate: Callable[[ops.Operation], bool] ) -> Iterable[Tuple[int, ops.Operation]]: """Find the locations of all operations that satisfy a given condition. This returns an iterator of (index, operation) tuples where each operation satisfies op_cond(operation) is truthy. The indices are in order of the moments and then order of the ops within that moment. Args: predicate: A method that takes an Operation and returns a Truthy value indicating the operation meets the find condition. Returns: An iterator (index, operation)'s that satisfy the op_condition. """

        for index, moment in enumerate(self._moments):
            for op in moment.operations:
                if predicate(op):
                    yield index, op