@Override
 public FlowPropertyDefinitionBuilder getFlowPropertyDefinitionBuilder(
     String propertyName, Class<?> dataClass) {
   FlowPropertyDefinitionBuilder flowPropertyDefinitionBuilder =
       super.getFlowPropertyDefinitionBuilder(propertyName, dataClass);
   // TODO: seems HACK: is this really a good idea to special case this ( i.e. what about
   // persister? changelistener? etc. )
   if (flowPropertyDefinitionBuilder != null) {
     flowPropertyDefinitionBuilder.initFlowPropertyValueProvider(this);
   }
   return flowPropertyDefinitionBuilder;
 }
 @SuppressWarnings("unchecked")
 private <T> T get(Object object, String properties) {
   ReflectionFlowPropertyValueProvider reflectionFlowPropertyValueProvider =
       new ReflectionFlowPropertyValueProvider(object, properties, properties);
   Map<String, FlowPropertyDefinitionBuilder> flowPropertyDefinitions =
       reflectionFlowPropertyValueProvider.getFlowPropertyDefinitions();
   Map.Entry<String, FlowPropertyDefinitionBuilder> entry =
       CUtilities.getFirst(flowPropertyDefinitions);
   FlowPropertyDefinitionBuilder flowPropertyDefinitionBuilder = entry.getValue();
   return (T)
       reflectionFlowPropertyValueProvider.get(
           null, flowPropertyDefinitionBuilder.toFlowPropertyDefinition());
 }