class StrictMatchingStrategy implements MatchingStrategy {
  @Override
  public boolean isExact() {
    return true;
  }

  @Override
  public boolean matches(PropertyNameInfo propertyNameInfo) {<FILL_FUNCTION_BODY>}

  @Override
  public String toString() {
    return "Strict";
  }
}

    List<Tokens> sourceTokens = propertyNameInfo.getSourcePropertyTokens();
    List<Tokens> destTokens = propertyNameInfo.getDestinationPropertyTokens();
    if (sourceTokens.size() != destTokens.size())
      return false;

    for (int propIndex = 0; propIndex < destTokens.size(); propIndex++) {
      Tokens sTokens = sourceTokens.get(propIndex);
      Tokens dTokens = destTokens.get(propIndex);

      if (sTokens.size() != dTokens.size())
        return false;

      for (int tokenIndex = 0; tokenIndex < sTokens.size(); tokenIndex++)
        if (!sTokens.token(tokenIndex).equalsIgnoreCase(dTokens.token(tokenIndex)))
          return false;
    }

    return true;
  
<no_super_class>