follow Clojure LazySeq.java even more closely