### Question:
Transaction implements Stored { public boolean hasMissingSignatures() { return this.getTransactionInfo() .filter( info -> info.getHeight().equals(BigInteger.valueOf(0)) && !StringUtils.equalsIgnoreCase(info.getHash(), info.getMerkleComponentHash())) .isPresent(); } Transaction(TransactionFactory<?> factory); TransactionType getType(); NetworkType getNetworkType(); Integer getVersion(); Deadline getDeadline(); BigInteger getMaxFee(); Optional<String> getSignature(); Optional<PublicAccount> getSigner(); Optional<TransactionInfo> getTransactionInfo(); byte[] serialize(); long getSize(); String createTransactionHash(String transactionPayload, final byte[] generationHashBytes); byte[] getSignBytes(final byte[] payloadBytes, final byte[] generationHashBytes); SignedTransaction signWith(final Account account, final String generationHash); Transaction toAggregate(final PublicAccount signer); boolean isUnconfirmed(); boolean isPartial(); boolean hasMissingSignatures(); boolean isUnannounced(); boolean isConfirmed(); Optional<TransactionGroup> getGroup(); boolean isTransactionFullyLoaded(); @Override Optional<String> getRecordId();  }### Answer:
@Test void shouldReturnTransactionIsAggregateBondedWhenHeightIs0AndHashAndMerkHashAreDifferent() { TransactionInfo transactionInfo = TransactionInfo.create(BigInteger.valueOf(0), 1, "ABC", "hash", "hash_2"); FakeTransferTransaction fakeTransaction = new FakeTransferTransactionFactory(networkType) .deadline(new FakeDeadline()) .signature("signature") .signer(signer) .transactionInfo(transactionInfo) .build(); assertTrue(fakeTransaction.hasMissingSignatures()); }