<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def find_stacks(node, strict=False):
 """Find pushes and pops to the stack and annotate them as such. Args: node: An AST node that might contain stack pushes and pops. strict: A boolean indicating whether to stringently test whether each push and pop are matched. This is not always possible when taking higher-order derivatives of code generated in split-motion. Returns: node: The node passed in, but with pushes and pops annotated in AST nodes. """

  # First, find all stack operation IDs.
  fso = FindStackOps()
  fso.visit(node)
  # Using those IDs, make annotations onto the push and pop nodes.
  AnnotateStacks(fso.push_pop_pairs, strict).visit(node)
  return node