public boolean equals(Object o) {
		if (this == o)
			return true;
		if (!(o instanceof BinaryRule))
			return false;

		final BinaryRule binaryRule = (BinaryRule) o;

		if (leftChild != null ? !leftChild.equals(binaryRule.leftChild)
				: binaryRule.leftChild != null)
			return false;
		if (parent != null ? !parent.equals(binaryRule.parent)
				: binaryRule.parent != null)
			return false;
		if (rightChild != null ? !rightChild.equals(binaryRule.rightChild)
				: binaryRule.rightChild != null)
			return false;

		return true;
	}