Invoked when a component is being removed from the system and will no longer be used at all.
This unregisters the component and should free up any resources and parameter listeners.
Ideally after this method is called the object should be eligible for garbage collection.
Subclasses are generally expected to override this method to handle their particular
cleanup work. They should also generally call super.dispose() at the appropriate
time to perform the basic cleanup, which may need to happen either before or after cleaning
up other objects.