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

void main() {
  hello.hi;
}

---

(program
  (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_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_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))))))
