public SmiSymbol resolveReference(IdToken idToken, XRefProblemReporter reporter) {
// doesn't work anymore with hardcoded missing symbols
//        if (!idToken.getLocation().getSource().equals(getIdToken().getLocation().getSource())) {
//            // note this check is not entirely fool-proof in case multiple modules are located in one file
//            throw new IllegalArgumentException("Resolving references is only allowed from inside the same module");
//        }

        SmiSymbol result = findSymbol(idToken.getId());
        if (result == null) {
            result = findImportedSymbol(idToken.getId());
        }
        if (result == null) {
            List<SmiSymbol> symbols = getMib().getSymbols().findAll(idToken.getId());
            if (symbols.size() == 1) {
                result = symbols.get(0);
            } else if (symbols.size() > 0) {
                result = determineBestMatch(idToken, symbols);
            }
        }
        if (result == null && reporter != null) {
            reporter.reportCannotFindSymbol(idToken);
        }

        return result;
    }
public SmiSymbol resolveReference ( IdToken idToken , XRefProblemReporter reporter ) { SmiSymbol result = findSymbol ( idToken . getId ( ) ) ; if ( result == null ) { result = findImportedSymbol ( idToken . getId ( ) ) ; } if ( result == null ) { List < SmiSymbol > symbols = getMib ( ) . getSymbols ( ) . findAll ( idToken . getId ( ) ) ; if ( symbols . size ( ) == 1 ) { result = symbols . get ( 0 ) ; } else if ( symbols . size ( ) > 0 ) { result = determineBestMatch ( idToken , symbols ) ; } } if ( result == null && reporter != null ) { reporter . reportCannotFindSymbol ( idToken ) ; } return result ; }
Resolves a reference from within this module to a symbol in the same module, an imported module
or in the whole mib

@param idToken  Token of the identifier that has to be resolved.
@param reporter If not null, the reporter will be used to reporter the not found error message.
@return The symbol that was found, or null.