protected LazilyInitializedInfo clone(boolean cloneTypeNodes) {
LazilyInitializedInfo other = new LazilyInitializedInfo();
other.baseType = cloneType(baseType, cloneTypeNodes);
other.extendedInterfaces = cloneTypeList(extendedInterfaces, cloneTypeNodes);
other.implementedInterfaces = cloneTypeList(implementedInterfaces, cloneTypeNodes);
other.parameters = cloneTypeMap(parameters, cloneTypeNodes);
other.thrownTypes = cloneTypeList(thrownTypes, cloneTypeNodes);
other.templateTypeNames = templateTypeNames == null ? null
: new ArrayList<>(templateTypeNames);
other.disposedParameters = disposedParameters == null ? null
: new HashSet<>(disposedParameters);
other.typeTransformations = typeTransformations == null ? null
: new LinkedHashMap<>(typeTransformations);
other.description = description;
other.meaning = meaning;
other.deprecated = deprecated;
other.license = license;
other.suppressions = suppressions == null ? null : ImmutableSet.copyOf(suppressions);
other.modifies = modifies == null ? null : ImmutableSet.copyOf(modifies);
other.lendsName = cloneType(lendsName, cloneTypeNodes);
other.propertyBitField = propertyBitField;
return other;
}