#**##parse("java/default:classDiag/class/import.vm" )
#**##if( $superClass )
#*   *##set( $return = $imports.addToImports($superClass.FullClassName) )
#**##end
#**##foreach( $superInterface in $class.iteratorOfSuperClasses() )
#*   *##set( $return = $imports.addToImports($superInterface.FullClassName) )
#**##end
#**##*
#**#  Begin JavaBean stuff
#**#*#
#**##set( $declareJavaBean = $isJavaBean && !$utility.isJavaBean($superClass) )
#**###this has to come before checking the interfaces!
#**##set( $implementJavaBean = ($declareJavaBean && !$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 ( $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##
#**##if( $superClass  && !$interface )
#*   *# extends $superClass.Name##
#**##end
#**##if ($declareJavaBean)
#*   *##if( $interface )
#*      *# extends ##
#*   *##else
#*      *# implements ##
#*   *##end
#*   *#PropertyChangeClient##
#*   *##set( $firstClass = false )
#**##else
#*   *##set( $firstClass = true )
#**##end
#**###
#**##foreach( $superInterface in $class.iteratorOfSuperClasses() )
#*   *##if( $utility.isInterface($superInterface) )
#*      *##if( $firstClass )
#*         *##if( $interface )
#*            *# extends ##
#*         *##else
#*            *# implements ##
#*         *##end
#*         *##set( $firstClass = false )
#*      *##else
#*         *#, ##
#*      *##end
#*      *#$superInterface.Name##
#*   *##end
#**##end
#**#
#**#{
#**#
#**#   public $name(boolean writeToSimulink)
#**#   {
#**#      super(writeToSimulink ? prototypename : null);
#**#   }
#**#   
#**#   public $name()
#**#   {
#**#      this(true);
#**#   }   
#**#   
#**##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
#**##if( $removeYou || !$superClass || $superClass.hasKeyInStereotypes("reference") )
#*   *#   public void removeYou()##
#*   *##if ( $interface )
#*      *#;
#*   *##else
#*      *#   {
#*      *#$!removeYou##
#*      *##if( $superClass && !$superClass.hasKeyInStereotypes("reference") ) ##FIX ME: check removeYou() exists!
#*         *#     super.removeYou();
#*      *##end
#*      *#   }
#*   *##end
#**##end
#**#}
