code: private <P> List<Facet> injectFacetBindings(DefaultPojoBinding<P> binding, Class<P> pojoType) {
          List<Facet> keyFacets = new LinkedList<>();
          facetProvider.getFacets(pojoType).stream().forEach(facet -> {
              if (facet.hasAnnotation(PartitionKey.class) || facet.hasAnnotation(ClusteringColumn.class)) {
                  keyFacets.add(facet);
              } else {
                  GenericType facetType = facet.getType();
                  Converter converter = converterRegistry.getConverter(facetType);
                  String columnName = namingStrategy.getColumnName(facet);
                  if (converter != null) {
                      binding.addFacetBinding(new SimpleFacetBinding(facet, columnName, converter));
                  } else if (facetType.isList()) {
                      binding.addFacetBinding(new ListFacetBinding(facet, columnName, createElementBinding(facet, facetType.getElementType())));
                  } else if (facetType.isSet()) {
                      binding.addFacetBinding(new SetFacetBinding(facet, columnName, createElementBinding(facet, facetType.getElementType())));
                  } else if (facetType.isMap()) {
                      Converter keyConverter = converterRegistry.getConverter(facetType.getMapKeyType());
                      if (keyConverter == null) {
                          throw new HecateException("Invalid facet \"%s\"; no converter registered for key type \"%s\".", facet.getName(), facetType.getMapKeyType().getRawType().getCanonicalName());
                      }
                      binding.addFacetBinding(new MapFacetBinding(facet, columnName, keyConverter, createElementBinding(facet, facetType.getMapValueType())));
                  } else if (facetType.isArray()) {
                      binding.addFacetBinding(new ArrayFacetBinding(facet, columnName, createElementBinding(facet, facetType.getArrayElementType())));
                  } else if (facet.hasAnnotation(Embedded.class)) {
                      binding.addFacetBinding(new EmbeddedFacetBinding(facet, converterRegistry, namingStrategy));
                  } else {
                      PojoBinding<?> refBinding = createPojoBinding(facetType.getRawType());
                      binding.addFacetBinding(refBinding.getKeyBinding().createReferenceBinding(facet, refBinding, namingStrategy));
                  }
              }
          });
          return keyFacets;
      }
docs: ----------------------------------------------------------------------------------------------------------------------