func (t *Tree) Get(key string) interface{} {
	if key == "" {
		return t
	}
	comps, err := parseKey(key)
	if err != nil {
		return nil
	}
	return t.GetPath(comps)
}
Get the value at key in the Tree.
Key is a dot-separated path (e.g. a.b.c).
Returns nil if the path does not exist in the tree.
If keys is of length zero, the current tree is returned.
package toml
import (
	"errors"
	"fmt"
	"io"
	"os"
	"runtime"
	"strings"
)
type tomlValue struct {
	value    interface{}  
	position Position
}
type Tree struct {
	values   map[string]interface{}  
	position Position
}
func newTree() *Tree {
	return &Tree{
		values:   make(map[string]interface{}),
		position: Position{},
	}
}
func TreeFromMap(m map[string]interface{}) (*Tree, error) {
	result, err := toTree(m)
	if err != nil {
		return nil, err
	}
	return result.(*Tree), nil
}
func (t *Tree) Position() Position {
	return t.position
}
func (t *Tree) Has(key string) bool {
	if key == "" {
		return false
	}
	return t.HasPath(strings.Split(key, "."))
}
func (t *Tree) HasPath(keys []string) bool {
	return t.GetPath(keys) != nil
}
func (t *Tree) Keys() []string {
	keys := make([]string, len(t.values))
	i := 0
	for k := range t.values {
		keys[i] = k
		i++
	}
	return keys
}