class AccountState {

    public byte[] getEncoded() {
        if (rlpEncoded == null) {
            byte[] nonce = RLP.encodeBigInteger(this.nonce);
            byte[] balance = RLP.encodeBigInteger(this.balance);
            byte[] stateRoot = RLP.encodeElement(this.stateRoot);
            byte[] codeHash = RLP.encodeElement(this.codeHash);
            this.rlpEncoded = RLP.encodeList(nonce, balance, stateRoot, codeHash);
        }
        return rlpEncoded;
    }

    public  AccountState(SystemProperties config);
    public  AccountState(BigInteger nonce, BigInteger balance);
    public  AccountState(BigInteger nonce, BigInteger balance, byte[] stateRoot, byte[] codeHash);
    public  AccountState(byte[] rlpData);

}