code: Expression result(CodeChunk.Generator codeGenerator) {
      Expression accessChain = buildAccessChain(base, codeGenerator, chain.iterator());
  
      if (unpackFunction == null) {
        return accessChain;
      } else {
        return accessType.unpackResult(accessChain, unpackFunction);
      }
    }
docs: Returns a code chunk representing the entire access chain. Null-safe accesses in the chain
  generate code to make sure the chain is non-null before performing the access.