MessagingContext implements Serializable { @Override public int hashCode() { String topicName = getTopicName(); int backup = this.kind.hashCode(); return Utils.isEmptyOrWhitespaces( topicName ) ? backup : topicName.hashCode(); } MessagingContext( RecipientKind kind, String domain, String applicationName );  MessagingContext( RecipientKind kind, String domain, String topicName, String applicationName );  MessagingContext( RecipientKind kind, String domain, String componentOrFacetName, ThoseThat thoseThat, String applicationName ); RecipientKind getKind(); String getApplicationName(); String getComponentOrFacetName(); ThoseThat getAgentDirection(); String getDomain(); String getTopicName(); @Override int hashCode(); @Override boolean equals( Object obj ); @Override String toString(); static Collection<MessagingContext> forImportedVariables(
			String domain,
			String applicationName,
			Instance instance,
			ThoseThat thoseThat ); static List<MessagingContext> forExportedVariables(
			String domain,
			String applicationName,
			Instance instance,
			Map<String,String> externalExports,
			ThoseThat thoseThat );  }
@Test public void testHashCode() { MessagingContext ctx1 = new MessagingContext( RecipientKind.DM, "domain", null ); Assert.assertEquals( ctx1.hashCode(), ctx1.hashCode()); Assert.assertNotSame( ctx1.hashCode(), new MessagingContext( RecipientKind.DM, "domain", "whatever" ).hashCode()); MessagingContext ctx2 = new MessagingContext( RecipientKind.INTER_APP, "domain", "facet", ThoseThat.EXPORT, "app" ); Assert.assertEquals( ctx2.hashCode(), ctx2.hashCode()); Assert.assertNotSame( ctx1.hashCode(), ctx2.hashCode()); }