docs: private DataModel createDataModel()
      {
          Object value = getValue();
  
          if (value == null)
          {
              return EMPTY_DATA_MODEL;
          }
          else if (value instanceof DataModel)
          {
              return (DataModel) value;
          }
          else
          {
              DataModel dataModel = null;
              if (DATAMODEL_BUILDER_CLASS != null && value != null)
              {
                  try
                  {
                      Object dataModelBuilderProxy = DATAMODEL_BUILDER_CLASS.newInstance();
                      dataModel = (DataModel) DATAMODEL_BUILDER_CREATE_DATAMODEL_METHOD.invoke(dataModelBuilderProxy, 
                              getFacesContext(), value.getClass(), value);
                  }
                  catch (InstantiationException ex)
                  {
                      //No op
                  } 
                  catch (IllegalAccessException ex)
                  {
                      //No op
                  }
                  catch (IllegalArgumentException ex)
                  {
                      //No op
                  }
                  catch (InvocationTargetException ex)
                  {
                      //No op
                  }
              }
              if (dataModel == null)
              {
                  if (value instanceof List)
                  {
                      return new ListDataModel((List<?>) value);
                  }
                  else if (OBJECT_ARRAY_CLASS.isAssignableFrom(value.getClass()))
                  {
                      return new ArrayDataModel((Object[]) value);
                  }
                  else if (value instanceof ResultSet)
                  {
                      return new ResultSetDataModel((ResultSet) value);
                  }
                  else if (value instanceof Result)
                  {
                      return new ResultDataModel((Result) value);
                  }
                  else if (value instanceof Iterable)
                  {
                      return new IterableDataModel<>((Iterable<?>) value);
                  } 
                  else if (value instanceof Map) 
                  {
                      return new IterableDataModel<>(((Map<?, ?>) value).entrySet());
                  }
                  else if (value instanceof Collection)
                  {
                      return new CollectionDataModel((Collection) value);
                  }
                  else
                  {
                      return new ScalarDataModel(value);
                  }
              }
              else
              {
                  return dataModel;
              }
          }
      }