aspect Analysis { // --- lookupTokenEndpointDefinition --- inh TokenEndpointDefinition TokenEndpointDefinition.lookupTokenEndpointDefinition(TokenComponent token); eq RagConnect.getEndpointDefinition().lookupTokenEndpointDefinition(TokenComponent token) { for (EndpointDefinition def : getEndpointDefinitionList()) { if (def.isTokenEndpointDefinition() && def.asTokenEndpointDefinition().getToken().equals(token)) { return def.asTokenEndpointDefinition(); } } return null; } // --- lookupDependencyDefinition --- inh DependencyDefinition DependencyDefinition.lookupDependencyDefinition(TypeDecl source, String id); eq RagConnect.getDependencyDefinition().lookupDependencyDefinition(TypeDecl source, String id) { for (DependencyDefinition def : getDependencyDefinitionList()) { if (def.getID().equals(id) && def.getSource().containingTypeDecl().equals(source)) { return def; } } return null; } // --- isAlreadyDefined --- syn boolean TokenEndpointDefinition.isAlreadyDefined() = lookupTokenEndpointDefinition(getToken()) != this; syn boolean DependencyDefinition.isAlreadyDefined() = lookupDependencyDefinition(getSource().containingTypeDecl(), getID()) != this; }