code: public static Set<Group> getGroupsWithinShell(Structure structure,
  			Group group, double distance, boolean includeWater) {
  
  		Set<Group> returnList = new LinkedHashSet<Group>();
  
  		Set<ResidueNumber> excludeGroups = new HashSet<ResidueNumber>();
  		excludeGroups.add(group.getResidueNumber());
  		for (Atom atom : group.getAtoms()) {
  			Set<Group> set = getGroupsWithinShell(structure, atom,
  					excludeGroups, distance, includeWater);
  			returnList.addAll(set);
  		}
  
  		return returnList;
  	}
docs: <p>
  Returns a Set of Groups in a structure within the distance specified of a
  given group.
  </p>
  <p>
  Updated 18-Sep-2015 sroughley to return a Set so only a unique set of
  Groups returned
  
  @param structure
  The structure to work with
  @param group
  The 'query' group
  @param distance
  The cutoff distance
  @param includeWater
  Should water residues be included in the output?
  @return {@link LinkedHashSet} of {@link Group}s within at least one atom
  with {@code distance} of at least one atom in {@code group}