=============|||
Simple Use or Hide
=============|||

---- MODULE Test ----
USE X, Y
HIDE X
HIDE Y
====

-------------|||

(source_file (module (header_line) name: (identifier) (header_line)
  (use_or_hide (use_body
    (use_body_expr
      (identifier_ref)
      (identifier_ref)
    )
  ))
  (use_or_hide (use_body
    (use_body_expr
      (identifier_ref)
    )
  ))
  (use_or_hide (use_body
    (use_body_expr
      (identifier_ref)
    )
  ))
(double_line)))

=============|||
Hide Multiple Definitions
=============|||

---- MODULE Test ----
HIDE X, Y
HIDE DEFS X, Y
====

-------------|||

(source_file (module (header_line) name: (identifier) (header_line)
  (use_or_hide (use_body
    (use_body_expr
      (identifier_ref)
      (identifier_ref)
    )
  ))
  (use_or_hide (use_body
    (use_body_def
      (identifier_ref)
      (identifier_ref)
    )
  ))
(double_line)))

=============|||
Complicated Use & Hide
=============|||

---- MODULE Test ----
USE x, 1 + 3
HIDE DEFS -., *, ^+
USE x DEF z, x
====

-------------|||

(source_file (module (header_line) name: (identifier) (header_line)
  (use_or_hide (use_body
    (use_body_expr
      (identifier_ref)
      (bound_infix_op lhs: (nat_number) symbol: (plus) rhs: (nat_number))
    )
  ))
  (use_or_hide (use_body
    (use_body_def
      (prefix_op_symbol (negative))
      (infix_op_symbol (mul))
      (postfix_op_symbol (sup_plus))
    )
  ))
  (use_or_hide (use_body
    (use_body_expr
      (identifier_ref)
    )
    (use_body_def
      (identifier_ref)
      (identifier_ref)
    )
  ))
(double_line)))

=============|||
Use & Hide Modules
=============|||

---- MODULE Test ----
USE x, MODULE M, 1 + 3
HIDE DEFS MODULE M, -., *, ^+
USE x, MODULE M DEF MODULE M, x
====

-------------|||

(source_file (module (header_line) name: (identifier) (header_line)
  (use_or_hide (use_body
    (use_body_expr
      (identifier_ref)
      (module_ref (identifier_ref))
      (bound_infix_op lhs: (nat_number) symbol: (plus) rhs: (nat_number))
    )
  ))
  (use_or_hide (use_body
    (use_body_def
      (module_ref (identifier_ref))
      (prefix_op_symbol (negative))
      (infix_op_symbol (mul))
      (postfix_op_symbol (sup_plus))
    )
  ))
  (use_or_hide (use_body
    (use_body_expr
      (identifier_ref)
      (module_ref (identifier_ref))
    )
    (use_body_def
      (module_ref (identifier_ref))
      (identifier_ref)
    )
  ))
(double_line)))
