code: void removeHandler( Object handlerRegistration )
  	{
  		// Through object's interface implementation
  		if( handlerRegistration instanceof DirectHandlerInfo )
  		{
  			DirectHandlerInfo info = (DirectHandlerInfo) handlerRegistration;
  			info.source.removePropertyChangedHandler( info.registrationObject );
  			return;
  		}
  		
  		if( ! ( handlerRegistration instanceof HandlerInfo ) )
  			return;
  		
  		HandlerInfo info = (HandlerInfo) handlerRegistration;
  	
  		HashMap<String, ArrayList<PropertyChangedHandler>> handlersMap = PlatformSpecificProvider.get().getObjectMetadata( info.source );
  		if( handlersMap == null )
  			return;
  	
  		ArrayList<PropertyChangedHandler> handlerList = handlersMap.get( info.propertyName );
  		if( handlerList == null )
  			return;
  	
  		handlerList.remove( info.handler );
  	
  		if( handlerList.isEmpty() )
  			handlersMap.remove( info.propertyName );
  	
  		if( handlersMap.isEmpty() )
  			PlatformSpecificProvider.get().setObjectMetadata( info.source, null );
  		
  		stats.statsRemovedRegistration( info );
  	
  		info.handler = null;
  		info.propertyName = null;
  		info.source = null;
  	}
docs: Unregisters a handler, freeing associated resources
  
  @param handlerRegistration The object received after a call to {@link PropertyChanges}