Upon inspecting the implementation of ChainReaderHelper.getAssembledReader(), it appears that external FilterReaders are not treated the same as the internal FilterReaders such as HeadFilter.
This is because external FilterReaders are always instantiated and initialized every time by ChainReaderHelper.getAssembledReader(), while internal FilterReaders just have their chain() method called. The reason this is an issue for me is that this means that external FilterReaders can't benefit from a one-time initialization, even if they implement the ChainableReader interface. Further, because FilterChain has explicit add<filtername>() methods, adding external FilterReader types to org/apache/ant/types/defaults.properties won't allow you to treat external FilterReaders as internal FilterReaders as is the case with Tasks. Why is this the case? Before I look into writing a patch, I would like to know if anyone is already looking into this. Thanks! didge