public ReadResults Parse(IStringReader reader, DispatcherResources resources, out Component result)
        {
            result = default;
            if (!reader.CanRead())
            {
                return(ReadResults.Failure(CommandError.IncorrectArgument().WithContext(reader)));
            }
            int start = reader.GetCursor();

            ReadResults readResults = new JsonReader(reader).ReadAny(out IJsonArgument json);

            if (!readResults.Successful)
            {
                return(readResults);
            }
            result = new Component(json);
            return(new ComponentReader(reader, start, resources).ValidateFromRoot(json, resources.Components));
        }