So there's a bunch of places in the code that are assuming that this method will return zero or one matching groups.  Should the signature of this method be more like 

    public IPersonAttributesGroupDefinition getPersonAttributesGroupDefinitioByName(String name);

returning `null` if no march, the exactly one matching `IPersonAttributesGroupDefinition` on a match, or throwing a `RuntimeException` in the illegal state where there are multiple groups with the given name?

Would simplify and make correct the assumptions in calling code.