func (a Array) Get(path Path) (Value, error) {
	return path.evaluate(a)
}
Get returns value(s) from an array as addressed by the given path expression.
See Map.Get for details.
package data
import (
	"bytes"
	"encoding/json"
	"fmt"
	"time"
)
type Array []Value
func (a Array) Type() TypeID {
	return TypeArray
}
func (a Array) asBool() (bool, error) {
	return false, castError(a.Type(), TypeBool)
}
func (a Array) asInt() (int64, error) {
	return 0, castError(a.Type(), TypeInt)
}
func (a Array) asFloat() (float64, error) {
	return 0, castError(a.Type(), TypeFloat)
}
func (a Array) asString() (string, error) {
	return "", castError(a.Type(), TypeString)
}
func (a Array) asBlob() ([]byte, error) {
	return nil, castError(a.Type(), TypeBlob)
}
func (a Array) asTimestamp() (time.Time, error) {
	return time.Time{}, castError(a.Type(), TypeTimestamp)
}
func (a Array) asArray() (Array, error) {
	return a, nil
}
func (a Array) asMap() (Map, error) {
	return nil, castError(a.Type(), TypeMap)
}
func (a Array) clone() Value {
	return a.Copy()
}
func (a Array) String() string {
	bytes, err := json.Marshal(a)
	if err != nil {
		return fmt.Sprintf("(unserializable array: %v)", err)
	}
	return string(bytes)
}
func (a *Array) UnmarshalJSON(data []byte) error {
	var j []interface{}
	dec := json.NewDecoder(bytes.NewReader(data))
	dec.UseNumber()
	if err := dec.Decode(&j); err != nil {
		return err
	}
	newArray, err := NewArray(j)
	if err != nil {
		return err
	}
	*a = newArray
	return nil
}
func (a Array) Copy() Array {
	out := make(Array, len(a))
	for idx, val := range a {
		out[idx] = val.clone()
	}
	return out
}