public static <K> StructuralKey<K> of(K key, Coder<K> coder) {
    try {
      return new CoderStructuralKey<>(coder, key);
    } catch (Exception e) {
      throw new IllegalArgumentException(
          "Could not encode a key with its provided coder " + coder.getClass().getSimpleName(), e);
    }
  }
@Test
  public void objectEqualsTrueKeyEquals() {
    StructuralKey<Integer> original = StructuralKey.of(1234, VarIntCoder.of());
    assertThat(StructuralKey.of(1234, VarIntCoder.of()), Matchers.equalTo(original));
  }