/// <summary>
        /// Processes the registry interface document.
        /// </summary>
        /// <param name="dataLocation">
        /// The data location.
        /// </param>
        /// <param name="registryMessage">
        /// The registry message type.
        /// </param>
        /// <param name="schemaVersion">
        /// The schema version type.
        /// </param>
        /// <returns>
        /// The <see cref="ISdmxObjects"/>.
        /// </returns>
        private ISdmxObjects ProcessRegistryInterfaceDocument(IReadableDataLocation dataLocation, RegistryMessageType registryMessage, SdmxSchemaEnumType schemaVersion)
        {
            ArtifactType artifactType = registryMessage.ArtifactType;
            ISdmxObjects returnBeans = new SdmxObjectsImpl();
            switch (artifactType)
            {
                case ArtifactType.Provision:
                    returnBeans.AddIdentifiables(_provisionParsingManager.ParseXML(dataLocation));
                    break;
                case ArtifactType.Registration:
                    foreach (IRegistrationInformation regInfo in _registrationParsingManager.ParseRegXML(dataLocation))
                        returnBeans.AddRegistration(regInfo.Registration);
                    break;
                case ArtifactType.Structure:
                        switch (schemaVersion)
                        {
                            case SdmxSchemaEnumType.VersionTwo:
                                RegistryInterface rid;
                                using (Stream inputStream = dataLocation.InputStream)
                                {
                                    using (XmlReader reader = XMLParser.CreateSdmxMlReader(inputStream, schemaVersion))
                                    {
                                        rid = RegistryInterface.Load(reader);
                                    }
                                }
                                return _sdmxBeansBuilder.Build(rid);
                            case SdmxSchemaEnumType.VersionTwoPointOne:
                                Org.Sdmx.Resources.SdmxMl.Schemas.V21.Message.RegistryInterface rid2_1;
                                using (Stream inputStream = dataLocation.InputStream)
                                {
                                    using (XmlReader reader = XMLParser.CreateSdmxMlReader(inputStream, schemaVersion))
                                    {
                                        rid2_1 = Org.Sdmx.Resources.SdmxMl.Schemas.V21.Message.RegistryInterface.Load(reader);
                                    }
                                }
                                return _sdmxBeansBuilder.Build(rid2_1);
                            default:
                                throw new ArgumentException("Schema version unsupported for RegistryInterfaceDocument: " + schemaVersion.ToString());
                        }

                case ArtifactType.Subscription:
                    returnBeans.AddIdentifiables(_subscriptionParsingManager.ParseSubscriptionXML(dataLocation));
                    break;
                default:
                    throw new SdmxNotImplementedException("StructureParsingManager does not support message of type : " + registryMessage.EnumType.ToString());
            }
            return returnBeans;
        }