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());
    }
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 ( ) ) ; }
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