public < U > Codec < U > get ( final Class < U > clazz ) { if ( hasCycles ( clazz ) ) { return new LazyCodec < U > ( registry , clazz ) ; } else { return registry . get ( new ChildCodecRegistry < U > ( this , clazz ) ) ; } }
Gets a Codec but if it detects a cyclic dependency return a LazyCodec which breaks the chain .