===
2 member anonymous impl block
===

impl X {
    fn a(self) -> bool {true}
    fn b() -> bool {true}
}
---

(source_file
  (impl
    (identifier)
    (unit_definition
      (identifier)
      (parameter_list (self))
      (type
        (builtin_type))
      (block (bool_literal)))
    (unit_definition
      (identifier)
      (parameter_list)
      (type
        (builtin_type))
      (block (bool_literal)))))

===
Generic impl block
===
impl<#uint N, T> A {
}
---
(source_file
  (impl
    (generic_parameters
      (generic_param
        meta: (identifier)
        (identifier))
      (generic_param (identifier)))
    (identifier)))

===
Generic impl block regression
===

impl<InnerHeader> HeaderPayloadStream<InnerHeader> { }

---
(source_file
  (impl
    (generic_parameters
      (generic_param (identifier)))
      (identifier)
      (generic_parameters (generic_param (identifier)))))

===
Impl block with for
===

impl Trait for HeaderPayloadStream { }

---
(source_file
  (impl
    (identifier)
    for: (identifier)))

===
Generic impl block with for
===

impl<InnerHeader> Trait<T> for HeaderPayloadStream<InnerHeader> { }

---
(source_file
  (impl
    (generic_parameters
      (generic_param (identifier)))
      (identifier)
      (generic_parameters (generic_param (identifier)))
      for: (identifier)
      for: (generic_parameters (generic_param (identifier)))))
