public void getSignature(SourceWriter writer)
	{
		writer.printIndent();
		
		// process visibility
		if (this._visibility != null && this._visibility.length() > 0)
		{
			writer.print(this._visibility).print(" ");
		}
		
		if (this.getSuperClass() != Type.OBJECT_CLASS)
		{
			writer.print("type ").print(this.getName()).print(" extends ").println(this.getSuperClass().getName());
		}
		else
		{
			writer.print("type ").println(this.getName());
		}
		writer.printlnWithIndent("{").increaseIndent();
		
		if (this.hasConstructors())
		{
			// copy constructor list and sort
			List<Constructor> constructors = new ArrayList<Constructor>(this._constructors);
			
			SignatureUtils.sort(constructors);
			
			for (Constructor constructor : constructors)
			{
				constructor.getSignature(writer);
				writer.println();
			}
		}
		
		if (this.hasProperties())
		{
			// copy property list and sort
			List<Property> properties = new ArrayList<Property>(this._properties);
			
			SignatureUtils.sort(properties);
			
			for (Property property : properties)
			{
				property.getSignature(writer);
				writer.println();
			}
		}
		
		if (this.hasMethods())
		{
			// copy method list and sort
			List<Method> methods = new ArrayList<Method>(this._methods);
			
			SignatureUtils.sort(methods);
			
			for (Method method : methods)
			{
				method.getSignature(writer);
				writer.println();
			}
		}
		
		writer.decreaseIndent().printlnWithIndent("}");
	}