ObjectType ot = m_symbols.getEmitted(linkName(assn)); if (ot != null) { m_root.addObjectType(ot); m_root.addObjectMap(new ObjectMap(ot));
PropertyNd one = assn.getRoleOne(); PropertyNd two = assn.getRoleTwo(); Collection props = assn.getProperties(); ObjectType oneot = m_symbols.getEmitted(one.getType()); ObjectType twoot = m_symbols.getEmitted(two.getType());  if (props.size() > 0) { Role rone = new Role(one.getName().getName(), oneot, one.isComponent(), false, false); Role rtwo = new Role(two.getName().getName(), twoot, two.isComponent(), false, false);  ObjectType ot = m_symbols.getEmitted(linkName(assn));  ot.addProperty(rone); Role revOne = new Role("~" + rone.getName(), ot, true, true, true); rone.getType().addProperty(revOne); rone.setReverse(revOne);  ot.addProperty(rtwo); Role revTwo = new Role("~" + rtwo.getName(), ot, true, true, true); rtwo.getType().addProperty(revTwo); rtwo.setReverse(revTwo);  for (Iterator it = props.iterator(); it.hasNext(); ) { PropertyNd prop = (PropertyNd) it.next(); define(ot, prop); }  Link l = new Link(rone.getName(), rtwo, rone, one.isCollection(), one.isNullable()); m_links.add(l); twoot.addProperty(l); l = new Link(rtwo.getName(), rone, rtwo, two.isCollection(), two.isNullable()); oneot.addProperty(l); m_links.add(l); } else { Role rone = define(oneot, two); Role rtwo = define(twoot, one); if (rone != null && rtwo != null) { rone.setReverse(rtwo); }
		public void onAssociation(AssociationNd assn) {		    ObjectType ot = m_symbols.getEmitted(linkName(assn));		    if (ot != null) {			m_root.addObjectType(ot);			m_root.addObjectMap(new ObjectMap(ot));		    }		}