/*
Node :: (tokenizer, optional init object) -> node
function Node(t, init) {
    var token = t.token;
    if (token) {
        // If init.type exists it will override token.type.
        this.type = token.type;
        this.value = token.value;
        this.lineno = token.lineno;

        // Start and end are file positions for error handling.
        this.start = token.start;
        this.end = token.end;
    } else {
        this.lineno = t.lineno;
    }

    // Node uses a tokenizer for debugging (getSource, filename getter).
    this.tokenizer = t;
    this.children = [];

    for (var prop in init)
        this[prop] = init[prop];
}