public LiteralInCollectionUpdaterProperty(Property p, Object key, Object value) {
   setDeclaringClass(p.getDeclaringClass());
   setGenericType(inferElementTypeIn(p.getGenericType()));
   copyAnnotationsFrom(p);
   String name = getName(p, key);
   setName(name);
   this.value = value;
 }
 /**
  * Get used property name
  *
  * @param p initial property
  * @param key key of value in property (which is expected to contain a collection)
  * @return full property name
  */
 public static String getName(Property p, Object key) {
   LiteralTransformer transformer = Literals.get(key.getClass());
   return getName(p.getName(), transformer.toString(key));
 }