func NewDeclarativeEnvironment(outer Environment) *DeclarativeEnvironment {
	env := new(DeclarativeEnvironment)
	env.outer = outer
	env.bindings = make(map[string]*Binding)
	return env
}
NewDeclarativeEnvironment creates a new declarative environment with the
given outer environment. NewDeclarativeEnvironment is specified in 8.1.2.2.
package binding
import "github.com/gojisvm/gojis/internal/runtime/lang"
func GetIdentifierReference(env lang.InternalValue, n lang.String, strict bool) *Reference {
	if env == lang.Null {
		return NewReference(lang.NewStringOrSymbol(n), lang.Undefined, strict)
	}
	lex := env.(Environment)
	if lex.HasBinding(n) {
		return NewReference(lang.NewStringOrSymbol(n), lex, strict)
	}
	return GetIdentifierReference(lex.Outer(), n, strict)
}