boolean (MatchNode matchNode, MatchEngine engine) { if (!super.match(matchNode, engine)) { return false; } for (Entry<MatchProperties, RuleValue> rule : matchNode.getRules().entrySet()) { RuleValue value = rule.getValue(); MatchProperties key = rule.getKey(); if (key == MatchProperties.EXPRENT_INVOCATION_PARAMETER) { if (value.isVariable() && (value.parameter >= parameters.size() || !engine.checkAndSetVariableValue(value.value.toString(), parameters.get(value.parameter)))) { return false; } } else if (key == MatchProperties.EXPRENT_INVOCATION_CLASS) { if (!value.value.equals(this.className)) { return false; } } else if (key == MatchProperties.EXPRENT_INVOCATION_SIGNATURE) { if (!value.value.equals(this.name + this.stringDescriptor)) { return false; } } } return true; }