package xsbti.api;

import java.util.Arrays;
import java.util.List;
public class ClassLike extends ParameterizedDefinition 
{
	public ClassLike(DefinitionType definitionType, Lazy<Type> selfType, Lazy<Structure> structure, String[] savedAnnotations, TypeParameter[] typeParameters, String name, Access access, Modifiers modifiers, Annotation[] annotations)
	{
		super(typeParameters, name, access, modifiers, annotations);
		this.definitionType = definitionType;
		this.selfType = selfType;
		this.structure = structure;
		this.savedAnnotations = savedAnnotations;
	}
	private final DefinitionType definitionType;
	private final Lazy<Type> selfType;
	private final Lazy<Structure> structure;
	private final String[] savedAnnotations;
	public final DefinitionType definitionType()
	{
		return definitionType;
	}
	public final Type selfType()
	{
		return selfType.get();
	}
	public final Structure structure()
	{
		return structure.get();
	}
	public final String[] savedAnnotations()
	{
		return savedAnnotations;
	}
	public String toString()
	{
		return "ClassLike(" + "definitionType: " + definitionType() + ", " + "selfType: " + selfType() + ", " + "structure: " + structure() + ", " + "savedAnnotations: " + Arrays.toString(savedAnnotations()) + ", " + "typeParameters: " + Arrays.toString(typeParameters()) + ", " + "name: " + name() + ", " + "access: " + access() + ", " + "modifiers: " + modifiers() + ", " + "annotations: " + Arrays.toString(annotations())+ ")";
	}
}