private string ProcessResourceContainerXElement(NodeBuilder nodeBuilder, XElement elm, List <XNode> nodes, int index) { if (elm.Name.LocalName == "Resource") { var name = GetAttribute(elm, "name"); var condition = GetAttribute(elm, "condition"); var mode = GetAttribute(elm, "mode"); string val; if (!methodConfig.DocumentConfig.Resources.TryGetValue(name, out val)) { throw new InvalidOperationException($"'{name}' is not a valid property"); } var resource = methodConfig.Method.GetValue(val); switch (condition) { case "Stream": if (methodConfig.MethodType != MethodType.Stream) { return(string.Empty); } break; case "CancellationToken": if (!methodConfig.IsTokenInterface) { return(string.Empty); } break; case "none": break; default: throw new NotImplementedException($"Don't know how to handle resource for condition '{condition}'"); } switch (mode) { case "append": if (resource.StartsWith("<para/>")) { return(resource); } return(" " + resource); case "replace": nodeBuilder.Clear(); nodeBuilder.Continue = false; return(resource); default: throw new NotImplementedException(); } throw new NotImplementedException(); } else { throw new NotImplementedException(); } }