#**##parse("$lang/default:classDiag/class/import.vm" )
#**##set( $opComment = "class $name" )
#**##if( $class.hasKeyInStereotypes("enum") )
#*   *#public enum $name##
#*   *##foreach( $generalization in $class.iteratorOfRevSubclass() )
#*      *##if( !$enumImplementsPrinted )
#*         *# implements ##
#*         *##set( $enumImplementsPrinted = true )
#*      *##else
#*         *#, ##
#*      *##end
#*      *#$!{generalization.getSuperclass().Name}##
#*   *##end
#*   *# {
#*   *#$!children;
#*   *#}
#**##else
#*   *##set( $children = $utility.indent("   ",$!children) )
#*   *### Begin JavaBean stuff
#*   *##set( $declareJavaBean = $utility.isJavaBean($class) )
#*   *###this has to come before checking the interfaces!
#*   *##set( $implementJavaBean = ($declareJavaBean && !$utility.isJavaBean($superClass) && !$interface))
#*   *###check the interfaces
#*   *##foreach( $superInterface in $class.iteratorOfSuperClasses() )
#*      *##if ( $utility.isJavaBean($superInterface) )
#*         *##set( $declareJavaBean = false )
#*      *##end
#*   *##end
#*   *##if ($declareJavaBean)
#*      *##set( $return = $imports.addToImports("de.upb.tools.pcs.PropertyChangeClient") )
#*   *##end
#*   *##if ($implementJavaBean)
#*      *##set( $return = $imports.addToImports("java.beans.PropertyChangeSupport") )
#*      *##set( $return = $imports.addToImports("java.beans.PropertyChangeListener") )
#*   *##end
#*   *### End JavaBean stuff
#*   *##if( $interface )
#*      *##set( $extendsClause = "extends" )
#*   *##else
#*      *##set( $extendsClause = "implements" )
#*   *##end
#*   *###
#*   *##if ( $comment )
#*      *##if( $parsed )
#*         *#$comment
#*      *##elseif( $comment )
#*         *#/**
#*         *#$!comment
#*         *# **/
#*      *##end
#*   *##end
#*   *#$visibility ##
#**##if( $abstract && !$interface )abstract #end##
#**##if( $static )static #end##
#**##if( $final )final #end##
#**##if( $strictfp && !$interface )strictfp #end##
#*   *##if( $interface )
#*      *#interface ##
#*   *##else
#*      *#class ##
#*   *##end
#*   *#$name##
#*   *### parameters, if any
#*   *##foreach($includedClass in $class.iteratorOfDeclares() )
#*      *##if( $includedClass.hasKeyInStereotypes("parameter") )
#*         *##set($containsParameter = true )
#*         *##if(!$firstParam)
#*            *##set($firstParam = true)
#*            *#<##
#*         *##else
#*            *#,##
#*         *##end
#*         *#$includedClass.Name##
#*      *##end
#*      *##if($containsParameter)
#*         *#>##
#*      *##end
#*   *##end
#*   *##if( $superClass && $utility.isInConfiguration($superClass)  && !$interface )
#*      *# extends $superClass.Name##
#*      *### the generalization's name contains parameters, if any
#*      *##foreach( $generalization in $class.iteratorOfRevSubclass() )
#*         *##if( !$match && (${generalization.getSuperclass()} == $superClass ) )
#*            *##set( $match = true )
#*            *#$!{generalization.Name}##
#*         *##end
#*      *##end
#*   *##end
#*   *###
#*   *##if ($declareJavaBean)
#*      *#	$extendsClause PropertyChangeClient##
#*      *#	#set( $firstClass = false ) 
#*   *##else
#*      *#	#set( $firstClass = true )
#*   *##end
#*   *###
#*   *##if ($class.statechart)
#*      *##if ( $firstClass )
#*         *# $extendsClause HasFReactive##
#*         *##set( $firstClass = false )
#*      *##else
#*         *#, HasFReactive##
#*      *##end
#*   *##end
#*   *###
#*   *##foreach( $generalization in $class.iteratorOfRevSubclass() )
#*      *### add imports for superclasses
#*      *##set( $superInterface = $generalization.getSuperclass() )
#*      *##set( $classToImport = $superInterface )
#*      *##if ( ${classToImport.InheritedCodeStyle} )#set( $importStyle = "$lang/${classToImport.InheritedCodeStyle.Name}:" )
#*      *##else#set( $importStyle = "$lang/default:" )#end
#*         *##parse("$!{importStyle}classDiag/class/addClassImport.vm" )
#*         *##if( $utility.isInterface($superInterface) )
#*            *##if( $firstClass )
#*               *# $extendsClause ##
#*               *##set( $firstClass = false )
#*            *##else
#*               *#, ##
#*            *##end
#*            *### the generalization's name contains parameters, if any
#*            *#$superInterface.Name$!{generalization.Name}##
#*         *##end
#*      *##end
#*      *###
#*      *#{
#*      *##parse("$!{style}classDiag/class/constructor.vm" )
#*      *##if ($implementJavaBean)
#*         *#	protected final PropertyChangeSupport listeners = new PropertyChangeSupport(this);
#*         *#
#*         *#	public void addPropertyChangeListener(PropertyChangeListener listener)
#*         *#	{
#*         *#		getPropertyChangeSupport().addPropertyChangeListener(listener);
#*         *#	}
#*         *#
#*         *#	public void removePropertyChangeListener(PropertyChangeListener listener)
#*         *#	{
#*         *#		getPropertyChangeSupport().removePropertyChangeListener(listener);
#*         *#	}
#*         *#
#*         *#	public void addPropertyChangeListener(String property, PropertyChangeListener listener)
#*         *#	{
#*         *#		getPropertyChangeSupport().addPropertyChangeListener(property, listener);
#*         *#	}
#*         *#
#*         *#	public void removePropertyChangeListener(String property, PropertyChangeListener listener)
#*         *#	{
#*         *#		getPropertyChangeSupport().removePropertyChangeListener(property, listener);
#*         *#	}
#*         *#
#*         *#	public PropertyChangeSupport getPropertyChangeSupport()
#*         *#	{
#*         *#		return listeners;
#*         *#	}
#*         *#
#*      *##end
#*      *###
#*      *#$!children
#*      *##if( $statechart )
#*         *#
#*         *#$statechart
#*         *#
#*      *##end
#*      *##parse("$!{style}classDiag/class/destructor.vm" )
#*      *#}
#*   *##end