change `ITreeConstraint` into marker interface