def __init__(s, name, type_list, field_list):
    """Entry point to initialize one type of AST node.

    `name` is the name of this constructor and should be capitalized.
    `type_list` is the list of node types of all parameters. `field_list` is
    the list of names of all parameters. If the constructor does not have any
    parameters, both lists will be None."""
    assert name[0].isupper()
    isNone = type_list is None and field_list is None
    isSameLen = not isNone and len(type_list) == len(field_list)
    assert isNone or isSameLen
    s.name = name
    s.type_list = type_list
    s.field_list = field_list
