public IOdbList<Field> removeUnnecessaryFields(String className,  IOdbList<Field> fields) {
		IOdbList<Field> fieldsToRemove = new OdbArrayList<Field>(fields.size());
		Map<String, Boolean> behaviors = null;
		Boolean forceBehavior = null;
		// Remove fields
		for (int i = 0; i < fields.size(); i++) {
			Field field = fields.get(i);
			behaviors = attributeBehavior.get(field.getDeclaringClass().getName());
			
			 if(behaviors==null){
				 forceBehavior = null;
			 }else{
				 forceBehavior = behaviors.get(field.getName());
			 }

			// Remove transient and fields
			if (Modifier.isTransient(field.getModifiers()) || Modifier.isStatic(field.getModifiers())) {
				// Check if default behavior has been overriden
				if(forceBehavior==null || !forceBehavior.booleanValue()){
					fieldsToRemove.add(field);
				}
			}
			
			// User asked to remove this field from persisted fields
			if(forceBehavior!=null && !forceBehavior.booleanValue()){
				fieldsToRemove.add(field);
			}
			// Remove inner class fields
			if (field.getName().startsWith("this$")) {
				fieldsToRemove.add(field);
			}
		}

		fields.removeAll(fieldsToRemove);
		return fields;
	}