private AppliedNameForms applyFactoryNaming(Naming naming) {
		String raw = names().raw;

		boolean hasForwardingFactoryMethods = isImplementationHidden()
				&& protoclass().kind().isNested();

		NameForms nameForms = hasForwardingFactoryMethods
				? typeEnclosingFactory()
				: typeImmutable();

		if (hasForwardingFactoryMethods) {
			naming = naming.requireNonConstant(Preference.PREFIX);
		}

		String applyName = Naming.Usage.LOWERIZED.apply(naming.apply(raw));

		return nameForms.applied(applyName);
	}
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