if(proxy == null) return;
	public final void add(NodeProxy proxy) {		if (root == null) {			root = new Node(proxy);			++size;			return;		}		Node tempNode = root;		while (true) {			int c = tempNode.data.compareTo(proxy);			if (c == 0) {				return;			}			if (c > 0) { // inserts s into left subtree.				if (tempNode.hasLeftChild()) {					tempNode = tempNode.leftChild;					continue;				} else {					Node newNode = tempNode.addLeft(proxy);					balance(newNode);					++size;					return;				}			} else { // inserts s to right subtree				if (tempNode.hasRightChild()) {					tempNode = tempNode.rightChild;					continue;				} else {					Node newNode = tempNode.addRight(proxy);					balance(newNode);					++size;					return;				}			}		}	}