code: public Set<String> getChains() {
  		Set<String> chains = new HashSet<String>();
  		List<ResidueRange> rrs = toCanonical().getResidueRanges();
  		for (ResidueRange rr : rrs) chains.add(rr.getChainName());
  		return chains;
  	}
  
  	@Override
  	public String getIdentifier() {
  		return getCATH();
  	}
  
  	@Override
  	public SubstructureIdentifier toCanonical() {
  		List<ResidueRange> ranges = new ArrayList<ResidueRange>();
  		String chain = String.valueOf(getDomainName().charAt(getDomainName().length() - 3));
  		for (CathSegment segment : this.getSegments()) {
  			ranges.add(new ResidueRange(chain, segment.getStart(), segment.getStop()));
  		}
  
  		return new SubstructureIdentifier(getThePdbId(), ranges);
  	}
  
  	@Override
  	public Structure reduce(Structure input) throws StructureException {
  		return toCanonical().reduce(input);
  	}
  
  	@Override
  	public Structure loadStructure(AtomCache cache) throws StructureException,
  			IOException {
  		return cache.getStructure(getThePdbId());
  	}
  
  
  }
docs: Returns the chains this domain is defined over; contains more than 1 element only if this domains is a multi-chain domain.