code: @Deprecated
  	public Set<String> getAffectedSecurityRoles() {
  		if (CollectionUtils.isEmpty(securityRoles)) {
  			Stream<MenuEntry> parents = reverseFlattened();
  			Iterator<MenuEntry> entry = parents.iterator();
  			while (entry.hasNext()) {
  				MenuEntry menuEntry = (MenuEntry) entry.next();
  				if (!CollectionUtils.isEmpty(menuEntry.getSecurityRoles())) {
  					return Collections.unmodifiableSet(menuEntry.getSecurityRoles());
  				}
  				//root?
  				if (null != menuEntry.getComponent()) {
  					if (null != menuEntry.getComponent().getSecurityRoles()) {
  						return Collections.unmodifiableSet(menuEntry.getComponent().getSecurityRoles());
  					}
  				}
  			}
  			return Collections.emptySet();
  		}
  		return Collections.unmodifiableSet(securityRoles);
  	}
docs: the effective roles reverse recursive to component if not set at this object or anywhere within the tree<br>
  first menu entry or component with roles will return it.
  @return a unmodifiable Set or empty Set
  @since 1.0.1
  @deprecated unnecessary because url resolving in template will work, will be removed with version 1.2.0