public class TrieNode {
    private char letter;
    private boolean end = false;
    private TrieNode lmchild = null;
    private TrieNode rsibling = null;
    private String id;
    private static int counter = 1;
    
    public TrieNode(char l) {
	letter = l;
	id = "n" + counter;
	counter++;
	if (System.getProperty("DEBUG") != null) {
	    System.out.println("Node Created: " + l + " id: " + id);
	}
    }

    public TrieNode(char l, boolean b) {
	letter = l;
	end = b;
	id = "n" + counter;
	counter++;
	if (System.getProperty("DEBUG") != null) {
	    System.out.println("Node Created: " + l + " id: " + id);
	}
    }

    public TrieNode(char l, boolean b, TrieNode s, TrieNode c) {
	letter = l;
	end = b;
	lmchild = c;
	rsibling = s;
	id = "n" + counter;
	counter++;
	if (System.getProperty("DEBUG") != null) {
	    System.out.println("Node Created: " + l + " id: " + id);
	}
    }

    public void setLetter(char l) {
	letter = l;
    }

    public char getLetter() {
	return letter;
    }

    public TrieNode setChild(TrieNode c) {
	lmchild = c;
	return this;
    }

    public TrieNode getChild() {
	return lmchild;
    }

    public TrieNode setSibling(TrieNode s) {
	rsibling = s;
	return this;
    }

    public TrieNode getSibling() {
	return rsibling;
    }

    public String getId() {
	return id;
    }

    public void setEnd(boolean b) {
	end = b;
    }

    public boolean getEnd() {
	return end;
    }
}
