################################################################################
# Copyright (c) 2006, 2017 Obeo and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
#     Obeo - initial API and implementation
#     Philip Langer - progress reporting UML post-processor
################################################################################

profile.definition.changed = The definition of the profile has changed.
profile.definition.changed.on = The definition of the profile applied on {0} has changed.
UMLPostProcessor.monitor.applyManagedTypes = Analyzing UML differences in diff {0} of {1}...
UMLPostProcessor.monitor.fillRequiredDifferences = Analyzing UML dependencies in diff {0} of {1}...
UMLPostProcessor.monitor.fillImplications = Analyzing UML superset / subset relationships in diff {0} of {1}...