Include extra Java files in a project

Will be used to declare implement new Activities and sub classes like Listeners.
Il faudrait une façon de factoriser le code de base des annotations. De façon général c'est difficile, mais presque toutes mes annotions sont semblables: un pseudo appel de méthode qui prend que des strings et qui est attaché au `ModuleDecl`.

Voici le code répétitif présent dans presque toutes mes annotations:
~~~~
	# Skip if we are not interested
 +		var annot_name = "extra_java_files"
 +		if nat.n_atid.n_id.text != annot_name then return
 +
 +		# Do some validity checks and print errors if the annotation is used incorrectly
 +		var modelbuilder = toolcontext.modelbuilder
 +
 +		if not nmoduledecl isa AModuledecl then
 +			modelbuilder.error(nat, "Syntax error: only the declaration of modules may use \"{annot_name}\".")
 +			return
 +		end
 +
 +		var args = nat.n_args
 +		if args.is_empty then
 +			modelbuilder.error(nat, "Syntax error: \"{annot_name}\" expects at least one argument.")
 +			return
 +		end
 +
 +		# retreive module
 +		var nmodule = nmoduledecl.parent.as(AModule)
 +		var mmodule = nmodule.mmodule.as(not null)
 +		var java_files = mmodule.extra_java_files
 +		if java_files == null then
 +			java_files = new Array[JavaFile]
 +			mmodule.extra_java_files = java_files
 +		end
 +
 +		var format_error = "Syntax error: \"{annot_name}\" expects its arguments to be paths to java files."
 +		for arg in args do
 +			if not arg isa AExprAtArg then
 +				modelbuilder.error(nat, format_error)
 +				return
 +			end
 +
 +			var expr = arg.n_expr
 +			if not expr isa AStringFormExpr then
 +				modelbuilder.error(nat, format_error)
 +				return
 +			end
 +
 +			var path = expr.value
 +			assert path != null
~~~~