OATH fornece objectos especiais, os acessores ( accessors), que se comportam como contentores heterogéneos. Um contentor deve ser entendido, neste contexto, como um objecto que realiza uma indirecção. Os contentores heterogéneos são mais gerais e flexíveis que as versões homogéneas e de uso mais natural. Esta generalidade requer, no entanto, a capacidade de determinação do tipo de um objecto depois de ter sido removido de um contentor.
Assim, os objectos não são acedidos directamente pelo código da aplicação. Podem apenas ser acedidos através de acessores. Para cada tipo existente na hierarquia, existe um outro que corresponde ao acessor apropriado para ele.
Os acessores podem ser comparados a smart references (referências inteligentes), por oposição aos smart pointers, porque embora apresentem uma semântica semelhante à dos ponteiros, utilizam . (não redefinível em C++), em lugar de ->, para aceder ao objecto encapsulado.
Os acessores podem ser usados como se fossem objectos, mas podem sofrer atribuições e ser passados como se fossem ponteiros. Podem ser inicializados com objectos OATH, sendo qualquer operação sobre um acessor aplicada directamente ao objecto, instância da hierarquia de tipos abstractos, que ele acede. No contexto dos acessores, e contrariamente ao que é habitual, devem entender-se tipos abstractos como aqueles que podem dar origem a objectos, i.e., aqueles que se podem instanciar para criação de objectos ``de dados''.
Ao contrário do que acontece com os smart pointers, as estruturas do OATH não exigem a redefinição dos operadores de indirecção.