code: private String getNextAsymId(String asymId) {
  		if (asymId.length()==1) {
  			if (!asymId.equals("Z")) {
  				return Character.toString(getNextChar(asymId.charAt(0)));
  			} else {
  				return "AA";
  			}
  		} else if (asymId.length()==2) {
  			if (asymId.equals("ZZ")) {
  				return "AAA";
  			}
  			char[] c = new char[2];
  			asymId.getChars(0, 2, c, 0);
  			c[0] = getNextChar(c[0]);
  			if (c[0]=='A') {
  				c[1] = getNextChar(c[1]);
  			}
  			return new String(c);
  		} else if (asymId.length()==3) {
  			char[] c = new char[3];
  			asymId.getChars(0, 3, c, 0);
  			c[0] = getNextChar(c[0]);
  			if (c[0]=='A') {
  				c[1] = getNextChar(c[1]);
  				if (c[1]=='A') {
  					c[2] = getNextChar(c[2]);
  				}
  			}
  			return new String(c);
  		}
  		return null;
  	}
docs: Gets the next asym id given an asymId, according to the convention followed by
  mmCIF files produced by the PDB
  i.e.: A,B,...,Z,AA,BA,CA,...,ZA,AB,BB,CB,...,ZB,.......,ZZ,AAA,BAA,CAA,...
  @param asymId
  @return