diff --git a/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/project/core/builder/ProjectBuildTask.java b/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/project/core/builder/ProjectBuildTask.java
index 25d0eee..ee6ac1b 100644
--- a/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/project/core/builder/ProjectBuildTask.java
+++ b/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/project/core/builder/ProjectBuildTask.java
@@ -90,7 +90,7 @@
 	
 	private final SourceUnitManager suManager= LtkModels.getSourceUnitManager();
 	
-	private final List<TSourceUnit> updatetSourceUnits;
+	private final List<TSourceUnit> updatedSourceUnits;
 	private final List<VirtualSourceUnit> removedFiles;
 	
 	private SubMonitor visitProgress= nonNullLateInit();
@@ -99,13 +99,13 @@
 	public ProjectBuildTask(final ProjectTaskBuilder<TProject, TSourceUnit, TParticipant> builder) {
 		super(builder);
 		
-		this.updatetSourceUnits= new ArrayList<>();
+		this.updatedSourceUnits= new ArrayList<>();
 		this.removedFiles= new ArrayList<>();
 	}
 	
 	private void dispose(final SubMonitor m) {
-		m.setWorkRemaining(this.updatetSourceUnits.size());
-		for (final var unit : this.updatetSourceUnits) {
+		m.setWorkRemaining(this.updatedSourceUnits.size());
+		for (final var unit : this.updatedSourceUnits) {
 			unit.disconnect(m.newChild(1));
 		}
 	}
@@ -216,7 +216,7 @@
 			final SourceUnit unit= this.suManager.getSourceUnit(
 					Ltk.PERSISTENCE_CONTEXT, file, contentType, true, m );
 			if (definition.getSourceUnitType().isInstance(unit)) {
-				this.updatetSourceUnits.add((TSourceUnit)unit);
+				this.updatedSourceUnits.add((TSourceUnit)unit);
 			}
 			else {
 				if (unit != null) {
@@ -258,7 +258,7 @@
 				10 + 10 );
 		
 		{	final SubMonitor m1= m.newChild(10);
-			int workRemaining= this.removedFiles.size() + this.updatetSourceUnits.size() * 5;
+			int workRemaining= this.removedFiles.size() + this.updatedSourceUnits.size() * 5;
 			for (final VirtualSourceUnit unit : this.removedFiles) {
 				m1.setWorkRemaining(workRemaining--);
 				try {
@@ -279,8 +279,8 @@
 				}
 			}
 			
-			if (!this.updatetSourceUnits.isEmpty()) {
-				for (final var sourceUnit : this.updatetSourceUnits) {
+			if (!this.updatedSourceUnits.isEmpty()) {
+				for (final var sourceUnit : this.updatedSourceUnits) {
 					m1.setWorkRemaining(workRemaining); workRemaining-= 5;
 					try {
 						final var participant= getParticipant(sourceUnit.getModelTypeId());
