static boolean isLeaf(int nodeOrder, int depth) {
        checkTrue(depth > 0, "Invalid depth: " + depth);
        int leafLevel = depth - 1;
        int numberOfNodes = getNumberOfNodes(depth);
        int maxNodeOrder = numberOfNodes - 1;
        checkTrue(nodeOrder >= 0 && nodeOrder <= maxNodeOrder, "Invalid nodeOrder: " + nodeOrder + " in a tree with depth "
                + depth);
        int leftMostLeafOrder = MerkleTreeUtil.getLeftMostNodeOrderOnLevel(leafLevel);
        return nodeOrder >= leftMostLeafOrder;
    }
@Test(expected = IllegalArgumentException.class)
    public void testIsLeafThrowsOnNegativeNodeOrder() {
        MerkleTreeUtil.isLeaf(-1, 3);
    }