class Cake {

  public static String key(String... subKeys) {
    if (subKeys.length == 0) {
      throw new IllegalArgumentException("cannot form cake key; no keys supplied");
    }
    Arrays.asList(subKeys).forEach(Cake::validateKey);
    return StringUtils.join(subKeys, Cake.SEPARATOR);
  }

  public  Cake();
  public  Cake(Cake other);

}