code: public static InternalNode<?> createInternalNode(int id, InternalNodeState state, Class<?> clsDataType) throws MIDDException {
          Class<? extends InternalNode> nodeClsType = getNodeClassType(clsDataType);
          try {
              Constructor<? extends InternalNode> constructor  = nodeClsType.getConstructor(int.class, InternalNodeState.class);
              return constructor.newInstance(id, state);
          } 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 internal node of type " + clsDataType.getName());
      }
docs: Create an internal node object of type <code>clsDataType</code>.
  
  @param id  the variable id in the node
  @param state internal node state
  @param clsDataType data type of the variable in the node
  @return
  @throws MIDDException
  
  @see InternalNodeState
  @see BooleanNode
  @see DateTimeNode
  @see DoubleNode
  @see IntegerNode
  @see StringNode