code: protected ComponentModel getComponentModel() {
  		UIContext effectiveContext = UIContextHolder.getCurrent();
  
  		if (effectiveContext == null) {
  			return sharedModel;
  		} else {
  			ComponentModel model = (ComponentModel) effectiveContext.getModel(this);
  
  			if (model == null) {
  				return sharedModel;
  			} else if (model.getSharedModel() == null) {
  				// The reference to the sharedModel has disappeared,
  				// probably due to session serialization
  				model.setSharedModel(sharedModel);
  			}
  
  			return model;
  		}
  	}
docs: Returns the effective component model for this component. Subclass may override this method to narrow the return
  type to their specific model type.
  
  @return the effective component model