public boolean addGetterSetter( JavaClass jclass, Element root, String varName, String property, int finalType ){
		String propName = root.getAttribute( PROPERTY_ATTR ).trim();
		if( propName.length() > 0 ){
			int type = STRING_TYPE;
			if( propName.endsWith("#") ){
				propName = propName.substring(0, propName.length() - 1); 
				type = INTEGER_TYPE;
			}
			else if( propName.endsWith("%") ){
				propName = propName.substring(0, propName.length() - 1); 
				type = BOOLEAN_TYPE;
			}
			else if( propName.endsWith("$") ){
				propName = propName.substring(0, propName.length() - 1); 
				type = STRING_TYPE;
			}
			else {
				type = finalType & STRING_TYPE;
				if( type == 0 ){
					type = finalType & INTEGER_TYPE;
				}
				if( type == 0 ){
					type = finalType & BOOLEAN_TYPE;
				}
			}
			
			JavaMethod getter = null;
			JavaMethod setter = null;
			String setterClassName = null;
			switch( type ){
			case STRING_TYPE :
				getter = new JavaMethod("get" + capitalizeFirst(propName));
				getter.setReturnType( new JavaType("String", JavaType.PUBLIC ));
				getter.addCode("return " + varName + ".get" + capitalizeFirst(property) + "();");
				setter = new JavaMethod("set" + capitalizeFirst(propName), new JavaParam("in", new JavaType("String", 0)));
				// setter.addCode(varName + ".set" + capitalizeFirst(property) + "(in);");
				setterClassName = createRunnable( jclass, varName, propName, "String");
				jclass.addImport(SwingUtilities.class);
				setter.addCall("SwingUtilities.invokeLater", "new " + setterClassName + "(in)" );
				break;
			case BOOLEAN_TYPE :
				getter = new JavaMethod("is" + capitalizeFirst(propName));
				getter.setReturnType( new JavaType("boolean", JavaType.PUBLIC ));
				getter.addCode("return " + varName + ".get" + capitalizeFirst(property) + "();");
				setter = new JavaMethod("set" + capitalizeFirst(propName), new JavaParam("in", new JavaType("boolean", 0)));
				setter.addCode(varName + ".set" + capitalizeFirst(property) + "(in);");
//				setterClassName = createRunnable( jclass, varName, propName, "boolean");
//				jclass.addImport(SwingUtilities.class);
//				setter.addCall("SwingUtilities.invokeLater", "new " + setterClassName + "(in)" );
				break;
			case INTEGER_TYPE :
				getter = new JavaMethod("get" + capitalizeFirst(propName));
				getter.setReturnType( new JavaType("int", JavaType.PUBLIC ));
				getter.addCode("return Integer.parseInt(" + varName + ".get" + capitalizeFirst(property) + "());");
				setter = new JavaMethod("set" + capitalizeFirst(propName), new JavaParam("in", new JavaType("int", 0)));
				// setter.addCode(varName + ".set" + capitalizeFirst(property) + "(String.valueOf(in));");
				setterClassName = createRunnable( jclass, varName, propName, "int");
				jclass.addImport(SwingUtilities.class);
				setter.addCall("SwingUtilities.invokeLater", "new " + setterClassName + "(in)" );
				break;
			default :
				throw new IllegalArgumentException("Property does not support the requested type.");
			}
			jclass.addMethod(getter);
			jclass.addMethod(setter);
			return true;
		}
		return false;
	}