diff --git a/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/model/core/impl/BasicSourceModelStamp.java b/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/model/core/impl/BasicSourceModelStamp.java
index 66f0601..4b17405 100644
--- a/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/model/core/impl/BasicSourceModelStamp.java
+++ b/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/model/core/impl/BasicSourceModelStamp.java
@@ -14,8 +14,13 @@
 
 package org.eclipse.statet.ltk.model.core.impl;
 
+import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
+
+import org.eclipse.statet.jcommons.collections.ImCollections;
+import org.eclipse.statet.jcommons.collections.ImList;
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
+import org.eclipse.statet.jcommons.lang.ObjectUtils.ToStringBuilder;
 
 import org.eclipse.statet.ltk.core.SourceModelStamp;
 
@@ -26,9 +31,18 @@
 	
 	private final long sourceStamp;
 	
+	private final ImList<Object> sourceConfigs;
+	
+	
+	public BasicSourceModelStamp(final long sourceStamp,
+			final ImList<Object> sourceConfigs) {
+		this.sourceStamp= sourceStamp;
+		this.sourceConfigs= nonNullAssert(sourceConfigs);
+	}
 	
 	public BasicSourceModelStamp(final long sourceStamp) {
 		this.sourceStamp= sourceStamp;
+		this.sourceConfigs= ImCollections.emptyList();
 	}
 	
 	
@@ -40,14 +54,28 @@
 	
 	@Override
 	public int hashCode() {
-		return (int) (this.sourceStamp ^ (this.sourceStamp >>> 32));
+		int h= (int)(this.sourceStamp ^ (this.sourceStamp >>> 32));
+		h= 31 * h + this.sourceConfigs.hashCode();
+		return h;
 	}
 	
 	@Override
-	public boolean equals(final @Nullable Object other) {
-		return (other instanceof SourceModelStamp
-				&& getClass() == other.getClass()
-				&& this.sourceStamp == ((SourceModelStamp)other).getContentStamp() );
+	public boolean equals(final @Nullable Object obj) {
+		if (obj instanceof BasicSourceModelStamp
+				&& getClass() == obj.getClass() ) {
+			final var other= (BasicSourceModelStamp)obj;
+			return (this.sourceStamp == other.sourceStamp
+					&& this.sourceConfigs.equals(other.sourceConfigs) );
+		}
+		return false;
+	}
+	
+	@Override
+	public String toString() {
+		final var sb= new ToStringBuilder(BasicSourceModelStamp.class);
+		sb.append(' ', this.sourceStamp);
+		sb.addProp("sourceConfigs", this.sourceConfigs); //$NON-NLS-1$
+		return sb.toString();
 	}
 	
 }
