circular references in types parseable, however their construction is not convenient