/**
  * Associate the specified columnProperties to the column matching the predicate.
  *
  * @param predicate the column predicate
  * @param properties the properties
  * @return the current factory
  */
 public final MF addColumnProperty(Predicate<? super K> predicate, ColumnProperty... properties) {
   for (ColumnProperty property : properties) {
     columnDefinitions.addColumnProperty(
         predicate, new ConstantUnaryFactory<K, ColumnProperty>(property));
   }
   return (MF) this;
 }
 /**
  * Associate the specified columnProperties to the column matching the predicate.
  *
  * @param name the column predicate
  * @param properties the properties
  * @return the current factory
  */
 public final MF addColumnProperty(String name, ColumnProperty... properties) {
   for (ColumnProperty property : properties) {
     columnDefinitions.addColumnProperty(
         new CaseInsensitiveFieldKeyNamePredicate(name),
         new ConstantUnaryFactory<K, ColumnProperty>(property));
   }
   return (MF) this;
 }
 /**
  * Associate the specified columnProperties to the column matching the predicate.
  *
  * @param predicate the column predicate
  * @param propertyFactory the properties
  * @return the current factory
  */
 public final MF addColumnProperty(
     Predicate<? super K> predicate, UnaryFactory<K, ColumnProperty> propertyFactory) {
   columnDefinitions.addColumnProperty(predicate, propertyFactory);
   return (MF) this;
 }
 /**
  * Associate the specified columnDefinition to the column matching the predicate.
  *
  * @param predicate the column predicate
  * @param columnDefinition the columnDefinition
  * @return the current factory
  */
 public final MF addColumnDefinition(Predicate<? super K> predicate, CD columnDefinition) {
   columnDefinitions.addColumnDefinition(predicate, columnDefinition);
   return (MF) this;
 }