func (k *Key) AddShadow(val string) error {
	if !k.s.f.options.AllowShadows {
		return errors.New("shadow key is not allowed")
	}
	return k.addShadow(val)
}
AddShadow adds a new shadow key to itself.
package ini
import (
	"errors"
	"fmt"
	"strconv"
	"strings"
	"time"
)
type Key struct {
	s               *Section
	name            string
	value           string
	isAutoIncrement bool
	isBooleanType   bool
	isShadow bool
	shadows  []*Key
	Comment string
}
func newKey(s *Section, name, val string) *Key {
	return &Key{
		s:     s,
		name:  name,
		value: val,
	}
}
func (k *Key) addShadow(val string) error {
	if k.isShadow {
		return errors.New("cannot add shadow to another shadow key")
	} else if k.isAutoIncrement || k.isBooleanType {
		return errors.New("cannot add shadow to auto-increment or boolean key")
	}
	shadow := newKey(k.s, k.name, val)
	shadow.isShadow = true
	k.shadows = append(k.shadows, shadow)
	return nil
}