source = PatternLanguageHelper.getParameterByName(pattern, ((VariableReference) ref).getVar()).orElse(null);
if (pattern.getParameters().get(0).equals(source)) {
validator.warning("The 'source' parameter is not needed if it is the first pattern parameter.", ref,
PatternLanguagePackage.Literals.VARIABLE_REFERENCE__VAR, ANNOTATION_ISSUE_CODE);
validator.warning(String.format("Feature %s is changeable, make sure to implement setter.",featureName),
contextForFeature, contextESFForFeature, METAMODEL_ISSUE_CODE);
target = PatternLanguageHelper.getParameterByName(pattern, ((VariableReference) ref).getVar()).orElse(null);
if (pattern.getParameters().get(1).equals(target)) {
validator.warning("The 'target' parameter is not needed if it is the second pattern parameter.", ref,
PatternLanguagePackage.Literals.VARIABLE_REFERENCE__VAR, ANNOTATION_ISSUE_CODE);
validator.warning("Cannot find target EClassifier", target, PatternLanguagePackage.Literals.VARIABLE__TYPE,
PATTERN_ISSUE_CODE);
validator.warning("Don't forget to subclass QueryBasedFeature for iteration 'kind'.", ref,
PatternLanguagePackage.Literals.STRING_VALUE__VALUE, ANNOTATION_ISSUE_CODE);
kind = QueryBasedFeatureKind.ITERATION;
validator.warning(String.format("The 'target' parameter type %s is not equal to actual feature type %s.",
featureName, sourceClass.getName()), target, PatternLanguagePackage.Literals.VARIABLE__TYPE,
PATTERN_ISSUE_CODE);
PatternLanguagePackage.Literals.ANNOTATION__NAME, METAMODEL_ISSUE_CODE);
} else {
validator.warning(String.format("Resource at URI %s for EPackage of %s is not writable,"
+ " but it already contains correct annotations.", uri.toString(), sourceClass.getName()), annotation,
PatternLanguagePackage.Literals.ANNOTATION__NAME, METAMODEL_ISSUE_CODE);