code: func (n *NodePlannableResourceInstance) EvalTree() EvalNode {
  	addr := n.ResourceInstanceAddr()
  
  	// State still uses legacy-style internal ids, so we need to shim to get
  	// a suitable key to use.
  	stateId := NewLegacyResourceInstanceAddress(addr).stateId()
  
  	// Determine the dependencies for the state.
  	stateDeps := n.StateReferences()
  
  	// Eval info is different depending on what kind of resource this is
  	switch addr.Resource.Resource.Mode {
  	case addrs.ManagedResourceMode:
  		return n.evalTreeManagedResource(addr, stateId, stateDeps)
  	case addrs.DataResourceMode:
  		return n.evalTreeDataResource(addr, stateId, stateDeps)
  	default:
  		panic(fmt.Errorf("unsupported resource mode %s", n.Config.Mode))
  	}
  }
docs: // GraphNodeEvalable