private static IStructuralSearchPattern CreatePattern(int forwardersCount) { string patternFragment; TypePlaceholder[] forwarderPlaceholders = CreateForwarderPlaceholders(forwardersCount, out patternFragment); string patternText = forwarderPlaceholders.Length == 0 ? "$component$.For<$service$>()" : string.Format("$component$.For<$service$, {0}>()", patternFragment); var pattern = new CSharpStructuralSearchPattern(patternText, new ExpressionPlaceholder("component", "Castle.MicroKernel.Registration.Component"), new TypePlaceholder("service")); foreach (TypePlaceholder placeholder in forwarderPlaceholders) { pattern.Placeholders[placeholder.Name] = placeholder; } return pattern; }