Great questions:<p>1.  Very conservative (I hope).  As to exactly what this means, the specs are here:  <a href="http:&#x2F;&#x2F;robmoffat.github.io&#x2F;pure4j&#x2F;concordion&#x2F;org&#x2F;pure4j&#x2F;test&#x2F;checker&#x2F;spec&#x2F;Index.html" rel="nofollow">http:&#x2F;&#x2F;robmoffat.github.io&#x2F;pure4j&#x2F;concordion&#x2F;org&#x2F;pure4j&#x2F;test...</a><p>2.  Not the whole program, but &quot;islands of purity&quot;.  i.e. classes or hierarchies of classes which are annotated with @Pure&#x2F;@ImmutableValue&#x2F;@MutableUnshared (see above for what these mean, exactly).<p>3.  At compile time, it builds a model of your software by analysing the byte-code.  It should run in linear time I guess but I haven&#x27;t tried it on any huge codebases yet.   At runtime, the performance will be heavily dependent on the performance of the Clojure collections that I&#x27;ve imported.