code: func (p *DataFrame) find(parts []string) interface{} {
  	data := p.data
  
  	for i, part := range parts {
  		val := data[part]
  		if val == nil {
  			return nil
  		}
  
  		if i == len(parts)-1 {
  			// found
  			return val
  		}
  
  		valValue := reflect.ValueOf(val)
  		if valValue.Kind() != reflect.Map {
  			// not found
  			return nil
  		}
  
  		// continue
  		data = mapStringInterface(valValue)
  	}
  
  	// not found
  	return nil
  }
docs: // find gets a deep data value
  //
  // @todo This is NOT consistent with the way we resolve data in template (cf. `evalDataPathExpression()`) ! FIX THAT !