Introspection of KeyPaths

While building a CRDT (see, I considered writing a similar proposal. During resarch I came up with the following questions.

  1. Computed members.
    Should one be able to introspect a key path and get information if the introspected member is computed?
    Should the compiler give us a way to reference key paths, which must not contain computed members

  2. Subscripts
    While members could be represented a strings, how should we represent subscript?
    As far as I know, a subscript can be called with any type.
    Is a subscript similar to a computed member or not.

  3. Optionals
    Should one be able to get information if a member is optional.