public bool Equals(ModulesConfiguration mc)
        {
            // If parameter is null, return false.
            if (Object.ReferenceEquals(mc, null)) return false;

            // Optimization for a common success case.
            if (Object.ReferenceEquals(this, mc)) return true;

            // If types are different, instances can't be equal
            if (this.GetType() != mc.GetType()) return false;

            // finally let equality be determined by IDs.
            return (
                (mc.AcquisitionModule.ModuleID == this.AcquisitionModule.ModuleID) &&
                (mc.PointerModule.ModuleID == this.PointerModule.ModuleID) &&
                (mc.TransformationModule.ModuleID == this.TransformationModule.ModuleID) &&
                (mc.OutputModule.ModuleID == this.OutputModule.ModuleID)
                );
        }