update the set of listeners based on the given event . the default implementation just removes all listeners , and then re-initialises completely - this is method 1 . a more efficient way would be to dissect the propertychangeevent , and only adapt the listeners that need to be adapted - this is method 2 . method 2 is explained by the code below that is commented out . method 1 is the easiest to implement , since at every arrival of an event , we just remove all old listeners , and then inspect the current model , and add listeners where we need them . i.e. the advantage is that we only need to traverse the model structure in one location , i.e. the initialiselistener method . concode_field_sep Logger LOG concode_elem_sep Collection<Object[]> listeners concode_field_sep String getParsingHelp concode_elem_sep boolean isValue concode_elem_sep void removeElementListener concode_elem_sep void cleanListener concode_elem_sep void addElementListener concode_elem_sep void addElementListener concode_elem_sep void addElementListener concode_elem_sep void removeAllElementListeners concode_elem_sep String toString concode_elem_sep void parse concode_elem_sep void initialiseListener