class TrieImpl implements Trie {

    public static byte[] bytesToKey(byte[] bytes) {
        int factor = 8;
        int mask = 0x01;
        int nbits = 1;

        byte[] keyBytes = new byte[bytes.length * factor];
        int l = bytes.length;
        int j = 0;

        for (int k = 0; k < l; k++) {
            byte b = bytes[k];

            for (int i = 0; i < factor; i++) {
                keyBytes[j++] = (byte) ((b >> (nbits * (factor - i - 1))) & mask);
            }
        }

        return keyBytes;
    }

    public  TrieImpl();
    public  TrieImpl(boolean isSecure);
    public  TrieImpl(TrieStore store, boolean isSecure);
    private  TrieImpl(TrieStore store, byte[] encodedSharedPath, int sharedPathLength, byte[] value, boolean isSecure);
    private  TrieImpl(byte[] encodedSharedPath, int sharedPathLength, byte[] value, TrieImpl[] nodes, Keccak256[] hashes, TrieStore store);

}