public PropertyContractResolver RenameProperty([NotNull] Type type, [NotNull] String property, [NotNull] String name)
        {
            if (type is null)
            {
                throw new ArgumentNullException(nameof(type));
            }

            if (String.IsNullOrEmpty(property))
            {
                throw new ArgumentException(@"Value cannot be null or empty.", nameof(property));
            }

            if (String.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException(@"Value cannot be null or whitespace.", nameof(name));
            }

            if (!Rename.ContainsKey(type))
            {
                Rename[type] = new Dictionary <String, String>();
            }

            Rename[type][property] = name;

            return(this);
        }