generic immutable recursive data representation API targeted at source code models and more