private PropertyNode createFXProperty(PropertyNode orig) {
        ClassNode origType = orig.getType();
        ClassNode newType = PROPERTY_TYPE_MAP.get(origType);

        // For the ObjectProperty, we need to add the generic type to it.
        if (newType == null) {
            if (isTypeCompatible(ClassHelper.LIST_TYPE, origType) || isTypeCompatible(OBSERVABLE_LIST_CNODE, origType)) {
                newType = makeClassSafe(SIMPLE_LIST_PROPERTY_CNODE);
                GenericsType[] genericTypes = origType.getGenericsTypes();
                newType.setGenericsTypes(genericTypes);
            } else if (isTypeCompatible(ClassHelper.MAP_TYPE, origType) || isTypeCompatible(OBSERVABLE_MAP_CNODE, origType)) {
                newType = makeClassSafe(SIMPLE_MAP_PROPERTY_CNODE);
                GenericsType[] genericTypes = origType.getGenericsTypes();
                newType.setGenericsTypes(genericTypes);
            } else if (isTypeCompatible(SET_TYPE, origType) || isTypeCompatible(OBSERVABLE_SET_CNODE, origType)) {
                newType = makeClassSafe(SIMPLE_SET_PROPERTY_CNODE);
                GenericsType[] genericTypes = origType.getGenericsTypes();
                newType.setGenericsTypes(genericTypes);
            } else { // Object Type
                newType = makeClassSafe(OBJECT_PROPERTY_CNODE);
                ClassNode genericType = origType;
                if (genericType.isPrimaryClassNode()) {
                    genericType = ClassHelper.getWrapper(genericType);
                }
                newType.setGenericsTypes(new GenericsType[]{new GenericsType(genericType)});
            }
        }

        FieldNode fieldNode = createFieldNodeCopy(orig.getName() + "Property", newType, orig.getField());
        return new PropertyNode(fieldNode, orig.getModifiers(), orig.getGetterBlock(), orig.getSetterBlock());
    }
private PropertyNode createFXProperty ( PropertyNode orig ) { ClassNode origType = orig . getType ( ) ; ClassNode newType = PROPERTY_TYPE_MAP . get ( origType ) ; if ( newType == null ) { if ( isTypeCompatible ( ClassHelper . LIST_TYPE , origType ) || isTypeCompatible ( OBSERVABLE_LIST_CNODE , origType ) ) { newType = makeClassSafe ( SIMPLE_LIST_PROPERTY_CNODE ) ; GenericsType [ ] genericTypes = origType . getGenericsTypes ( ) ; newType . setGenericsTypes ( genericTypes ) ; } else if ( isTypeCompatible ( ClassHelper . MAP_TYPE , origType ) || isTypeCompatible ( OBSERVABLE_MAP_CNODE , origType ) ) { newType = makeClassSafe ( SIMPLE_MAP_PROPERTY_CNODE ) ; GenericsType [ ] genericTypes = origType . getGenericsTypes ( ) ; newType . setGenericsTypes ( genericTypes ) ; } else if ( isTypeCompatible ( SET_TYPE , origType ) || isTypeCompatible ( OBSERVABLE_SET_CNODE , origType ) ) { newType = makeClassSafe ( SIMPLE_SET_PROPERTY_CNODE ) ; GenericsType [ ] genericTypes = origType . getGenericsTypes ( ) ; newType . setGenericsTypes ( genericTypes ) ; } else { newType = makeClassSafe ( OBJECT_PROPERTY_CNODE ) ; ClassNode genericType = origType ; if ( genericType . isPrimaryClassNode ( ) ) { genericType = ClassHelper . getWrapper ( genericType ) ; } newType . setGenericsTypes ( new GenericsType [ ] { new GenericsType ( genericType ) } ) ; } } FieldNode fieldNode = createFieldNodeCopy ( orig . getName ( ) + "Property" , newType , orig . getField ( ) ) ; return new PropertyNode ( fieldNode , orig . getModifiers ( ) , orig . getGetterBlock ( ) , orig . getSetterBlock ( ) ) ; }
Creates a new PropertyNode for the JavaFX property based on the original property.  The new property
will have "Property" appended to its name and its type will be one of the *Property types in JavaFX.

@param orig The original property
@return A new PropertyNode for the JavaFX property