All that work has only one purpose : make sure a Neo4jConnection could be considered as a valid GraphDatabaseService for ALL operations (including the ones requiring access to internal objects - like NodeManager).
Mind you, building a shaded jar with the exact correct set of class is not always easy.