code: 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));
          }
      }
docs: Gets a Codec, but if it detects a cyclic dependency, return a LazyCodec which breaks the chain.