### Question:
Account { public byte[] getEncoded(){ if(dirty){ AccountProto.Builder accountProtoBuilder = AccountProto.newBuilder(); accountProtoBuilder.setBalance(ByteString.copyFrom(this.balance.toByteArray())); accountProtoBuilder.setBinHash(ByteString.copyFrom(this.binHash)); accountProtoBuilder.setExtraRoot(ByteString.copyFrom(this.storageRoot)); accountProtoBuilder.setPermissionRoot(ByteString.copyFrom(this.permissionRoot)); AccountProto accountProto = accountProtoBuilder.build(); this.protoBuf = accountProto.toByteArray(); } return protoBuf; } Account(byte[] protoBuf);  Account(BigInteger balance, byte[] storageRoot, byte[] binHash, byte[] permissionRoot); byte[] getEncoded(); boolean addBalance(BigInteger value); AccountTypeEnum getAccountType(); boolean isEmpty(); void untouch(); boolean isContractExist(); byte[] getBin(); void setBin(byte[] bin); void setStorage(byte[] key, byte[] value); byte[] getStorage(byte[] key); Map<ByteArrayWrapper, byte[]> getStorageMap(); void setPermissionRoot(byte[] permissionRoot); BigInteger getBalance(); byte[] getStorageRoot(); void setStorageRoot(byte[] storageRoot); byte[] getBinHash(); byte[] getPermissionRoot(); boolean isDirty();  }### Answer:
@Test public void getEncoded() { Account account = this.init(); Account account1 = new Account(account.getEncoded()); Assert.assertArrayEquals(account.getStorageRoot(),account1.getStorageRoot()); }