docs: public static String convertBinarySidToString(byte[] sid) {
  		// Add the 'S' prefix
  		StringBuffer sidAsString = new StringBuffer("S-");
  
  		// bytes[0] : in the array is the version (must be 1 but might
  		// change in the future)
  		sidAsString.append(sid[0]).append('-');
  
  		// bytes[2..7] : the Authority
  		StringBuffer sb = new StringBuffer();
  		for (int t = 2; t <= 7; t++) {
  			String hexString = Integer.toHexString(sid[t] & 0xFF);
  			sb.append(hexString);
  		}
  		sidAsString.append(Long.parseLong(sb.toString(), HEX));
  
  		// bytes[1] : the sub authorities count
  		int count = sid[1];
  
  		// bytes[8..end] : the sub authorities (these are Integers - notice
  		// the endian)
  		for (int i = 0; i < count; i++) {
  			int currSubAuthOffset = i * 4;
  			sb.setLength(0);
  			sb.append(toHexString((byte) (sid[11 + currSubAuthOffset] & 0xFF)));
  			sb.append(toHexString((byte) (sid[10 + currSubAuthOffset] & 0xFF)));
  			sb.append(toHexString((byte) (sid[9 + currSubAuthOffset] & 0xFF)));
  			sb.append(toHexString((byte) (sid[8 + currSubAuthOffset] & 0xFF)));
  
  			sidAsString.append('-').append(Long.parseLong(sb.toString(), HEX));
  		}
  
  		// That's it - we have the SID
  		return sidAsString.toString();
  	}