boolean (GrNamedArgument[] namedArgs1, GrNamedArgument[] namedArgs2) { if (namedArgs1.length != namedArgs2.length) { return false; } for (GrNamedArgument arg1 : namedArgs1) { final GrArgumentLabel label1 = arg1.getLabel(); if (label1 == null) { return false; } final String name1 = label1.getName(); boolean found = false; final GrExpression expression1 = arg1.getExpression(); for (GrNamedArgument arg2 : namedArgs2) { final GrArgumentLabel label2 = arg2.getLabel(); if (label2 == null) { return false; } final String name2 = label2.getName(); final GrExpression expression2 = arg2.getExpression(); if (name1 == null) { if (name2 == null && expressionsAreEquivalent(((GrExpression)label1.getNameElement()), (GrExpression)label2.getNameElement()) && expressionsAreEquivalent(expression1, expression2)) { found = true; break; } } else if (name1.equals(name2) && expressionsAreEquivalent(expression1, expression2)) { found = true; break; } } if (!found) { return false; } } return true; }