code: static void validateTypeForSchemaMarshalling(Class<?> type) {
      if (isNonCollectionInterface(type) || isAbstract(type)) {
        throw new IllegalArgumentException("Cannot marshal " + type.getSimpleName()
            + ". Interfaces and abstract class cannot be cannot be marshalled into consistent BigQuery data.");
      }
      if (!isCollection(type) && isGenericType(type)) {
        throw new IllegalArgumentException("Cannot marshal " + type.getSimpleName()
            + ". Parameterized type other than Collection<T> cannot be marshalled into consistent BigQuery data.");
      }
      if (Map.class.isAssignableFrom(type)) {
        throw new IllegalArgumentException(
            "Cannot marshal a map into BigQuery data " + type.getSimpleName());
      }
      if (UNSUPPORTED_TYPES.contains(type)) {
        throw new IllegalArgumentException(
            "Type cannot be marshalled into bigquery schema. " + type.getSimpleName());
      }
    }
docs: Bigquery schema cannot be generated in following cases 1. Field is an interface or an abstract
  type. These types can lead to inconsistent schema at runtime. 2. Generic types. 3. {@link Map}
  4. Type having reference to itself as a field.