public static SwiftClassName FromFullyQualifiedName(string fullyQualifiedName, OperatorType oper, params char [] nesting) { string [] parts = Ex.ThrowOnNull(fullyQualifiedName, "fullyQualifiedName").Split('.'); if (parts.Length < 2) { throw new ArgumentException(String.Format("Fully qualified name '{0}' requires at least a module and one name.", fullyQualifiedName)); } if (nesting.Length != parts.Length - 1) { throw new ArgumentException(String.Format("Nesting should have {0} elements, but has {1}.", parts.Length - 1, nesting.Length), "nesting"); } SwiftName module = new SwiftName(parts [0], false); List <SwiftName> nestingNames = parts.Skip(1).Select(name => new SwiftName(name, false)).ToList(); List <MemberNesting> actualNesting = nesting.Select(c => Decomposer.ToMaybeMemberNesting(c, true).Value).ToList(); return(new SwiftClassName(module, actualNesting, nestingNames, oper)); }