public override void Process(IReflector reflector, Type type, IMethodRemover methodRemover, ISpecificationBuilder specification) {
            var facets = new List<IFacet>();
            var namedFacet = specification.GetFacet<INamedFacet>();
            if (namedFacet == null) {
                namedFacet = new NamedFacetInferred(type.Name, specification);
                facets.Add(namedFacet);
            }

            var pluralFacet = specification.GetFacet<IPluralFacet>();
            if (pluralFacet == null) {
                string pluralName = NameUtils.PluralName(namedFacet.NaturalName);
                pluralFacet = new PluralFacetInferred(pluralName, specification);
                facets.Add(pluralFacet);
            }

            FacetUtils.AddFacets(facets);
        }
        public override void ProcessParams(IReflector reflector, MethodInfo method, int paramNum, ISpecificationBuilder holder) {
            var facets = new List<IFacet>();

            var param = holder as IActionParameterSpecImmutable;
            if (param != null) {
                string name = method.GetParameters()[paramNum].Name ?? method.GetParameters()[paramNum].ParameterType.FullName;
                INamedFacet namedFacet = new NamedFacetInferred(name, holder);
                facets.Add(namedFacet);
                facets.Add(new DescribedAsFacetNone(holder));
                facets.Add(new MultiLineFacetNone(holder));
                facets.Add(new MaxLengthFacetZero(holder));
                facets.Add(new TypicalLengthFacetZero(holder));
                DefaultTypicalLength(facets, param.Specification, param);
            }

            FacetUtils.AddFacets(facets);
        }