def _nt_obs_fields
start_index = index
if node_cache[:obs_fields].has_key?(index)
cached = node_cache[:obs_fields][index]
@index = cached.interval.end if cached
return cached
end
s0, i0 = [], index
loop do
i1 = index
r2 = _nt_obs_return
if r2
r1 = r2
else
r3 = _nt_obs_received
if r3
r1 = r3
else
r4 = _nt_obs_orig_date
if r4
r1 = r4
else
r5 = _nt_obs_from
if r5
r1 = r5
else
r6 = _nt_obs_sender
if r6
r1 = r6
else
r7 = _nt_obs_reply_to
if r7
r1 = r7
else
r8 = _nt_obs_to
if r8
r1 = r8
else
r9 = _nt_obs_cc
if r9
r1 = r9
else
r10 = _nt_obs_bcc
if r10
r1 = r10
else
r11 = _nt_obs_message_id
if r11
r1 = r11
else
r12 = _nt_obs_in_reply_to
if r12
r1 = r12
else
r13 = _nt_obs_references
if r13
r1 = r13
else
r14 = _nt_obs_subject
if r14
r1 = r14
else
r15 = _nt_obs_comments
if r15
r1 = r15
else
r16 = _nt_obs_keywords
if r16
r1 = r16
else
r17 = _nt_obs_resent_date
if r17
r1 = r17
else
r18 = _nt_obs_resent_from
if r18
r1 = r18
else
r19 = _nt_obs_resent_send
if r19
r1 = r19
else
r20 = _nt_obs_resent_rply
if r20
r1 = r20
else
r21 = _nt_obs_resent_to
if r21
r1 = r21
else
r22 = _nt_obs_resent_cc
if r22
r1 = r22
else
r23 = _nt_obs_resent_bcc
if r23
r1 = r23
else
r24 = _nt_obs_resent_mid
if r24
r1 = r24
else
r25 = _nt_obs_optional
if r25
r1 = r25
else
@index = i1
r1 = nil
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
if r1
s0 << r1
else
break
end
end
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
node_cache[:obs_fields][start_index] = r0
r0
end