def __init__(self, json_pp):
    super(ProgramPoint, self).__init__()
    self.kind = json_pp['kind']
    self.tag = json_pp['tag']
    self.node_id = json_pp['node_id']
    self.is_sink = bool(json_pp['is_sink'])
    self.has_report = bool(json_pp['has_report'])
    if (self.kind == 'Edge'):
        self.src_id = json_pp['src_id']
        self.dst_id = json_pp['dst_id']
    elif (self.kind == 'Statement'):
        logging.debug(json_pp)
        self.stmt_kind = json_pp['stmt_kind']
        self.cast_kind = (json_pp['cast_kind'] if ('cast_kind' in json_pp) else None)
        self.stmt_point_kind = json_pp['stmt_point_kind']
        self.stmt_id = json_pp['stmt_id']
        self.pointer = json_pp['pointer']
        self.pretty = json_pp['pretty']
        self.loc = (SourceLocation(json_pp['location']) if (json_pp['location'] is not None) else None)
    elif (self.kind == 'BlockEntrance'):
        self.block_id = json_pp['block_id']
def __init__(self, json_pp):
    super(ProgramPoint, self).__init__()
    self.kind = json_pp['kind']
    self.tag = json_pp['tag']
    self.node_id = json_pp['node_id']
    self.is_sink = bool(json_pp['is_sink'])
    self.has_report = bool(json_pp['has_report'])
    if (self.kind == 'Edge'):
        self.src_id = json_pp['src_id']
        self.dst_id = json_pp['dst_id']
    elif (self.kind == 'Statement'):
        logging.debug(json_pp)
        self.stmt_kind = json_pp['stmt_kind']
        self.cast_kind = (json_pp['cast_kind'] if ('cast_kind' in json_pp) else None)
        self.stmt_point_kind = json_pp['stmt_point_kind']
        self.stmt_id = json_pp['stmt_id']
        self.pointer = json_pp['pointer']
        self.pretty = json_pp['pretty']
        self.loc = (SourceLocation(json_pp['location']) if (json_pp['location'] is not None) else None)
    elif (self.kind == 'BlockEntrance'):
        self.block_id = json_pp['block_id']