Low-level classes that are used to abstract most details of stream I/O access from actual parsing classes. Input source abstraction is used to allow nested input necessary for proper entity expansion functionality.