code: public static AbstractEdge<?> createEdge(Interval interval, Class<?> clsDataType) throws MIDDException {
          Class<? extends AbstractEdge> edgeClsType = getEdgeClassType(clsDataType);
          try {
              Constructor<? extends AbstractEdge> constructor  = edgeClsType.getConstructor(Interval.class);
              return constructor.newInstance(interval);
          } catch (NoSuchMethodException e) {
              log.error("Cannot find the constructor for the class {}", clsDataType.getName(), e);
          } catch (InvocationTargetException | InstantiationException | IllegalAccessException e) {
              log.error("Failed to construct object of type '{}'", clsDataType.getName(), e);
          }
          throw new MIDDException("Unsupported data type to create edge of type " + clsDataType.getName());
      }
docs: Create an out-going edge for the variable data type <code>clsDataType</code> and
  with the predicate be the <code>interval</code>.
  
  @param interval
  @param clsDataType
  @return
  @throws MIDDException  if the equivalent edge class type or the constructor are not found
  
  @see nl.uva.sne.midd.edges.BooleanEdge
  @see nl.uva.sne.midd.edges.DateTimeEdge
  @see nl.uva.sne.midd.edges.DoubleEdge
  @see nl.uva.sne.midd.edges.IntegerEdge
  @see nl.uva.sne.midd.edges.StringEdge