@Value.Lazy
	public NameForms typeWith() {
		String simple, relative;

		if (protoclass().kind().isNested()
				|| protoclass().kind() == Protoclass.Kind.DEFINED_NESTED_RECORD) {
			String enclosingSimpleName = typeImmutableEnclosingSimpleName();
			simple = names().typeWith();
			relative = inPackage(enclosingSimpleName, simple);
		} else if (hasImmutableInBuilder()) {
			simple = names().typeWith();
			relative = inPackage(typeBuilderSimpleName(), simple);
		} else {
			simple = names().typeWith();
			relative = inPackage(simple);
		}

		return ImmutableConstitution.NameForms.builder()
				.simple(simple)
				.relativeRaw(relative)
				.genericArgs(generics().args())
				.packageOf(implementationPackage())
				.visibility(implementationVisibility())
				.build();
	}
Walks to the enclosing type's simple names and applies naming convention.
This shortcut/fix shows deficiency of model (it's probably more complicated than needed).
@return enclosing immutable name
value-processor/src/org/immutables/value/processor/meta/Constitution.java