func (n *Node) UnmarshalJSON(b []byte) error {
	dec := json.NewDecoder(bytes.NewReader(b))
	dec.UseNumber()
	// We'll just go from start brace to end brace
	if t, err := dec.Token(); err != nil {
		return err
	} else if t != json.Delim('{') {
		return fmt.Errorf("Unexpected token %v", t)
	}
	n.Values = map[string]Value{}
	for {
		if key, err := dec.Token(); err != nil {
			return err
		} else if key == json.Delim('}') {
			return nil
		} else if keyStr, ok := key.(string); !ok {
			return fmt.Errorf("Unrecognized token %v", key)
		} else if keyStr == "_" {
			if err = dec.Decode(&n.Metadata); err != nil {
				return fmt.Errorf("Failed unmarshaling metadata: %v", err)
			}
		} else if val, err := dec.Token(); err != nil {
			return err
		} else if n.Values[keyStr], err = ValueDecodeJSON(val, dec); err != nil {
			return err
		}
	}
}
// UnmarshalJSON implements encoding/json.Unmarshaler for Node.
UnmarshalJSON implements encoding/json.Unmarshaler for Node.
// UnmarshalJSON implements encoding / json . Unmarshaler for Node .
func (n *Node) UnmarshalJSON(b []byte) error {
	dec := json.NewDecoder(bytes.NewReader(b))
	dec.UseNumber()
	if t, err := dec.Token(); err != nil {
		return err
	} else if t != json.Delim('{') {
		return fmt.Errorf("Unexpected token %v", t)
	}
	n.Values = map[string]Value{}
	for {
		if key, err := dec.Token(); err != nil {
			return err
		} else if key == json.Delim('}') {
			return nil
		} else if keyStr, ok := key.(string); !ok {
			return fmt.Errorf("Unrecognized token %v", key)
		} else if keyStr == "_" {
			if err = dec.Decode(&n.Metadata); err != nil {
				return fmt.Errorf("Failed unmarshaling metadata: %v", err)
			}
		} else if val, err := dec.Token(); err != nil {
			return err
		} else if n.Values[keyStr], err = ValueDecodeJSON(val, dec); err != nil {
			return err
		}
	}
}
func ( n * Node ) UnmarshalJSON ( b [ ] byte ) error { dec := json . NewDecoder ( bytes . NewReader ( b ) ) dec . UseNumber ( ) if t , err := dec . Token ( ) ; err != nil { return err } else if t != json . Delim ( '{' ) { return fmt . Errorf ( " " , t ) } n . Values = map [ string ] Value { } for { if key , err := dec . Token ( ) ; err != nil { return err } else if key == json . Delim ( '}' ) { return nil } else if keyStr , ok := key . ( string ) ; ! ok { return fmt . Errorf ( " " , key ) } else if keyStr == " " { if err = dec . Decode ( & n . Metadata ) ; err != nil { return fmt . Errorf ( " " , err ) } } else if val , err := dec . Token ( ) ; err != nil { return err } else if n . Values [ keyStr ] , err = ValueDecodeJSON ( val , dec ) ; err != nil { return err } } }
UnmarshalJSON implements encoding/json.Unmarshaler for Node.
UnmarshalJSON implements encoding / json . Unmarshaler for Node .
// We'll just go from start brace to end brace