+
+ /**
+ * Check if specified type is generated for a {@code type bits}.
+ *
+ * @param type Type to examine
+ * @return {@code true} if the type is generated for a {@code type bits}
+ */
+ public static boolean isBitsType(final Type type) {
+ return type instanceof GeneratedTransferObject && isBitsType((GeneratedTransferObject) type);
+ }
+
+ /**
+ * Check if specified type is generated for a {@code type bits}.
+ *
+ * @param gto Type to examine
+ * @return {@code true} if the type is generated for a {@code type bits}
+ */
+ public static boolean isBitsType(final GeneratedTransferObject gto) {
+ return gto.isTypedef() && gto.getBaseType() instanceof BitsTypeDefinition;
+ }
+
+ /**
+ * Check if specified type is generated for an identity.
+ *
+ * @param type Type to examine
+ * @return {@code true} if the type is generated for an identity
+ */
+ public static boolean isIdentityType(final Type type) {
+ if (type instanceof GeneratedType) {
+ for (var constant : ((GeneratedType) type).getConstantDefinitions()) {
+ if (VALUE_STATIC_FIELD_NAME.equals(constant.getName())
+ && BaseIdentity.class.equals(constant.getValue())) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }