/// <summary> /// Extracts a type from another type and returns the result of the operation. /// </summary> /// <param name="parameters">Parameters to the operation.</param> /// <returns>Result of the operation.</returns> public ExtractTypeResult ExtractType(ExtractTypeParameters parameters) { parameters.Validate(); var sourceType = parameters.SourceType; var result = new ExtractTypeResult(); sourceType.Accept(CreateVisitor(parameters, result)); if (result.Success) { if (parameters.AddTypeStrategy == AddTypeStrategy.AddAsNested) { sourceType.NestedTypes.Add(result.TargetType); } } return result; }