public AbstractBeanTreeNode generateNewDefaultArrayElementNode() {
        if (null == this.children) {
            this.children = new Vector<AbstractBeanTreeNode>();
        }

        AbstractBeanTreeNode arrayChildNode = null;
        Class<?> componentType = this.getObjType().getComponentType();
        Object arrayElement = null;
        String nodeName = componentType.getSimpleName();
        String methodName = null;

        if(false == isTypeNumberOrString(componentType)) {
            Object parentObj = this.userObject;
            Method method = findGetMethodInParentByName(parentObj, nodeName);
            if(method != null) {
                try {
                    arrayElement = method.invoke(parentObj, new Object[]{});
                    methodName = method.getName();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                } catch (InvocationTargetException e) {
                    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                }
            }
        }

        if(arrayElement == null) {
            arrayElement = this.getObjectDefaultValueInstance(componentType);
        }

        Object arrayElementDefaultValue = this.getObjectDefaultValueInstance(componentType);
        arrayChildNode = new BeanObjectTreeNode(this, componentType.getSimpleName(), arrayElement.getClass(), arrayElement, arrayElementDefaultValue, methodName);

        if(false == componentType.isPrimitive()) {
            arrayChildNode.initChildren();
        }

        return arrayChildNode;
    }