code: func isNode(node interface{}) bool {
  	if node == nil {
  		return false
  	}
  	val := reflect.ValueOf(node)
  	if !val.IsValid() {
  		return false
  	}
  	switch val.Kind() {
  	case reflect.Map:
  		return true
  	case reflect.Ptr:
  		val = val.Elem()
  	}
  	_, ok := node.(ast.Node)
  	return ok
  }
docs: // notice: type: Named, List or NonNull maybe map type
  // and it can't be asserted to ast.Node