==================
Bare field access folds into an assignable selector
==================

void main() {
  hello.hi;
}

---

(program
  (function_declaration
    (function_signature
      (void_type)
      (identifier)
      (formal_parameter_list))
    (function_body
      (block
        (expression_statement
          (unconditional_assignable_selector
            (identifier)
            (assignable_operator)
            (identifier)))))))

==================
Multi-segment field access nests left-associatively
==================

void main() {
  a.b.c;
}

---

(program
  (function_declaration
    (function_signature
      (void_type)
      (identifier)
      (formal_parameter_list))
    (function_body
      (block
        (expression_statement
          (unconditional_assignable_selector
            (unconditional_assignable_selector
              (identifier)
              (assignable_operator)
              (identifier))
            (assignable_operator)
            (identifier)))))))

==================
Field access after a call folds
==================

void main() {
  obj.a().b;
}

---

(program
  (function_declaration
    (function_signature
      (void_type)
      (identifier)
      (formal_parameter_list))
    (function_body
      (block
        (expression_statement
          (unconditional_assignable_selector
            (method_invocation
              (unconditional_assignable_selector
                (identifier)
                (assignable_operator)
                (identifier))
              (argument_part
                (arguments)))
            (assignable_operator)
            (identifier)))))))
