package br.com.objectos.code.pojo;

import com.squareup.javapoet.ClassName;
import com.squareup.javapoet.TypeVariableName;
import java.util.List;
import javax.annotation.Generated;

@Generated("br.com.objectos.auto.pojo.AutoPojoProcessor")
public interface NamingBuilder {
  NamingBuilderSuperClass superClass(ClassName superClass);

  interface NamingBuilderSuperClass {
    NamingBuilderPojo pojo(ClassName pojo);
  }

  interface NamingBuilderPojo {
    NamingBuilderBuilderInterface builderInterface(ClassName builderInterface);
  }

  interface NamingBuilderBuilderInterface {
    NamingBuilderBuilderClass builderClass(ClassName builderClass);
  }

  interface NamingBuilderBuilderClass {
    NamingBuilderTypeVariableNameList typeVariableNameList(TypeVariableName... elements);

    NamingBuilderTypeVariableNameList typeVariableNameList(List<TypeVariableName> typeVariableNameList);
  }

  interface NamingBuilderTypeVariableNameList {
    NamingBuilderTypeVariableNameRawList typeVariableNameRawList(TypeVariableName... elements);

    NamingBuilderTypeVariableNameRawList typeVariableNameRawList(List<TypeVariableName> typeVariableNameRawList);
  }

  interface NamingBuilderTypeVariableNameRawList {
    NamingBuilderTypeVariableNameUnboundedList typeVariableNameUnboundedList(TypeVariableName... elements);

    NamingBuilderTypeVariableNameUnboundedList typeVariableNameUnboundedList(List<TypeVariableName> typeVariableNameUnboundedList);
  }

  interface NamingBuilderTypeVariableNameUnboundedList {
    Naming build();
  }
}
