Signer extends NeoSerializable { @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Signer that = (Signer) o; return Objects.equals(this.account, that.account) && Objects.equals(this.scopes, that.scopes) && Objects.equals(this.allowedContracts, that.allowedContracts) && Objects.equals(this.allowedGroups, that.allowedGroups); } Signer(); private  Signer(Builder builder); static Signer feeOnly(ScriptHash account); static Signer calledByEntry(ScriptHash account); static Signer global(ScriptHash account); ScriptHash getScriptHash(); List<WitnessScope> getScopes(); List<ScriptHash> getAllowedContracts(); List<ECKeyPair.ECPublicKey> getAllowedGroups(); @Override void deserialize(BinaryReader reader); @Override void serialize(BinaryWriter writer); @Override int getSize(); @Override boolean equals(Object o); @Override int hashCode();  }
@Test public void equals() { Signer c1 = Signer.calledByEntry(acctScriptHash); Signer c2 = Signer.calledByEntry(acctScriptHash); assertThat(c1, equalTo(c2)); c1 = new Signer.Builder() .account(acctScriptHash) .allowedGroups(groupPubKey1, groupPubKey2) .allowedContracts(contract1, contract2) .scopes(WitnessScope.CALLED_BY_ENTRY) .build(); c2 = new Signer.Builder() .account(acctScriptHash) .allowedGroups(groupPubKey1, groupPubKey2) .allowedContracts(contract1, contract2) .scopes(WitnessScope.CALLED_BY_ENTRY) .build(); assertThat(c1, equalTo(c2)); }