in pyignite/datatypes/internal.py [0:0]
def parse(self, stream):
fields, ctx = [], self.__prepare_conditional_ctx()
for name, c_type in self.fields:
is_cond = isinstance(c_type, Conditional)
c_type = c_type.parse(stream, ctx) if is_cond else c_type.parse(stream)
fields.append((name, c_type))
if name in ctx:
ctx[name] = stream.read_ctype(c_type, direction=READ_BACKWARD)
return self.build_c_type(fields)