Documentation and use recursive structure in arbitrary.